From 71bd6a6f651667a5b932ca5e0234e7072ac83ce9 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 2 Jun 2020 15:36:35 -0700 Subject: [PATCH 01/20] Fixed xray dbutil rpm package. --- .../jfrog/ansible/roles/xray/tasks/RedHat.yml | 5 +- .../jfrog/ansible/roles/xray/tasks/main.yml | 7 +- Ansible/infra/aws/lb-rt-xray-ha-centos78.json | 769 ++++++++++++++++++ ...ay-ha.json => lb-rt-xray-ha-ubuntu16.json} | 0 Ansible/project/xray/hosts.yml | 17 + Ansible/project/xray/playbook.yml | 4 + 6 files changed, 799 insertions(+), 3 deletions(-) create mode 100644 Ansible/infra/aws/lb-rt-xray-ha-centos78.json rename Ansible/infra/aws/{lb-rt-xray-ha.json => lb-rt-xray-ha-ubuntu16.json} (100%) create mode 100644 Ansible/project/xray/hosts.yml create mode 100644 Ansible/project/xray/playbook.yml diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tasks/RedHat.yml b/Ansible/collection/jfrog/ansible/roles/xray/tasks/RedHat.yml index 8d24eb7..14ac703 100644 --- a/Ansible/collection/jfrog/ansible/roles/xray/tasks/RedHat.yml +++ b/Ansible/collection/jfrog/ansible/roles/xray/tasks/RedHat.yml @@ -1,16 +1,19 @@ --- - name: Install db-utl yum: - name: "{{ xray_home }}/app/third-party/misc/db4-utils-4.7.25-20.el6_7.x86_64.rpm" + name: "{{ xray_home }}/app/third-party/misc/libdb-utils-5.3.21-19.el7.x86_64.rpm" state: present + become: yes - name: Install socat yum: name: "{{ xray_home }}/app/third-party/rabbitmq/socat-1.7.3.2-2.el7.x86_64.rpm" state: present + become: yes - name: Install erlang yum: name: "{{ xray_home }}/app/third-party/rabbitmq/erlang-21.1.4-1.el7.centos.x86_64.rpm" state: present + become: yes diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml index 16810f6..fd879fe 100644 --- a/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml @@ -31,9 +31,12 @@ until: downloadxray is succeeded retries: 3 -- name: perform prerequisite installation +- debug: + msg: "Running dependency installation for {{ ansible_os_family }}" + +- name: perform dependency installation include_tasks: "{{ ansible_os_family }}.yml" - + - name: ensure etc exists file: path: "{{ xray_home }}/var/etc" diff --git a/Ansible/infra/aws/lb-rt-xray-ha-centos78.json b/Ansible/infra/aws/lb-rt-xray-ha-centos78.json new file mode 100644 index 0000000..73859a8 --- /dev/null +++ b/Ansible/infra/aws/lb-rt-xray-ha-centos78.json @@ -0,0 +1,769 @@ +{ + "Description": "This template deploys a VPC, with a pair of public and private subnets spread across two Availability Zones. It deploys an internet gateway, with a default route on the public subnets. It deploys a pair of NAT gateways (one in each AZ), and default routes for them in the private subnets.", + "Parameters": { + "SSHKeyName": { + "Description": "Name of the ec2 key you need one to use this template", + "Type": "AWS::EC2::KeyPair::KeyName", + "Default": "choose-key" + }, + "EnvironmentName": { + "Description": "An environment name that is prefixed to resource names", + "Type": "String", + "Default": "Ansible" + }, + "VpcCIDR": { + "Description": "Please enter the IP range (CIDR notation) for this VPC", + "Type": "String", + "Default": "10.192.0.0/16" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + } + }, + "Mappings": { + "RegionToAmazonAMI": { + "us-east-1": { + "HVM64": "ami-02e98f78" + }, + "us-east-2": { + "HVM64": "ami-01e36b7901e884a10" + }, + "us-west-1": { + "HVM64": "ami-074e2d6769f445be5" + }, + "us-west-2": { + "HVM64": "ami-01ed306a12b7d1c96" + } + } + }, + "Resources": { + "VPC": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": { + "Ref": "VpcCIDR" + }, + "EnableDnsSupport": true, + "EnableDnsHostnames": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + } + }, + "InternetGateway": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": { + "Ref": "EnvironmentName" + } + } + ] + } + }, + "InternetGatewayAttachment": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "InternetGatewayId": { + "Ref": "InternetGateway" + }, + "VpcId": { + "Ref": "VPC" + } + } + }, + "PublicSubnet1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": { + "Ref": "PublicSubnet1CIDR" + }, + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ1)" + } + } + ] + } + }, + "PublicSubnet2": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": { + "Ref": "PublicSubnet2CIDR" + }, + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Subnet (AZ2)" + } + } + ] + } + }, + "PrivateSubnet1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 0, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": { + "Ref": "PrivateSubnet1CIDR" + }, + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ1)" + } + } + ] + } + }, + "PrivateSubnet2": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "AvailabilityZone": { + "Fn::Select": [ + 1, + { + "Fn::GetAZs": "" + } + ] + }, + "CidrBlock": { + "Ref": "PrivateSubnet2CIDR" + }, + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Subnet (AZ2)" + } + } + ] + } + }, + "NatGateway1EIP": { + "Type": "AWS::EC2::EIP", + "DependsOn": "InternetGatewayAttachment", + "Properties": { + "Domain": "vpc" + } + }, + "NatGateway2EIP": { + "Type": "AWS::EC2::EIP", + "DependsOn": "InternetGatewayAttachment", + "Properties": { + "Domain": "vpc" + } + }, + "NatGateway1": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "NatGateway1EIP", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "PublicSubnet1" + } + } + }, + "NatGateway2": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "NatGateway2EIP", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "PublicSubnet2" + } + } + }, + "PublicRouteTable": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Public Routes" + } + } + ] + } + }, + "DefaultPublicRoute": { + "Type": "AWS::EC2::Route", + "DependsOn": "InternetGatewayAttachment", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "InternetGateway" + } + } + }, + "PublicSubnet1RouteTableAssociation": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet1" + } + } + }, + "PublicSubnet2RouteTableAssociation": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PublicRouteTable" + }, + "SubnetId": { + "Ref": "PublicSubnet2" + } + } + }, + "PrivateRouteTable1": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ1)" + } + } + ] + } + }, + "DefaultPrivateRoute1": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "NatGateway1" + } + } + }, + "PrivateSubnet1RouteTableAssociation": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable1" + }, + "SubnetId": { + "Ref": "PrivateSubnet1" + } + } + }, + "PrivateRouteTable2": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": { + "Fn::Sub": "${EnvironmentName} Private Routes (AZ2)" + } + } + ] + } + }, + "DefaultPrivateRoute2": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "NatGateway2" + } + } + }, + "PrivateSubnet2RouteTableAssociation": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "PrivateRouteTable2" + }, + "SubnetId": { + "Ref": "PrivateSubnet2" + } + } + }, + "EC2SecurityGroup": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "SSH, Port 80, Database", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 22, + "ToPort": 22, + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": 5432, + "ToPort": 5432, + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": 8082, + "ToPort": 8082, + "CidrIp": "0.0.0.0/0" + }, + { + "IpProtocol": "tcp", + "FromPort": 80, + "ToPort": 80, + "SourceSecurityGroupId": { + "Ref": "ELBSecurityGroup" + } + } + ] + } + }, + "ELBSecurityGroup": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "SSH and Port 80", + "VpcId": { + "Ref": "VPC" + }, + "SecurityGroupIngress": [ + { + "IpProtocol": "tcp", + "FromPort": 80, + "ToPort": 80, + "CidrIp": "0.0.0.0/0" + } + ] + } + }, + "BastionInstance": { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionToAmazonAMI", + { + "Ref": "AWS::Region" + }, + "HVM64" + ] + }, + "InstanceInitiatedShutdownBehavior": "stop", + "InstanceType": "t2.medium", + "KeyName": { + "Ref": "SSHKeyName" + }, + "Monitoring": "true", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": "true", + "DeviceIndex": "0", + "GroupSet": [ + { + "Ref": "EC2SecurityGroup" + } + ], + "SubnetId": { + "Ref": "PublicSubnet1" + } + } + ], + "Tags": [ + { + "Key": "Name", + "Value": "bastion" + } + ], + "Tenancy": "default" + } + }, + "RTPriInstance": { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionToAmazonAMI", + { + "Ref": "AWS::Region" + }, + "HVM64" + ] + }, + "InstanceInitiatedShutdownBehavior": "stop", + "InstanceType": "t2.medium", + "KeyName": { + "Ref": "SSHKeyName" + }, + "Monitoring": "true", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": "false", + "DeviceIndex": "0", + "GroupSet": [ + { + "Ref": "EC2SecurityGroup" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + } + } + ], + "Tags": [ + { + "Key": "Name", + "Value": "rtprimary" + } + ], + "Tenancy": "default" + } + }, + "RTSecInstance": { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionToAmazonAMI", + { + "Ref": "AWS::Region" + }, + "HVM64" + ] + }, + "InstanceInitiatedShutdownBehavior": "stop", + "InstanceType": "t2.medium", + "KeyName": { + "Ref": "SSHKeyName" + }, + "Monitoring": "true", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": "false", + "DeviceIndex": "0", + "GroupSet": [ + { + "Ref": "EC2SecurityGroup" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet2" + } + } + ], + "Tags": [ + { + "Key": "Name", + "Value": "rtsecondary" + } + ], + "Tenancy": "default" + } + }, + "XrayInstance": { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionToAmazonAMI", + { + "Ref": "AWS::Region" + }, + "HVM64" + ] + }, + "InstanceInitiatedShutdownBehavior": "stop", + "InstanceType": "t2.medium", + "KeyName": { + "Ref": "SSHKeyName" + }, + "Monitoring": "true", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": "false", + "DeviceIndex": "0", + "GroupSet": [ + { + "Ref": "EC2SecurityGroup" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + } + } + ], + "Tags": [ + { + "Key": "Name", + "Value": "xray" + } + ], + "Tenancy": "default" + } + }, + "DBInstance": { + "Type": "AWS::EC2::Instance", + "Properties": { + "ImageId": { + "Fn::FindInMap": [ + "RegionToAmazonAMI", + { + "Ref": "AWS::Region" + }, + "HVM64" + ] + }, + "InstanceInitiatedShutdownBehavior": "stop", + "InstanceType": "t2.medium", + "KeyName": { + "Ref": "SSHKeyName" + }, + "Monitoring": "true", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": "false", + "DeviceIndex": "0", + "GroupSet": [ + { + "Ref": "EC2SecurityGroup" + } + ], + "SubnetId": { + "Ref": "PrivateSubnet1" + } + } + ], + "Tags": [ + { + "Key": "Name", + "Value": "database" + } + ], + "Tenancy": "default" + } + }, + "EC2TargetGroup": { + "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", + "Properties": { + "HealthCheckIntervalSeconds": 30, + "HealthCheckProtocol": "HTTP", + "HealthCheckTimeoutSeconds": 15, + "HealthyThresholdCount": 2, + "Matcher": { + "HttpCode": "200,302" + }, + "Name": "EC2TargetGroup", + "Port": 80, + "Protocol": "HTTP", + "TargetGroupAttributes": [ + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "20" + } + ], + "Targets": [ + { + "Id": { + "Ref": "RTPriInstance" + } + }, + { + "Id": { + "Ref": "RTSecInstance" + }, + "Port": 80 + } + ], + "UnhealthyThresholdCount": 3, + "VpcId": { + "Ref": "VPC" + }, + "Tags": [ + { + "Key": "Name", + "Value": "EC2TargetGroup" + }, + { + "Key": "Port", + "Value": 80 + } + ] + } + }, + "ALBListener": { + "Type": "AWS::ElasticLoadBalancingV2::Listener", + "Properties": { + "DefaultActions": [ + { + "Type": "forward", + "TargetGroupArn": { + "Ref": "EC2TargetGroup" + } + } + ], + "LoadBalancerArn": { + "Ref": "ApplicationLoadBalancer" + }, + "Port": 80, + "Protocol": "HTTP" + } + }, + "ApplicationLoadBalancer": { + "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", + "Properties": { + "Scheme": "internet-facing", + "Subnets": [ + { + "Ref": "PublicSubnet1" + }, + { + "Ref": "PublicSubnet2" + } + ], + "SecurityGroups": [ + { + "Ref": "ELBSecurityGroup" + } + ] + } + } + }, + + "Outputs": { + "VPC": { + "Description": "Virtual Private Cloud", + "Value": { + "Ref": "VPC" + } + }, + "ALBHostName": { + "Description": "Application Load Balancer Hostname", + "Value": { + "Fn::GetAtt": [ + "ApplicationLoadBalancer", + "DNSName" + ] + } + }, + "BastionInstancePublic": { + "Description": "Bastion", + "Value": { "Fn::GetAtt" : [ "BastionInstance", "PublicIp" ]} + }, + "BastionInstancePrivate": { + "Description": "Bastion", + "Value": { "Fn::GetAtt" : [ "BastionInstance", "PrivateIp" ]} + }, + "RTPriInstancePrivate": { + "Description": "RTPriInstance", + "Value": { "Fn::GetAtt" : [ "RTPriInstance", "PrivateIp" ]} + }, + "RTSecInstancePrivate": { + "Description": "RTSecInstance", + "Value": { "Fn::GetAtt" : [ "RTSecInstance", "PrivateIp" ]} + }, + "XrayInstancePrivate": { + "Description": "XrayInstance", + "Value": { "Fn::GetAtt" : [ "XrayInstance", "PrivateIp" ]} + }, + "DBInstancePrivate": { + "Description": "DBInstance", + "Value": { "Fn::GetAtt" : [ "DBInstance", "PrivateIp" ]} + } + } +} \ No newline at end of file diff --git a/Ansible/infra/aws/lb-rt-xray-ha.json b/Ansible/infra/aws/lb-rt-xray-ha-ubuntu16.json similarity index 100% rename from Ansible/infra/aws/lb-rt-xray-ha.json rename to Ansible/infra/aws/lb-rt-xray-ha-ubuntu16.json diff --git a/Ansible/project/xray/hosts.yml b/Ansible/project/xray/hosts.yml new file mode 100644 index 0000000..6f70d9a --- /dev/null +++ b/Ansible/project/xray/hosts.yml @@ -0,0 +1,17 @@ +--- +all: + vars: + ansible_user: "centos" + children: + xray: + vars: + jfrog_url: http://ec2-18-210-33-94.compute-1.amazonaws.com + master_key: "c97b862469de0d94fbb7d48130637a5a" + join_key: "9bcca98f375c0728d907cc6ee39d4f02" + db_type: "postgresql" + db_driver: "org.postgresql.Driver" + db_url: "postgres://10.0.0.5:5432/xraydb?sslmode=disable" + db_user: "xray" + db_password: "xray" + hosts: + 3.17.132.222 diff --git a/Ansible/project/xray/playbook.yml b/Ansible/project/xray/playbook.yml new file mode 100644 index 0000000..1f19914 --- /dev/null +++ b/Ansible/project/xray/playbook.yml @@ -0,0 +1,4 @@ +--- +- hosts: xray + roles: + - xray \ No newline at end of file From 0ee82ab2901aabfbb24914f7112c5017d7692d14 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Thu, 11 Jun 2020 19:56:13 -0700 Subject: [PATCH 02/20] Updated READMEs. Fixed Centos nginx install. Changed directory structure. --- Ansible/README.md | 50 +++++++-- Ansible/collection/README.md | 87 --------------- Ansible/collection/jfrog/ansible/README.md | 105 ++++++++++++++++++ .../roles/artifactory-nginx/tasks/Debian.yml | 3 + .../roles/artifactory-nginx/tasks/RedHat.yml | 7 ++ .../roles/artifactory-nginx/tasks/main.yml | 3 + .../host_vars}/rt-ha/hosts.yml | 1 + .../host_vars}/rt-xray-ha/hosts.yml | 2 + .../host_vars}/rt-xray/hosts.yml | 2 + .../host_vars}/rt/hosts.yml | 1 + .../host_vars}/ssl/hosts.yml | 1 + .../host_vars}/xray/hosts.yml | 1 + .../playbook-rt-ha.yml} | 5 +- .../playbook-rt-xray.yml} | 0 .../playbook.yml => examples/playbook-rt.yml} | 0 .../playbook-ssl.yml} | 0 .../playbook-xray.yml} | 0 Ansible/pipelines.yaml | 4 + Ansible/project/rt-ha/playbook.yml | 11 -- Ansible/project/rt-xray-auto-keys/hosts.yml | 40 ------- .../project/rt-xray-auto-keys/playbook.yml | 18 --- .../rt-xray-auto-keys/runAutoKeysPlaybook.sh | 3 - .../project/rt-xray-ha-ssh-proxy/hosts.yml | 60 ---------- Ansible/project/rt-xray-ha/playbook.yml | 12 -- Ansible/project/rt/runPlaybook.sh | 3 - Ansible/test/aws/playbook.yaml | 3 + Ansible/test/azure/playbook.yaml | 3 + 27 files changed, 178 insertions(+), 247 deletions(-) delete mode 100644 Ansible/collection/README.md create mode 100644 Ansible/collection/jfrog/ansible/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/Debian.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml rename Ansible/{project => examples/host_vars}/rt-ha/hosts.yml (97%) rename Ansible/{project => examples/host_vars}/rt-xray-ha/hosts.yml (96%) rename Ansible/{project => examples/host_vars}/rt-xray/hosts.yml (95%) rename Ansible/{project => examples/host_vars}/rt/hosts.yml (95%) rename Ansible/{project => examples/host_vars}/ssl/hosts.yml (97%) rename Ansible/{project => examples/host_vars}/xray/hosts.yml (94%) rename Ansible/{project/rt-xray-ha-ssh-proxy/playbook.yml => examples/playbook-rt-ha.yml} (74%) rename Ansible/{project/rt-xray/playbook.yml => examples/playbook-rt-xray.yml} (100%) rename Ansible/{project/rt/playbook.yml => examples/playbook-rt.yml} (100%) rename Ansible/{project/ssl/playbook.yml => examples/playbook-ssl.yml} (100%) rename Ansible/{project/xray/playbook.yml => examples/playbook-xray.yml} (100%) delete mode 100644 Ansible/project/rt-ha/playbook.yml delete mode 100644 Ansible/project/rt-xray-auto-keys/hosts.yml delete mode 100644 Ansible/project/rt-xray-auto-keys/playbook.yml delete mode 100755 Ansible/project/rt-xray-auto-keys/runAutoKeysPlaybook.sh delete mode 100644 Ansible/project/rt-xray-ha-ssh-proxy/hosts.yml delete mode 100644 Ansible/project/rt-xray-ha/playbook.yml delete mode 100755 Ansible/project/rt/runPlaybook.sh diff --git a/Ansible/README.md b/Ansible/README.md index ec8c616..7903b00 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -3,8 +3,8 @@ This Ansible directory consists of the following directories that support the JFrog Ansible collection. * [collection directory](collection) - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection [README](collection/README.md) for details on the available roles and variables. + * [examples directory](examples) - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups. * [infra directory](infra) - This directory contains example infrastructure templates that can be used for testing and as example deployments. - * [project directory](project) - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups. * [test directory](test) - This directory contains Gradle tests that can be used to verify a deployment. It also has Ansible playbooks for creating infrastructure, provisioning software and testing with Gradle. ## Getting Started @@ -17,19 +17,51 @@ collections_paths = ~/.ansible/collections:/usr/share/ansible/collections:collec # Installs roles into [current dir]/roles/namespace.rolename roles_path = Ansible/collection/jfrog/ansible/roles ``` - 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. If you are using a bastion host, you can add the following Ansible variable to allow proxying through the bastion host. - ``` - ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A user@host -W %h:%p"' + 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. - eg. - ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' - ``` - 3. Create your inventory file. Use one of the examples from the [project directory](project) to construct an inventory file (hosts.yml) with the host addresses and variables. + 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. - 4. Create your playbook. Use one of the examples from the [project directory](project) to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software. + 4. Create your playbook. Use one of the examples from the [examples directory](examples) to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software. 5. Then execute with the following command to provision the JFrog software with Ansible. Variables can also be passed in at the command-line. ``` ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" +``` + +## Autogenerating Master and Join Keys +You may want to auto-generate your master amd join keys and apply it to all the nodes. + +``` +ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" +``` + +## Using [Ansible Vault](https://docs.ansible.com/ansible/latest/user_guide/vault.html) to Encrypt Vars +Some vars you may want to keep secret. You may put these vars into a separate file and encrypt them using [Ansible Vault](https://docs.ansible.com/ansible/latest/user_guide/vault.html). + +``` +ansible-vault encrypt secret-vars.yml --vault-password-file ~/.vault_pass.txt +``` + +then in your playbook include the secret vars file. + +``` +- hosts: primary + + vars_files: + - ./vars/secret-vars.yml + - ./vars/vars.yml + + roles: + - artifactory +``` + +## Bastion Hosts +In many cases, you may want to run this Ansible collection through a Bastion host to provision JFrog servers. You can include the following Var for a host or group of hosts: + +``` +ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A user@host -W %h:%p"' + +eg. +ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' ``` \ No newline at end of file diff --git a/Ansible/collection/README.md b/Ansible/collection/README.md deleted file mode 100644 index 1913bd9..0000000 --- a/Ansible/collection/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# Ansible -This repo contains the Ansible collection for JFrog roles. These roles allow you to provision Artifactory for High-Availability using a Primary node and multiple Secondary nodes. Additionally, a Postgresql role is provided for installing an Artifactory Postgresql database. - -## Roles Provided -### artifactory -The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory-nginx to install nginx. - -### artifactory-nginx-ssl -The artifactory-nginx-ssl role installs and configures nginx for SSL. - -### postgres -The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. - -### xray -The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required. - -## Vars Required -The following Vars must be configured. - -### databsase vars -* db_users: This is a list of database users to create. eg. db_users: - { db_user: "artifactory", db_password: "Art1fAct0ry" } -* dbs: This is the database to create. eg. dbs: - { db_name: "artifactory", db_owner: "artifactory" } - -### artifactory vars -* artifactory_version: The version of Artifactory to install. eg. "7.4.1" -* master_key: This is the Artifactory Master Key. -* join_key: This is the Artifactory Join Key. -* db_download_url: This is the download URL for the JDBC driver for your database. eg. "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" -* db_type: This is the database type. eg. "postgresql" -* db_driver: This is the JDBC driver class. eg. "org.postgresql.Driver" -* db_url: This is the JDBC database url. eg. "jdbc:postgresql://10.0.0.120:5432/artifactory" -* db_user: The database user to configure. eg. "artifactory" -* db_password: The database password to configure. "Art1fact0ry" -* server_name: This is the server name. eg. "artifactory.54.175.51.178.xip.io" -* system_file: Your own system YAML file can be specified and used. If specified, this file will be used rather than constructing a file from the parameters above. -* binary_store_file: Your own binary store file can be used. If specified, the default cluster-file-system will not be used. - -### primary vars -* artifactory_is_primary: For the primary node this must be set to **true**. -* artifactory_license1 - 5: These are the cluster licenses. -* artifactory_license_file: Your own license file can be used. If specified, a license file constructed from the licenses above will not be used. - -### secondary vars -* artifactory_is_primary: For the secondary node(s) this must be set to **false**. - -### ssl vars (Used with artifactory-nginx-ssl role) -* certificate: This is the SSL cert. -* certificate_key: This is the SSL private key. - -### xray vars -* xray_version: The version of Artifactory to install. eg. "3.3.0" -* jfrog_url: This is the URL to the Artifactory base URL. eg. "http://ec2-54-237-207-135.compute-1.amazonaws.com" -* master_key: This is the Artifactory Master Key. -* join_key: This is the Artifactory Join Key. -* db_type: This is the database type. eg. "postgresql" -* db_driver: This is the JDBC driver class. eg. "org.postgresql.Driver" -* db_url: This is the database url. eg. "postgres://10.0.0.59:5432/xraydb?sslmode=disable" -* db_user: The database user to configure. eg. "xray" -* db_password: The database password to configure. "xray" - -## Example Inventory and Playbooks -Example playbooks are located in the [project](../project) directory. This directory contains several example inventory and plaaybooks for different Artifactory, HA and Xray architectures. - -## Executing a Playbook -``` -ansible-playbook -i - -eg. - ansible-playbook -i example-playbooks/rt-xray-ha/hosts.yml example-playbooks/rt-xray-ha/playbook.yml -``` - -## Autogenerating Master and Join Keys -You may want to auto-generate your master amd join keys and apply it to all the nodes. - -``` -ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" -``` - -## Bastion Hosts -In many cases, you may want to run this Ansible collection through a Bastion host to provision JFrog servers. You can include the following Var for a host or group of hosts: - -``` -ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A user@host -W %h:%p"' - -eg. -ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' -``` \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/README.md b/Ansible/collection/jfrog/ansible/README.md new file mode 100644 index 0000000..2dc13bd --- /dev/null +++ b/Ansible/collection/jfrog/ansible/README.md @@ -0,0 +1,105 @@ +# Ansible +This repo contains the Ansible collection for JFrog roles. These roles allow you to provision Artifactory for High-Availability using a Primary node and multiple Secondary nodes. Additionally, a Postgresql role is provided for installing an Artifactory Postgresql database. + +## Roles Provided +### artifactory +The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory-nginx to install nginx. + +### artifactory-nginx-ssl +The artifactory-nginx-ssl role installs and configures nginx for SSL. + +### postgres +The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. + +### xray +The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required. + +## Vars Required +The following Vars must be configured. + +### databsase vars +* _db_users_: This is a list of database users to create. eg. db_users: - { db_user: "artifactory", db_password: "Art1fAct0ry" } +* _dbs_: This is the database to create. eg. dbs: - { db_name: "artifactory", db_owner: "artifactory" } + +### artifactory vars +* _artifactory_version_: The version of Artifactory to install. eg. "7.4.1" +* _master_key_: This is the Artifactory [Master Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _join_key_: This is the Artifactory [Join Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _db_download_url_: This is the download URL for the JDBC driver for your database. eg. "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" +* _db_type_: This is the database type. eg. "postgresql" +* _db_driver_: This is the JDBC driver class. eg. "org.postgresql.Driver" +* _db_url_: This is the JDBC database url. eg. "jdbc:postgresql://10.0.0.120:5432/artifactory" +* _db_user_: The database user to configure. eg. "artifactory" +* _db_password_: The database password to configure. "Art1fact0ry" +* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" +* _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. **If specified, this file will be used rather than constructing a file from the parameters above.** +* _binary_store_file_: Your own [binary store file](https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore) can be used. If specified, the default cluster-file-system will not be used. + +### primary vars +* _artifactory_is_primary_: For the primary node this must be set to **true**. +* _artifactory_license1 - 5_: These are the cluster licenses. +* _artifactory_license_file_: Your own license file can be used. **If specified, a license file constructed from the licenses above will not be used.** + +### secondary vars +* _artifactory_is_primary_: For the secondary node(s) this must be set to **false**. + +### ssl vars (Used with artifactory-nginx-ssl role) +* _certificate_: This is the SSL cert. +* _certificate_key_: This is the SSL private key. + +### xray vars +* _xray_version_: The version of Artifactory to install. eg. "3.3.0" +* _jfrog_url_: This is the URL to the Artifactory base URL. eg. "http://ec2-54-237-207-135.compute-1.amazonaws.com" +* _master_key_: This is the Artifactory [Master Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _join_key_: This is the Artifactory [Join Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _db_type_: This is the database type. eg. "postgresql" +* _db_driver_: This is the JDBC driver class. eg. "org.postgresql.Driver" +* _db_url_: This is the database url. eg. "postgres://10.0.0.59:5432/xraydb?sslmode=disable" +* _db_user_: The database user to configure. eg. "xray" +* _db_password_: The database password to configure. "xray" +* _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. If specified, this file will be used rather than constructing a file from the parameters above. + +## Example Inventory and Playbooks +Example playbooks are located in the [examples](../examples) directory. This directory contains several example inventory and playbooks for different Artifactory, HA and Xray architectures. + +## Executing a Playbook +``` +ansible-playbook -i +``` + +## Autogenerating Master and Join Keys +You may want to auto-generate your master amd join keys and apply it to all the nodes. + +``` +ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" +``` + +## Using [Ansible Vault](https://docs.ansible.com/ansible/latest/user_guide/vault.html) to Encrypt Vars +Some vars you may want to keep secret. You may put these vars into a separate file and encrypt them using [Ansible Vault](https://docs.ansible.com/ansible/latest/user_guide/vault.html). + +``` +ansible-vault encrypt secret-vars.yml --vault-password-file ~/.vault_pass.txt +``` + +then in your playbook include the secret vars file. + +``` +- hosts: primary + + vars_files: + - ./vars/secret-vars.yml + - ./vars/vars.yml + + roles: + - artifactory +``` + +## Bastion Hosts +In many cases, you may want to run this Ansible collection through a Bastion host to provision JFrog servers. You can include the following Var for a host or group of hosts: + +``` +ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A user@host -W %h:%p"' + +eg. +ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' +``` \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/Debian.yml b/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/Debian.yml new file mode 100644 index 0000000..83a3149 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/Debian.yml @@ -0,0 +1,3 @@ +--- +# No dependencies for Debian + diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml b/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml new file mode 100644 index 0000000..707c10d --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml @@ -0,0 +1,7 @@ +--- +- name: epel-release + yum: + name: epel-release + state: present + become: yes + diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml index 5146b14..d3c27c2 100644 --- a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml @@ -1,4 +1,7 @@ --- +- name: perform dependency installation + include_tasks: "{{ ansible_os_family }}.yml" + - name: install nginx package: name: nginx diff --git a/Ansible/project/rt-ha/hosts.yml b/Ansible/examples/host_vars/rt-ha/hosts.yml similarity index 97% rename from Ansible/project/rt-ha/hosts.yml rename to Ansible/examples/host_vars/rt-ha/hosts.yml index 6246c53..66a6be5 100644 --- a/Ansible/project/rt-ha/hosts.yml +++ b/Ansible/examples/host_vars/rt-ha/hosts.yml @@ -14,6 +14,7 @@ all: - { db_name: "artifactory", db_owner: "artifactory" } artifactory: vars: + artifactory_version: 7.4.1 artifactory_ha_enabled: true master_key: "c97b862469de0d94fbb7d48130637a5a" join_key: "9bcca98f375c0728d907cc6ee39d4f02" diff --git a/Ansible/project/rt-xray-ha/hosts.yml b/Ansible/examples/host_vars/rt-xray-ha/hosts.yml similarity index 96% rename from Ansible/project/rt-xray-ha/hosts.yml rename to Ansible/examples/host_vars/rt-xray-ha/hosts.yml index 0a79555..796305c 100644 --- a/Ansible/project/rt-xray-ha/hosts.yml +++ b/Ansible/examples/host_vars/rt-xray-ha/hosts.yml @@ -20,6 +20,7 @@ all: - { db_user: "xray", db_password: "xray" } artifactory: vars: + artifactory_version: 7.4.1 artifactory_ha_enabled: true master_key: "c97b862469de0d94fbb7d48130637a5a" join_key: "9bcca98f375c0728d907cc6ee39d4f02" @@ -42,6 +43,7 @@ all: artifactory_license5: x xray: vars: + xray_version: 3.3.0 jfrog_url: http://ec2-18-210-33-94.compute-1.amazonaws.com master_key: "c97b862469de0d94fbb7d48130637a5a" join_key: "9bcca98f375c0728d907cc6ee39d4f02" diff --git a/Ansible/project/rt-xray/hosts.yml b/Ansible/examples/host_vars/rt-xray/hosts.yml similarity index 95% rename from Ansible/project/rt-xray/hosts.yml rename to Ansible/examples/host_vars/rt-xray/hosts.yml index c553954..3fac82c 100644 --- a/Ansible/project/rt-xray/hosts.yml +++ b/Ansible/examples/host_vars/rt-xray/hosts.yml @@ -16,6 +16,7 @@ all: artifactory: hosts: 54.237.207.135: + artifactory_version: 7.4.1 artifactory_license1: x artifactory_license2: x artifactory_license3: x @@ -33,6 +34,7 @@ all: xray: hosts: 100.25.104.174: + xray_version: 3.3.0 jfrog_url: "http://ec2-54-237-207-135.compute-1.amazonaws.com" master_key: "c97b862469de0d94fbb7d48130637a5a" join_key: "9bcca98f375c0728d907cc6ee39d4f02" diff --git a/Ansible/project/rt/hosts.yml b/Ansible/examples/host_vars/rt/hosts.yml similarity index 95% rename from Ansible/project/rt/hosts.yml rename to Ansible/examples/host_vars/rt/hosts.yml index 42dab9b..f030ff6 100644 --- a/Ansible/project/rt/hosts.yml +++ b/Ansible/examples/host_vars/rt/hosts.yml @@ -13,6 +13,7 @@ all: primary: hosts: 54.165.47.191: + artifactory_version: 7.4.1 artifactory_is_primary: true artifactory_license_file: "{{ lookup('env', 'artifactory_license_file') }}" db_download_url: "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" diff --git a/Ansible/project/ssl/hosts.yml b/Ansible/examples/host_vars/ssl/hosts.yml similarity index 97% rename from Ansible/project/ssl/hosts.yml rename to Ansible/examples/host_vars/ssl/hosts.yml index c6c8f9f..c51aa1b 100644 --- a/Ansible/project/ssl/hosts.yml +++ b/Ansible/examples/host_vars/ssl/hosts.yml @@ -14,6 +14,7 @@ all: primary: hosts: 100.25.104.198: + artifactory_version: 7.4.1 artifactory_is_primary: true artifactory_license1: x artifactory_license2: x diff --git a/Ansible/project/xray/hosts.yml b/Ansible/examples/host_vars/xray/hosts.yml similarity index 94% rename from Ansible/project/xray/hosts.yml rename to Ansible/examples/host_vars/xray/hosts.yml index 6f70d9a..a4acffc 100644 --- a/Ansible/project/xray/hosts.yml +++ b/Ansible/examples/host_vars/xray/hosts.yml @@ -5,6 +5,7 @@ all: children: xray: vars: + xray_version: 3.3.0 jfrog_url: http://ec2-18-210-33-94.compute-1.amazonaws.com master_key: "c97b862469de0d94fbb7d48130637a5a" join_key: "9bcca98f375c0728d907cc6ee39d4f02" diff --git a/Ansible/project/rt-xray-ha-ssh-proxy/playbook.yml b/Ansible/examples/playbook-rt-ha.yml similarity index 74% rename from Ansible/project/rt-xray-ha-ssh-proxy/playbook.yml rename to Ansible/examples/playbook-rt-ha.yml index 825fe0b..73c4791 100644 --- a/Ansible/project/rt-xray-ha-ssh-proxy/playbook.yml +++ b/Ansible/examples/playbook-rt-ha.yml @@ -6,7 +6,4 @@ - hosts: primary:secondary roles: - artifactory - -- hosts: xray - roles: - - xray \ No newline at end of file + - artifactory-nginx-ssl \ No newline at end of file diff --git a/Ansible/project/rt-xray/playbook.yml b/Ansible/examples/playbook-rt-xray.yml similarity index 100% rename from Ansible/project/rt-xray/playbook.yml rename to Ansible/examples/playbook-rt-xray.yml diff --git a/Ansible/project/rt/playbook.yml b/Ansible/examples/playbook-rt.yml similarity index 100% rename from Ansible/project/rt/playbook.yml rename to Ansible/examples/playbook-rt.yml diff --git a/Ansible/project/ssl/playbook.yml b/Ansible/examples/playbook-ssl.yml similarity index 100% rename from Ansible/project/ssl/playbook.yml rename to Ansible/examples/playbook-ssl.yml diff --git a/Ansible/project/xray/playbook.yml b/Ansible/examples/playbook-xray.yml similarity index 100% rename from Ansible/project/xray/playbook.yml rename to Ansible/examples/playbook-xray.yml diff --git a/Ansible/pipelines.yaml b/Ansible/pipelines.yaml index 3fd14a5..7c0f343 100644 --- a/Ansible/pipelines.yaml +++ b/Ansible/pipelines.yaml @@ -36,6 +36,8 @@ pipelines: - sudo pip install boto3 botocore - cd ../dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' + - export artifactory_version="$int_ansibleEnvVars_artifactory_version" + - export xray_version="$int_ansibleEnvVars_xray_version" - export artifactory_license1="$int_ansibleEnvVars_artifactory_license1" - export artifactory_license2="$int_ansibleEnvVars_artifactory_license2" - export artifactory_license3="$int_ansibleEnvVars_artifactory_license3" @@ -82,6 +84,8 @@ pipelines: - sudo pip install ansible[azure] - cd ../dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' + - export artifactory_version="$int_ansibleEnvVars_artifactory_version" + - export xray_version="$int_ansibleEnvVars_xray_version" - export artifactory_license1="$int_ansibleEnvVars_artifactory_license1" - export artifactory_license2="$int_ansibleEnvVars_artifactory_license2" - export artifactory_license3="$int_ansibleEnvVars_artifactory_license3" diff --git a/Ansible/project/rt-ha/playbook.yml b/Ansible/project/rt-ha/playbook.yml deleted file mode 100644 index ae9639e..0000000 --- a/Ansible/project/rt-ha/playbook.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- -- hosts: database - gather_facts: true - roles: - - jfrog/ansible/roles/postgres - -- hosts: primary:secondary - gather_facts: true - roles: - - jfrog/ansible/roles/artifactory - - jfrog/ansible/roles/artifactory-nginx-ssl \ No newline at end of file diff --git a/Ansible/project/rt-xray-auto-keys/hosts.yml b/Ansible/project/rt-xray-auto-keys/hosts.yml deleted file mode 100644 index 76babec..0000000 --- a/Ansible/project/rt-xray-auto-keys/hosts.yml +++ /dev/null @@ -1,40 +0,0 @@ ---- -all: - vars: - ansible_user: "ubuntu" - ansible_ssh_private_key_file: "/Users/jefff/.ssh/ansible-priv.pem" - ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@13.82.225.20 -W %h:%p"' - children: - database: - hosts: - 34.239.107.0: - dbs: - - { db_name: "artifactory", db_owner: "artifactory" } - - { db_name: "xraydb", db_owner: "xray" } - db_users: - - { db_user: "artifactory", db_password: "Art1fAct0ry" } - - { db_user: "xray", db_password: "xray" } - artifactory: - hosts: - 54.237.207.135: - artifactory_license1: x - artifactory_license2: x - artifactory_license3: x - artifactory_license4: x - artifactory_license5: x - db_download_url: "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" - db_type: "postgresql" - db_driver: "org.postgresql.Driver" - db_url: "jdbc:postgresql://10.0.0.59:5432/artifactory" - db_user: "artifactory" - db_password: "Art1fAct0ry" - server_name: "ec2-54-237-207-135.compute-1.amazonaws.com" - xray: - hosts: - 100.25.104.174: - jfrog_url: "http://ec2-54-237-207-135.compute-1.amazonaws.com" - db_type: "postgresql" - db_driver: "org.postgresql.Driver" - db_url: "postgres://10.0.0.59:5432/xraydb?sslmode=disable" - db_user: "xray" - db_password: "xray" diff --git a/Ansible/project/rt-xray-auto-keys/playbook.yml b/Ansible/project/rt-xray-auto-keys/playbook.yml deleted file mode 100644 index 2e99018..0000000 --- a/Ansible/project/rt-xray-auto-keys/playbook.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- debug: - var: master_key - -- debug: - var: join_key - -- hosts: database - roles: - - postgres - -- hosts: artifactory - roles: - - artifactory - -- hosts: xray - roles: - - xray \ No newline at end of file diff --git a/Ansible/project/rt-xray-auto-keys/runAutoKeysPlaybook.sh b/Ansible/project/rt-xray-auto-keys/runAutoKeysPlaybook.sh deleted file mode 100755 index 0949cb0..0000000 --- a/Ansible/project/rt-xray-auto-keys/runAutoKeysPlaybook.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" \ No newline at end of file diff --git a/Ansible/project/rt-xray-ha-ssh-proxy/hosts.yml b/Ansible/project/rt-xray-ha-ssh-proxy/hosts.yml deleted file mode 100644 index 8651299..0000000 --- a/Ansible/project/rt-xray-ha-ssh-proxy/hosts.yml +++ /dev/null @@ -1,60 +0,0 @@ ---- -all: - vars: - ansible_user: "ubuntu" - ansible_ssh_private_key_file: "/Users/jefff/.ssh/ansible-priv.pem" - ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@13.82.225.20 -W %h:%p"' - children: - database: - hosts: - #artifactory database - 10.0.0.6: - db_users: - - { db_user: "artifactory", db_password: "Art1fAct0ry" } - dbs: - - { db_name: "artifactory", db_owner: "artifactory" } - #xray database - 10.0.0.4: - dbs: - - { db_name: "xraydb", db_owner: "xray" } - db_users: - - { db_user: "xray", db_password: "xray" } - artifactory: - vars: - artifactory_ha_enabled: true - master_key: "c97b862469de0d94fbb7d48130637a5a" - join_key: "9bcca98f375c0728d907cc6ee39d4f02" - db_download_url: "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" - db_type: "postgresql" - db_driver: "org.postgresql.Driver" - db_url: "jdbc:postgresql://10.0.0.6:5432/artifactory" - db_user: "artifactory" - db_password: "Art1fAct0ry" - server_name: "rt.13.82.225.208.xip.io" - children: - primary: - hosts: - 10.0.0.8: - artifactory_is_primary: true - artifactory_license1: x - artifactory_license2: x - artifactory_license3: x - artifactory_license4: x - artifactory_license5: x - secondary: - hosts: - 10.0.0.9: - vars: - artifactory_is_primary: false - xray: - vars: - jfrog_url: http://rt.13.82.225.208.xip.io/ - master_key: "c97b862469de0d94fbb7d48130637a5a" - join_key: "9bcca98f375c0728d907cc6ee39d4f02" - db_type: "postgresql" - db_driver: "org.postgresql.Driver" - db_url: "postgres://10.0.0.4:5432/xraydb?sslmode=disable" - db_user: "xray" - db_password: "xray" - hosts: - 10.0.0.5: diff --git a/Ansible/project/rt-xray-ha/playbook.yml b/Ansible/project/rt-xray-ha/playbook.yml deleted file mode 100644 index b25f3af..0000000 --- a/Ansible/project/rt-xray-ha/playbook.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- hosts: database - roles: - - postgres - -- hosts: primary - roles: - - artifactory - -- hosts: xray - roles: - - xray \ No newline at end of file diff --git a/Ansible/project/rt/runPlaybook.sh b/Ansible/project/rt/runPlaybook.sh deleted file mode 100755 index 1c5d200..0000000 --- a/Ansible/project/rt/runPlaybook.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -ansible-playbook -i Ansible/project/rt/hosts.yml Ansible/project/rt/playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" \ No newline at end of file diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index fafe557..a859072 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -33,6 +33,7 @@ hostname: "{{ AWSDeployment.stack_outputs.RTPriInstancePrivate }}" ansible_user: "ubuntu" ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ AWSDeployment.stack_outputs.BastionInstancePublic }} -W %h:%p"' + artifactory_version: "{{ lookup('env', 'artifactory_version') }}" db_url: "jdbc:postgresql://{{ AWSDeployment.stack_outputs.DBInstancePrivate }}:5432/artifactory" server_name: "{{ AWSDeployment.stack_outputs.ALBHostName }}" artifactory_is_primary: true @@ -47,6 +48,7 @@ hostname: "{{ AWSDeployment.stack_outputs.RTSecInstancePrivate }}" ansible_user: "ubuntu" ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ AWSDeployment.stack_outputs.BastionInstancePublic }} -W %h:%p"' + artifactory_version: "{{ lookup('env', 'artifactory_version') }}" db_url: "jdbc:postgresql://{{ AWSDeployment.stack_outputs.DBInstancePrivate }}:5432/artifactory" server_name: "{{ AWSDeployment.stack_outputs.ALBHostName }}" artifactory_is_primary: false @@ -58,6 +60,7 @@ hostname: "{{ AWSDeployment.stack_outputs.XrayInstancePrivate }}" ansible_user: "ubuntu" ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ AWSDeployment.stack_outputs.BastionInstancePublic }} -W %h:%p"' + xray_version: "{{ lookup('env', 'xray_version') }}" jfrog_url: "http://{{ AWSDeployment.stack_outputs.ALBHostName }}" master_key: "{{ lookup('env', 'master_key') }}" join_key: "{{ lookup('env', 'join_key') }}" diff --git a/Ansible/test/azure/playbook.yaml b/Ansible/test/azure/playbook.yaml index f4eb24a..6304319 100644 --- a/Ansible/test/azure/playbook.yaml +++ b/Ansible/test/azure/playbook.yaml @@ -44,6 +44,7 @@ hostname: "{{ azureDeployment.deployment.outputs.vmArtPriIp.value }}" ansible_user: "ubuntu" ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' + artifactory_version: "{{ lookup('env', 'artifactory_version') }}" db_url: "jdbc:postgresql://{{ azureDeployment.deployment.outputs.vmDbArrIp.value[0] }}:5432/artifactory" server_name: "rt.{{ azureDeployment.deployment.outputs.lbIp.value }}.xip.io" artifactory_is_primary: true @@ -58,6 +59,7 @@ hostname: "{{ item }}" ansible_user: "ubuntu" ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' + artifactory_version: "{{ lookup('env', 'artifactory_version') }}" db_url: "jdbc:postgresql://{{ azureDeployment.deployment.outputs.vmDbArrIp.value[0] }}:5432/artifactory" server_name: "rt.{{ azureDeployment.deployment.outputs.lbIp.value }}.xip.io" artifactory_is_primary: false @@ -70,6 +72,7 @@ hostname: "{{ item }}" ansible_user: "ubuntu" ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' + xray_version: "{{ lookup('env', 'xray_version') }}" jfrog_url: "http://rt.{{ azureDeployment.deployment.outputs.lbIp.value }}.xip.io" master_key: "{{ lookup('env', 'master_key') }}" join_key: "{{ lookup('env', 'join_key') }}" From 49cf1503dee10aab8a02852419c9b3a7e412e7fe Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 16 Jun 2020 15:12:58 -0700 Subject: [PATCH 03/20] Updates to support publishing to Ansible Galaxy. --- Ansible/README.md | 17 +++++- Ansible/collection/jfrog/ansible/README.md | 14 ++--- Ansible/collection/jfrog/ansible/galaxy.yml | 29 ++++----- .../jfrog/ansible/jfrog-ansible-1.0.4.tar.gz | Bin 0 -> 25829 bytes .../artifactory-nginx-ssl/defaults/main.yml | 2 - .../artifactory-nginx-ssl/handlers/main.yml | 2 - .../roles/artifactory-nginx-ssl/meta/main.yml | 53 ----------------- .../artifactory-nginx-ssl/tests/inventory | 2 - .../artifactory-nginx-ssl/tests/test.yml | 5 -- .../roles/artifactory-nginx-ssl/vars/main.yml | 2 - .../roles/artifactory-nginx/defaults/main.yml | 2 - .../roles/artifactory-nginx/handlers/main.yml | 2 - .../roles/artifactory-nginx/meta/main.yml | 53 ----------------- .../roles/artifactory-nginx/tasks/Debian.yml | 3 - .../roles/artifactory-nginx/tests/inventory | 2 - .../roles/artifactory-nginx/tests/test.yml | 5 -- .../roles/artifactory-nginx/vars/main.yml | 2 - .../jfrog/ansible/roles/artifactory/README.md | 32 ++++++++++ .../roles/artifactory/meta/exception.yml | 6 -- .../ansible/roles/artifactory/meta/main.yml | 39 ++++--------- .../roles/artifactory/meta/preferences.yml | 2 - .../roles/artifactory/meta/version.yml | 6 -- .../ansible/roles/artifactory/tasks/main.yml | 2 +- .../.travis.yml | 0 .../ansible/roles/artifactory_nginx/README.md | 5 ++ .../roles/artifactory_nginx/defaults/main.yml | 2 + .../files/nginx.conf | 0 .../roles/artifactory_nginx/handlers/main.yml | 2 + .../roles/artifactory_nginx/meta/main.yml | 16 +++++ .../roles/artifactory_nginx/tasks/Debian.yml | 9 +++ .../tasks/RedHat.yml | 0 .../tasks/main.yml | 0 .../templates/artifactory.conf.j2 | 0 .../roles/artifactory_nginx/vars/main.yml | 2 + .../.travis.yml | 0 .../roles/artifactory_nginx_ssl/README.md | 16 +++++ .../artifactory_nginx_ssl/defaults/main.yml | 2 + .../artifactory_nginx_ssl/handlers/main.yml | 2 + .../roles/artifactory_nginx_ssl/meta/main.yml | 16 +++++ .../tasks/main.yml | 2 +- .../templates/artifactory.conf.j2 | 0 .../templates/certificate.key.j2 | 0 .../templates/certificate.pem.j2 | 0 .../roles/artifactory_nginx_ssl/vars/main.yml | 2 + .../jfrog/ansible/roles/postgres/README.md | 14 +++++ .../ansible/roles/postgres/meta/main.yml | 31 ++++------ .../jfrog/ansible/roles/xray/README.md | 22 +++++++ .../jfrog/ansible/roles/xray/meta/main.yml | 55 +++--------------- .../jfrog/ansible/roles/xray/tasks/main.yml | 2 +- .../jfrog/ansible/roles/xray/tests/inventory | 2 - .../jfrog/ansible/roles/xray/tests/test.yml | 5 -- Ansible/examples/playbook-rt-ha.yml | 2 +- Ansible/examples/playbook-ssl.yml | 2 +- .../.gradle/5.2.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../.gradle/5.2.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../test/tests/.gradle/5.2.1/gc.properties | 0 .../tests/src/test/resources/testenv.yaml | 6 +- 57 files changed, 218 insertions(+), 281 deletions(-) create mode 100644 Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/defaults/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/handlers/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/meta/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tests/inventory delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tests/test.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/vars/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/defaults/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/handlers/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/meta/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/Debian.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tests/inventory delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tests/test.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory-nginx/vars/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/README.md delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/meta/exception.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx}/.travis.yml (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/files/nginx.conf (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/tasks/RedHat.yml (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/tasks/main.yml (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx}/templates/artifactory.conf.j2 (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx => artifactory_nginx_ssl}/.travis.yml (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/tasks/main.yml (95%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/templates/artifactory.conf.j2 (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/templates/certificate.key.j2 (100%) rename Ansible/collection/jfrog/ansible/roles/{artifactory-nginx-ssl => artifactory_nginx_ssl}/templates/certificate.pem.j2 (100%) create mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml create mode 100644 Ansible/collection/jfrog/ansible/roles/postgres/README.md create mode 100644 Ansible/collection/jfrog/ansible/roles/xray/README.md delete mode 100644 Ansible/collection/jfrog/ansible/roles/xray/tests/inventory delete mode 100644 Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml create mode 100644 Ansible/test/tests/.gradle/5.2.1/fileChanges/last-build.bin create mode 100644 Ansible/test/tests/.gradle/5.2.1/fileHashes/fileHashes.lock create mode 100644 Ansible/test/tests/.gradle/5.2.1/gc.properties diff --git a/Ansible/README.md b/Ansible/README.md index 7903b00..048d3e3 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -9,13 +9,18 @@ This Ansible directory consists of the following directories that support the JF ## Getting Started - 1. Install this collection or the roles in your Ansible path using your ansible.cfg file. The following is an example: + 1. Download and nstall this collection or the roles in your Ansible path using your ansible.cfg file. The following is an example: ``` # Installs collections into [current dir]/ansible_collections/namespace/collection_name collections_paths = ~/.ansible/collections:/usr/share/ansible/collections:collection # Installs roles into [current dir]/roles/namespace.rolename roles_path = Ansible/collection/jfrog/ansible/roles +``` + +Or install this collection from Ansible Galaxy. +``` +ansible-galaxy collection install jfrog.ansible ``` 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. @@ -64,4 +69,12 @@ ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A us eg. ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' -``` \ No newline at end of file +``` + +## Building the Collection Archive +1. Go to the [collection/jfrog/ansible directory](collection/jfrog/ansible). +2. Update the galaxy.yml meta file as needed. Update the version. +3. Build the archive. +``` +ansible-galaxy collection build +``` diff --git a/Ansible/collection/jfrog/ansible/README.md b/Ansible/collection/jfrog/ansible/README.md index 2dc13bd..22c888c 100644 --- a/Ansible/collection/jfrog/ansible/README.md +++ b/Ansible/collection/jfrog/ansible/README.md @@ -1,12 +1,12 @@ # Ansible -This repo contains the Ansible collection for JFrog roles. These roles allow you to provision Artifactory for High-Availability using a Primary node and multiple Secondary nodes. Additionally, a Postgresql role is provided for installing an Artifactory Postgresql database. +This collection provides roles for installing Artifactory and Xray. Additionally, it provides optional SSL and Postgresql roles if these are needed for your deployment. ## Roles Provided ### artifactory -The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory-nginx to install nginx. +The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory_nginx to install nginx. -### artifactory-nginx-ssl -The artifactory-nginx-ssl role installs and configures nginx for SSL. +### artifactory_nginx_ssl +The artifactory_nginx_ssl role installs and configures nginx for SSL. ### postgres The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. @@ -35,15 +35,15 @@ The following Vars must be configured. * _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. **If specified, this file will be used rather than constructing a file from the parameters above.** * _binary_store_file_: Your own [binary store file](https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore) can be used. If specified, the default cluster-file-system will not be used. -### primary vars +### primary vars (vars used by the primary Artifactory server) * _artifactory_is_primary_: For the primary node this must be set to **true**. * _artifactory_license1 - 5_: These are the cluster licenses. * _artifactory_license_file_: Your own license file can be used. **If specified, a license file constructed from the licenses above will not be used.** -### secondary vars +### secondary vars (vars used by the secondary Artifactory server) * _artifactory_is_primary_: For the secondary node(s) this must be set to **false**. -### ssl vars (Used with artifactory-nginx-ssl role) +### ssl vars (Used with artifactory_nginx_ssl role) * _certificate_: This is the SSL cert. * _certificate_key_: This is the SSL private key. diff --git a/Ansible/collection/jfrog/ansible/galaxy.yml b/Ansible/collection/jfrog/ansible/galaxy.yml index 2b44148..38e2cc5 100644 --- a/Ansible/collection/jfrog/ansible/galaxy.yml +++ b/Ansible/collection/jfrog/ansible/galaxy.yml @@ -3,40 +3,43 @@ # The namespace of the collection. This can be a company/brand/organization or product namespace under which all # content lives. May only contain alphanumeric lowercase characters and underscores. Namespaces cannot start with # underscores or numbers and cannot contain consecutive underscores -namespace: jfrog +namespace: "jfrog" # The name of the collection. Has the same character restrictions as 'namespace' -name: ansible +name: "ansible" # The version of the collection. Must be compatible with semantic versioning -version: 1.0.0 +version: "1.0.4" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection -readme: README.md +readme: "README.md" # A list of the collection's content authors. Can be just the name or in the format 'Full Name (url) # @nicks:irc/im.site#channel' authors: -- your name + - "Jeff Fry " ### OPTIONAL but strongly recommended # A short summary description of the collection -description: your collection description +description: "This collection provides roles for installing Artifactory and Xray. Additionally, it provides optional SSL and Postgresql roles if these are needed for your deployment." # Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only # accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file' license: -- GPL-2.0-or-later + - "GPL-2.0-or-later" # The path to the license file for the collection. This path is relative to the root of the collection. This key is # mutually exclusive with 'license' -license_file: '' +license_file: "" # A list of tags you want to associate with the collection for indexing/searching. A tag name has the same character # requirements as 'namespace' and 'name' -tags: [] +tags: + - artifactory + - xray + - jfrog # Collections that this collection requires to be installed for it to be usable. The key of the dict is the # collection label 'namespace.name'. The value is a version range @@ -45,13 +48,13 @@ tags: [] dependencies: {} # The URL of the originating SCM repository -repository: http://example.com/repository +repository: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to any online docs -documentation: http://docs.example.com +documentation: "https://www.jfrog.com/confluence/display/JFROG/" # The URL to the homepage of the collection/project -homepage: http://example.com +homepage: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to the collection issue tracker -issues: http://example.com/issue/tracker +issues: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" diff --git a/Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz b/Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..36c6956a8c87b4ad0856469925c304db88004e26 GIT binary patch literal 25829 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" + description: "The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory_nginx to install nginx." + company: JFrog - platforms: - - name: Debian - versions: - - all - - name: EL - versions: - - 7 - - 8 - - name: Fedora - versions: - - all - - name: OpenSUSE - versions: - - all - - name: Ubuntu - versions: - - bionic + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 galaxy_tags: - artifactory - - centos - - redhat - - server - - system + - jfrog -dependencies: [] +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml b/Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml deleted file mode 100644 index e7fdebf..0000000 --- a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/preferences.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -tox_parallel: yes diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml b/Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml deleted file mode 100644 index ea2ef8f..0000000 --- a/Ansible/collection/jfrog/ansible/roles/artifactory/meta/version.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -project_name: JFrog -reference: "https://github.com/robertdebock/ansible-role-artifactory/blob/master/defaults/main.yml" -versions: - - name: Artifactory - url: "https://dl.bintray.com/jfrog/artifactory/" diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml index 04b3a8e..6c59717 100644 --- a/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/artifactory/tasks/main.yml @@ -2,7 +2,7 @@ # tasks file for artifactory - name: install nginx include_role: - name: artifactory-nginx + name: artifactory_nginx - name: create group for artifactory group: diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/.travis.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/.travis.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/.travis.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/.travis.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md new file mode 100644 index 0000000..6a6cb60 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/README.md @@ -0,0 +1,5 @@ +# artifactory_nginx +This role installs NGINX for artifactory. This role is automatically called by the artifactory role and isn't intended to be used separately. + +## Role Variables +* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml new file mode 100644 index 0000000..5818d2b --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/files/nginx.conf b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/files/nginx.conf similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/files/nginx.conf rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/files/nginx.conf diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml new file mode 100644 index 0000000..f07f4d4 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml new file mode 100644 index 0000000..f8548e0 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/meta/main.yml @@ -0,0 +1,16 @@ +galaxy_info: + author: "Jeff Fry " + description: "This role installs NGINX for artifactory. This role is automatically called by the artifactory role and isn't intended to be used separately." + company: JFrog + + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 + + galaxy_tags: + - artifactory + - jfrog + +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml new file mode 100644 index 0000000..cc41ad0 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/Debian.yml @@ -0,0 +1,9 @@ +--- +- name: apt-get update + apt: + update_cache: yes + register: package_res + retries: 5 + delay: 60 + become: yes + until: package_res is success diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/RedHat.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/RedHat.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/RedHat.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/main.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/tasks/main.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/tasks/main.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/templates/artifactory.conf.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/templates/artifactory.conf.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/templates/artifactory.conf.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx/templates/artifactory.conf.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml new file mode 100644 index 0000000..7d43ed5 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx/.travis.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/.travis.yml similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx/.travis.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/.travis.yml diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md new file mode 100644 index 0000000..9a32719 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/README.md @@ -0,0 +1,16 @@ +# artifactory_nginx_ssl +The artifactory_nginx_ssl role installs and configures nginx for SSL. + +## Role Variables +* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" +* _certificate_: This is the SSL cert. +* _certificate_key_: This is the SSL private key. + +## Example Playbook +``` +--- +- hosts: primary + roles: + - artifactory + - artifactory_nginx_ssl +``` diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml new file mode 100644 index 0000000..5818d2b --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml new file mode 100644 index 0000000..f07f4d4 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml new file mode 100644 index 0000000..3ca0601 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/meta/main.yml @@ -0,0 +1,16 @@ +galaxy_info: + author: "Jeff Fry " + description: "The artifactory_nginx_ssl role installs and configures nginx for SSL." + company: JFrog + + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 + + galaxy_tags: + - artifactory + - jfrog + +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/tasks/main.yml similarity index 95% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tasks/main.yml rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/tasks/main.yml index ba37c53..ea18fe2 100644 --- a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/tasks/main.yml @@ -1,5 +1,5 @@ --- -# tasks file for artifactory-nginx +# tasks file for artifactory_nginx - name: configure the artifactory nginx conf template: src: artifactory.conf.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/artifactory.conf.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/artifactory.conf.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/artifactory.conf.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/artifactory.conf.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.key.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.key.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.key.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.key.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.pem.j2 b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.pem.j2 similarity index 100% rename from Ansible/collection/jfrog/ansible/roles/artifactory-nginx-ssl/templates/certificate.pem.j2 rename to Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/templates/certificate.pem.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml new file mode 100644 index 0000000..7d43ed5 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/artifactory_nginx_ssl/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for artifactory_nginx \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/postgres/README.md b/Ansible/collection/jfrog/ansible/roles/postgres/README.md new file mode 100644 index 0000000..f8740f1 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/postgres/README.md @@ -0,0 +1,14 @@ +# postgres +The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. + +### Role Variables +* _db_users_: This is a list of database users to create. eg. db_users: - { db_user: "artifactory", db_password: "Art1fAct0ry" } +* _dbs_: This is the database to create. eg. dbs: - { db_name: "artifactory", db_owner: "artifactory" } + +## Example Playbook +``` +--- +- hosts: database + roles: + - postgres +``` \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml index cc79dee..aa5edc7 100644 --- a/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/postgres/meta/main.yml @@ -1,25 +1,16 @@ ---- - galaxy_info: - role_name: postgres_server - author: Jeff Fry - description: Installation of Postgres for Artifactory HA + author: "Jeff Fry " + description: "The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server." company: JFrog - min_ansible_version: 2.8 - platforms: - - name: Fedora - versions: - - 27 - - 29 - - name: Ubuntu - versions: - - xenial - - bionic - - name: Debian - versions: - - stretch + + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" + + license: license (GPL-2.0-or-later) + + min_ansible_version: 2.9 + galaxy_tags: - postgres - - postgresql + - jfrog -dependencies: [] +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/xray/README.md b/Ansible/collection/jfrog/ansible/roles/xray/README.md new file mode 100644 index 0000000..ba758f9 --- /dev/null +++ b/Ansible/collection/jfrog/ansible/roles/xray/README.md @@ -0,0 +1,22 @@ +# xray +The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required. + +### Role Variables +* _xray_version_: The version of Artifactory to install. eg. "3.3.0" +* _jfrog_url_: This is the URL to the Artifactory base URL. eg. "http://ec2-54-237-207-135.compute-1.amazonaws.com" +* _master_key_: This is the Artifactory [Master Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _join_key_: This is the Artifactory [Join Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). +* _db_type_: This is the database type. eg. "postgresql" +* _db_driver_: This is the JDBC driver class. eg. "org.postgresql.Driver" +* _db_url_: This is the database url. eg. "postgres://10.0.0.59:5432/xraydb?sslmode=disable" +* _db_user_: The database user to configure. eg. "xray" +* _db_password_: The database password to configure. "xray" +* _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. If specified, this file will be used rather than constructing a file from the parameters above. + +## Example Playbook +``` +--- +- hosts: xray + roles: + - xray +``` \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml b/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml index 227ad9c..a5b8978 100644 --- a/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/xray/meta/main.yml @@ -1,53 +1,16 @@ galaxy_info: - author: your name - description: your role description - company: your company (optional) + author: "Jeff Fry " + description: "The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required." + company: JFrog - # If the issue tracker for your role is not on github, uncomment the - # next line and provide a value - # issue_tracker_url: http://example.com/issue/tracker + issue_tracker_url: "https://github.com/jfrog/JFrog-Cloud-Installers/issues" - # Choose a valid license ID from https://spdx.org - some suggested licenses: - # - BSD-3-Clause (default) - # - MIT - # - GPL-2.0-or-later - # - GPL-3.0-only - # - Apache-2.0 - # - CC-BY-4.0 - license: license (GPL-2.0-or-later, MIT, etc) + license: license (GPL-2.0-or-later) min_ansible_version: 2.9 - # If this a Container Enabled role, provide the minimum Ansible Container version. - # min_ansible_container_version: + galaxy_tags: + - xray + - jfrog - # - # Provide a list of supported platforms, and for each platform a list of versions. - # If you don't wish to enumerate all versions for a particular platform, use 'all'. - # To view available platforms and versions (or releases), visit: - # https://galaxy.ansible.com/api/v1/platforms/ - # - # platforms: - # - name: Fedora - # versions: - # - all - # - 25 - # - name: SomePlatform - # versions: - # - all - # - 1.0 - # - 7 - # - 99.99 - - galaxy_tags: [] - # List tags for your role here, one per line. A tag is a keyword that describes - # and categorizes the role. Users find roles by searching for tags. Be sure to - # remove the '[]' above, if you add tags to this list. - # - # NOTE: A tag is limited to a single word comprised of alphanumeric characters. - # Maximum 20 tags per role. - -dependencies: [] - # List your role dependencies here, one per line. Be sure to remove the '[]' above, - # if you add dependencies to this list. - \ No newline at end of file +dependencies: [] \ No newline at end of file diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml b/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml index fd879fe..2361d9f 100644 --- a/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml +++ b/Ansible/collection/jfrog/ansible/roles/xray/tasks/main.yml @@ -44,7 +44,7 @@ owner: "{{ xray_user }}" group: "{{ xray_group }}" become: yes - + - name: configure system yaml template: src: system.yaml.j2 diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tests/inventory b/Ansible/collection/jfrog/ansible/roles/xray/tests/inventory deleted file mode 100644 index 878877b..0000000 --- a/Ansible/collection/jfrog/ansible/roles/xray/tests/inventory +++ /dev/null @@ -1,2 +0,0 @@ -localhost - diff --git a/Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml b/Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml deleted file mode 100644 index f296da6..0000000 --- a/Ansible/collection/jfrog/ansible/roles/xray/tests/test.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- hosts: localhost - remote_user: root - roles: - - xray \ No newline at end of file diff --git a/Ansible/examples/playbook-rt-ha.yml b/Ansible/examples/playbook-rt-ha.yml index 73c4791..151d2df 100644 --- a/Ansible/examples/playbook-rt-ha.yml +++ b/Ansible/examples/playbook-rt-ha.yml @@ -6,4 +6,4 @@ - hosts: primary:secondary roles: - artifactory - - artifactory-nginx-ssl \ No newline at end of file + - artifactory_nginx_ssl \ No newline at end of file diff --git a/Ansible/examples/playbook-ssl.yml b/Ansible/examples/playbook-ssl.yml index 359472b..33d84c2 100644 --- a/Ansible/examples/playbook-ssl.yml +++ b/Ansible/examples/playbook-ssl.yml @@ -6,4 +6,4 @@ - hosts: primary roles: - artifactory - - artifactory-nginx-ssl + - artifactory_nginx_ssl diff --git a/Ansible/test/tests/.gradle/5.2.1/fileChanges/last-build.bin b/Ansible/test/tests/.gradle/5.2.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/.gradle/5.2.1/fileHashes/fileHashes.lock b/Ansible/test/tests/.gradle/5.2.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..ceb38cc88f35a1c014e507af3e74c5a2b2a4d9d1 GIT binary patch literal 17 ScmZQ}3FHq8H4&T700jUW9s)c7 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/.gradle/5.2.1/gc.properties b/Ansible/test/tests/.gradle/5.2.1/gc.properties new file mode 100644 index 0000000..e69de29 diff --git a/Ansible/test/tests/src/test/resources/testenv.yaml b/Ansible/test/tests/src/test/resources/testenv.yaml index 55ff648..9cb1760 100644 --- a/Ansible/test/tests/src/test/resources/testenv.yaml +++ b/Ansible/test/tests/src/test/resources/testenv.yaml @@ -1,6 +1,6 @@ artifactory: - url: urlval - external_ip: ipval + url: http://Ansib-Appli-1RBHLINBKUHSU-1876699665.us-east-1.elb.amazonaws.com + external_ip: Ansib-Appli-1RBHLINBKUHSU-1876699665.us-east-1.elb.amazonaws.com distribution: artifactory_ha rt_username: admin - rt_password: passval \ No newline at end of file + rt_password: password \ No newline at end of file From 5ce8d505d1b87299f3470d8df6b9ce671cb08ff3 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Thu, 18 Jun 2020 17:07:29 -0700 Subject: [PATCH 04/20] Updates to support certification and RedHat Automation Hub. --- Ansible/README.md | 23 +- .../.ansible-lint | 0 .../.yamllint | 0 .../jfrog/installers}/README.md | 2 +- .../jfrog/installers}/galaxy.yml | 11 +- .../installers/jfrog-installers-1.0.5.tar.gz | Bin 0 -> 25876 bytes .../jfrog/installers}/plugins/README.md | 0 .../installers}/roles/artifactory/README.md | 0 .../roles/artifactory/defaults/main.yml | 0 .../roles/artifactory/handlers/main.yml | 0 .../roles/artifactory/meta/main.yml | 2 +- .../roles/artifactory/tasks/main.yml | 0 .../templates/artifactory.cluster.license.j2 | 0 .../artifactory/templates/binarystore.xml.j2 | 0 .../templates/installer-info.json.j2 | 0 .../roles/artifactory/templates/join.key.j2 | 0 .../roles/artifactory/templates/master.key.j2 | 0 .../artifactory/templates/system.yaml.j2 | 0 .../roles/artifactory_nginx}/.travis.yml | 0 .../roles/artifactory_nginx/README.md | 0 .../roles/artifactory_nginx/defaults/main.yml | 0 .../roles/artifactory_nginx/files/nginx.conf | 0 .../roles/artifactory_nginx/handlers/main.yml | 0 .../roles/artifactory_nginx/meta/main.yml | 2 +- .../roles/artifactory_nginx/tasks/Debian.yml | 0 .../roles/artifactory_nginx/tasks/RedHat.yml | 3 +- .../roles/artifactory_nginx/tasks/main.yml | 0 .../templates/artifactory.conf.j2 | 0 .../roles/artifactory_nginx/vars/main.yml | 0 .../roles/artifactory_nginx_ssl}/.travis.yml | 0 .../roles/artifactory_nginx_ssl/README.md | 0 .../artifactory_nginx_ssl/defaults/main.yml | 0 .../artifactory_nginx_ssl/handlers/main.yml | 0 .../roles/artifactory_nginx_ssl/meta/main.yml | 2 +- .../artifactory_nginx_ssl/tasks/main.yml | 0 .../templates/artifactory.conf.j2 | 0 .../templates/certificate.key.j2 | 0 .../templates/certificate.pem.j2 | 0 .../roles/artifactory_nginx_ssl/vars/main.yml | 0 .../installers}/roles/postgres/.travis.yml | 0 .../installers}/roles/postgres/README.md | 0 .../roles/postgres/defaults/main.yml | 0 .../roles/postgres/handlers/main.yml | 0 .../installers}/roles/postgres/meta/main.yml | 2 +- .../roles/postgres/tasks/Debian.yml | 0 .../roles/postgres/tasks/RedHat.yml | 0 .../installers}/roles/postgres/tasks/main.yml | 0 .../roles/postgres/templates/pg_hba.conf.j2 | 0 .../postgres/templates/postgresql.conf.j2 | 0 .../roles/postgres/vars/Debian.yml | 0 .../roles/postgres/vars/RedHat.yml | 0 .../roles/postgres/vars/RedHat_pg-9.6.yml | 0 .../roles/postgres/vars/RedHat_pg-default.yml | 0 .../jfrog/installers/roles/xray}/.travis.yml | 0 .../jfrog/installers}/roles/xray/README.md | 0 .../installers}/roles/xray/defaults/main.yml | 0 .../installers}/roles/xray/handlers/main.yml | 0 .../installers}/roles/xray/meta/main.yml | 2 +- .../installers}/roles/xray/tasks/Debian.yml | 3 +- .../installers}/roles/xray/tasks/RedHat.yml | 3 +- .../installers}/roles/xray/tasks/main.yml | 0 .../xray/templates/installer-info.json.j2 | 0 .../roles/xray/templates/join.key.j2 | 0 .../roles/xray/templates/master.key.j2 | 0 .../roles/xray/templates/system.yaml.j2 | 0 .../installers}/roles/xray/vars/main.yml | 0 .../jfrog/ansible/jfrog-ansible-1.0.4.tar.gz | Bin 25829 -> 0 bytes .../ansible/roles/artifactory/vars/main.yml | 2 - .../jfrog/ansible/roles/xray/.travis.yml | 29 - Ansible/pipelines.yaml | 4 + Ansible/test/aws/playbook.yaml | 4 +- .../6.5/executionHistory/executionHistory.bin | Bin 0 -> 134537 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .../.gradle/6.5/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../.gradle/6.5/fileContent/fileContent.lock | Bin 0 -> 17 bytes .../.gradle/6.5/fileHashes/fileHashes.bin | Bin 0 -> 23547 bytes .../.gradle/6.5/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes Ansible/test/tests/.gradle/6.5/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .../buildOutputCleanup/cache.properties | 2 + .../buildOutputCleanup/outputFiles.bin | Bin 0 -> 18947 bytes .../tests/.gradle/checksums/checksums.lock | Bin 0 -> 17 bytes .../test/tests/.gradle/vcs-1/gc.properties | 0 .../groovy/test/steps/RepositorySteps.class | Bin 0 -> 8397 bytes .../groovy/test/steps/SecuritytSteps.class | Bin 0 -> 10895 bytes .../classes/groovy/test/steps/XraySteps.class | Bin 0 -> 27034 bytes .../groovy/test/tests/HealthCheckTest.class | Bin 0 -> 7260 bytes .../groovy/test/tests/RepositoryTest.class | Bin 0 -> 16086 bytes .../groovy/test/tests/SecurityTest.class | Bin 0 -> 13805 bytes .../classes/groovy/test/tests/XrayTest.class | Bin 0 -> 21909 bytes .../groovy/test/utils/ConfigurationUtil.class | Bin 0 -> 2884 bytes .../DSL$__clinit__closure1$_closure2.class | Bin 0 -> 2705 bytes .../DSL$__clinit__closure1$_closure3.class | Bin 0 -> 2705 bytes .../DSL$__clinit__closure1$_closure4.class | Bin 0 -> 3489 bytes .../test/utils/DSL$__clinit__closure1.class | Bin 0 -> 7088 bytes .../build/classes/groovy/test/utils/DSL.class | Bin 0 -> 2223 bytes .../groovy/test/utils/EnvironmentConfig.class | Bin 0 -> 1926 bytes .../test/utils/ProcessOutputStream.class | Bin 0 -> 3664 bytes .../utils/Shell$_executeProc_closure1.class | Bin 0 -> 2291 bytes .../classes/groovy/test/utils/Shell.class | Bin 0 -> 2896 bytes .../groovy/test/utils/WorkspaceManager.class | Bin 0 -> 3654 bytes .../All API tests/tests.HealthCheckTest.html | 106 + .../All API tests/tests.HealthCheckTest.xml | 6 + .../All API tests/tests.RepositoryTest.html | 151 ++ .../All API tests/tests.RepositoryTest.xml | 28 + .../All API tests/tests.SecurityTest.html | 943 ++++++++ .../All API tests/tests.SecurityTest.xml | 76 + .../All API tests/tests.XrayTest.html | 307 +++ .../All API tests/tests.XrayTest.xml | 23 + .../tests/unified_test/bullet_point.png | Bin 0 -> 356 bytes .../classes/tests.HealthCheckTest.html | 115 + .../classes/tests.RepositoryTest.html | 139 ++ .../classes/tests.SecurityTest.html | 532 ++++ .../unified_test/classes/tests.XrayTest.html | 214 ++ .../tests/unified_test/collapseall.gif | Bin 0 -> 157 bytes .../tests/unified_test/css/base-style.css | 179 ++ .../reports/tests/unified_test/css/style.css | 84 + .../tests/unified_test/emailable-report.html | 123 + .../reports/tests/unified_test/failed.png | Bin 0 -> 977 bytes .../reports/tests/unified_test/index.html | 163 ++ .../tests/unified_test/jquery-1.7.1.min.js | 4 + .../reports/tests/unified_test/js/report.js | 194 ++ .../TEST-tests.HealthCheckTest.xml | 6 + .../TEST-tests.RepositoryTest.xml | 10 + .../junitreports/TEST-tests.SecurityTest.xml | 76 + .../junitreports/TEST-tests.XrayTest.xml | 23 + .../tests/unified_test/navigator-bullet.png | Bin 0 -> 352 bytes .../old/All API tests/classes.html | 288 +++ .../old/All API tests/groups.html | 6 + .../unified_test/old/All API tests/index.html | 6 + .../unified_test/old/All API tests/main.html | 2 + .../All API tests/methods-alphabetical.html | 212 ++ .../old/All API tests/methods-not-run.html | 8 + .../old/All API tests/methods.html | 212 ++ .../old/All API tests/reporter-output.html | 103 + .../old/All API tests/testng.xml.html | 1 + .../tests.HealthCheckTest.properties | 1 + .../tests.RepositoryTest.properties | 1 + .../tests.SecurityTest.properties | 1 + .../All API tests/tests.XrayTest.properties | 1 + .../unified_test/old/All API tests/toc.html | 54 + .../reports/tests/unified_test/old/index.html | 9 + .../tests/unified_test/packages/tests.html | 133 + .../reports/tests/unified_test/passed.png | Bin 0 -> 1019 bytes .../reports/tests/unified_test/skipped.png | Bin 0 -> 967 bytes .../tests/unified_test/testng-reports.css | 309 +++ .../tests/unified_test/testng-reports.js | 122 + .../tests/unified_test/testng-results.xml | 2134 +++++++++++++++++ .../reports/tests/unified_test/testng.css | 9 + .../build/resources/test/enableRabbitMQ.json | 11 + .../build/resources/test/integration.json | 9 + .../test/repositories/CreateDefault.yaml | 554 +++++ .../test/repositories/CreateJCR.yaml | 119 + .../resources/test/repositories/artifact.zip | Bin 0 -> 519 bytes .../tests/build/resources/test/testenv.yaml | 6 + .../TEST-tests.HealthCheckTest.xml | 13 + .../TEST-tests.RepositoryTest.xml | 21 + .../unified_test/TEST-tests.SecurityTest.xml | 150 ++ .../unified_test/TEST-tests.XrayTest.xml | 44 + .../unified_test/binary/output.bin | 107 + .../unified_test/binary/output.bin.idx | Bin 0 -> 3276 bytes .../unified_test/binary/results.bin | Bin 0 -> 10699 bytes .../jar_extract_13944288851973658335_tmp | Bin 0 -> 13904 bytes .../jar_extract_15312985063730868442_tmp | Bin 0 -> 965 bytes .../jar_extract_4590906891718676027_tmp | 0 .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../tests/src/test/resources/testenv.yaml | 6 +- ansible.cfg | 2 +- 168 files changed, 8183 insertions(+), 71 deletions(-) rename Ansible/{collection => ansible_collections}/.ansible-lint (100%) rename Ansible/{collection => ansible_collections}/.yamllint (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/README.md (99%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/galaxy.yml (91%) create mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/plugins/README.md (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/README.md (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/defaults/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/handlers/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/meta/main.yml (92%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/tasks/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/templates/artifactory.cluster.license.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/templates/binarystore.xml.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/templates/installer-info.json.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/templates/join.key.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/templates/master.key.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory/templates/system.yaml.j2 (100%) rename Ansible/{collection/jfrog/ansible/roles/artifactory => ansible_collections/jfrog/installers/roles/artifactory_nginx}/.travis.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/README.md (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/defaults/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/files/nginx.conf (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/handlers/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/meta/main.yml (91%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/tasks/Debian.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/tasks/RedHat.yml (83%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/tasks/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/templates/artifactory.conf.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx/vars/main.yml (100%) rename Ansible/{collection/jfrog/ansible/roles/artifactory_nginx => ansible_collections/jfrog/installers/roles/artifactory_nginx_ssl}/.travis.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/README.md (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/defaults/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/handlers/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/meta/main.yml (89%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/tasks/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/templates/artifactory.conf.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/templates/certificate.key.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/templates/certificate.pem.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/artifactory_nginx_ssl/vars/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/.travis.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/README.md (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/defaults/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/handlers/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/meta/main.yml (90%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/tasks/Debian.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/tasks/RedHat.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/tasks/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/templates/pg_hba.conf.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/templates/postgresql.conf.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/vars/Debian.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/vars/RedHat.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/vars/RedHat_pg-9.6.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/postgres/vars/RedHat_pg-default.yml (100%) rename Ansible/{collection/jfrog/ansible/roles/artifactory_nginx_ssl => ansible_collections/jfrog/installers/roles/xray}/.travis.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/README.md (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/defaults/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/handlers/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/meta/main.yml (90%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/tasks/Debian.yml (98%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/tasks/RedHat.yml (96%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/tasks/main.yml (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/templates/installer-info.json.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/templates/join.key.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/templates/master.key.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/templates/system.yaml.j2 (100%) rename Ansible/{collection/jfrog/ansible => ansible_collections/jfrog/installers}/roles/xray/vars/main.yml (100%) delete mode 100644 Ansible/collection/jfrog/ansible/jfrog-ansible-1.0.4.tar.gz delete mode 100644 Ansible/collection/jfrog/ansible/roles/artifactory/vars/main.yml delete mode 100644 Ansible/collection/jfrog/ansible/roles/xray/.travis.yml create mode 100644 Ansible/test/tests/.gradle/6.5/executionHistory/executionHistory.bin create mode 100644 Ansible/test/tests/.gradle/6.5/executionHistory/executionHistory.lock create mode 100644 Ansible/test/tests/.gradle/6.5/fileChanges/last-build.bin create mode 100644 Ansible/test/tests/.gradle/6.5/fileContent/fileContent.lock create mode 100644 Ansible/test/tests/.gradle/6.5/fileHashes/fileHashes.bin create mode 100644 Ansible/test/tests/.gradle/6.5/fileHashes/fileHashes.lock create mode 100644 Ansible/test/tests/.gradle/6.5/gc.properties create mode 100644 Ansible/test/tests/.gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 Ansible/test/tests/.gradle/buildOutputCleanup/cache.properties create mode 100644 Ansible/test/tests/.gradle/buildOutputCleanup/outputFiles.bin create mode 100644 Ansible/test/tests/.gradle/checksums/checksums.lock create mode 100644 Ansible/test/tests/.gradle/vcs-1/gc.properties create mode 100644 Ansible/test/tests/build/classes/groovy/test/steps/RepositorySteps.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/steps/SecuritytSteps.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/steps/XraySteps.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/HealthCheckTest.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/RepositoryTest.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/SecurityTest.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/XrayTest.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/ConfigurationUtil.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure2.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure3.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure4.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/EnvironmentConfig.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/ProcessOutputStream.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/Shell$_executeProc_closure1.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/Shell.class create mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/WorkspaceManager.class create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/bullet_point.png create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.HealthCheckTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/collapseall.gif create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/css/style.css create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/failed.png create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/index.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/js/report.js create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/navigator-bullet.png create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/classes.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/index.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/passed.png create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/skipped.png create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml create mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng.css create mode 100644 Ansible/test/tests/build/resources/test/enableRabbitMQ.json create mode 100644 Ansible/test/tests/build/resources/test/integration.json create mode 100644 Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml create mode 100644 Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml create mode 100644 Ansible/test/tests/build/resources/test/repositories/artifact.zip create mode 100644 Ansible/test/tests/build/resources/test/testenv.yaml create mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml create mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml create mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml create mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml create mode 100644 Ansible/test/tests/build/test-results/unified_test/binary/output.bin create mode 100644 Ansible/test/tests/build/test-results/unified_test/binary/output.bin.idx create mode 100644 Ansible/test/tests/build/test-results/unified_test/binary/results.bin create mode 100644 Ansible/test/tests/build/tmp/unified_test/jar_extract_13944288851973658335_tmp create mode 100644 Ansible/test/tests/build/tmp/unified_test/jar_extract_15312985063730868442_tmp create mode 100644 Ansible/test/tests/build/tmp/unified_test/jar_extract_4590906891718676027_tmp diff --git a/Ansible/README.md b/Ansible/README.md index 048d3e3..f08e7dd 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -1,27 +1,18 @@ -# JFrog Ansible Collection +# JFrog Ansible Installers Collection This Ansible directory consists of the following directories that support the JFrog Ansible collection. - * [collection directory](collection) - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection [README](collection/README.md) for details on the available roles and variables. + * [ansible_collections directory](ansible_collections) - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection [README](ansible_collections/README.md) for details on the available roles and variables. * [examples directory](examples) - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups. * [infra directory](infra) - This directory contains example infrastructure templates that can be used for testing and as example deployments. * [test directory](test) - This directory contains Gradle tests that can be used to verify a deployment. It also has Ansible playbooks for creating infrastructure, provisioning software and testing with Gradle. ## Getting Started - 1. Download and nstall this collection or the roles in your Ansible path using your ansible.cfg file. The following is an example: - ``` -# Installs collections into [current dir]/ansible_collections/namespace/collection_name -collections_paths = ~/.ansible/collections:/usr/share/ansible/collections:collection - -# Installs roles into [current dir]/roles/namespace.rolename -roles_path = Ansible/collection/jfrog/ansible/roles -``` - -Or install this collection from Ansible Galaxy. -``` -ansible-galaxy collection install jfrog.ansible -``` + 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. + ``` + ansible-galaxy collection install jfrog.installers + ``` 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. @@ -72,7 +63,7 @@ ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ub ``` ## Building the Collection Archive -1. Go to the [collection/jfrog/ansible directory](collection/jfrog/ansible). +1. Go to the [ansible_collections/jfrog/installers directory](ansible_collections/jfrog/installers). 2. Update the galaxy.yml meta file as needed. Update the version. 3. Build the archive. ``` diff --git a/Ansible/collection/.ansible-lint b/Ansible/ansible_collections/.ansible-lint similarity index 100% rename from Ansible/collection/.ansible-lint rename to Ansible/ansible_collections/.ansible-lint diff --git a/Ansible/collection/.yamllint b/Ansible/ansible_collections/.yamllint similarity index 100% rename from Ansible/collection/.yamllint rename to Ansible/ansible_collections/.yamllint diff --git a/Ansible/collection/jfrog/ansible/README.md b/Ansible/ansible_collections/jfrog/installers/README.md similarity index 99% rename from Ansible/collection/jfrog/ansible/README.md rename to Ansible/ansible_collections/jfrog/installers/README.md index 22c888c..e0449a9 100644 --- a/Ansible/collection/jfrog/ansible/README.md +++ b/Ansible/ansible_collections/jfrog/installers/README.md @@ -1,4 +1,4 @@ -# Ansible +# JFrog Ansible Installers Collection This collection provides roles for installing Artifactory and Xray. Additionally, it provides optional SSL and Postgresql roles if these are needed for your deployment. ## Roles Provided diff --git a/Ansible/collection/jfrog/ansible/galaxy.yml b/Ansible/ansible_collections/jfrog/installers/galaxy.yml similarity index 91% rename from Ansible/collection/jfrog/ansible/galaxy.yml rename to Ansible/ansible_collections/jfrog/installers/galaxy.yml index 38e2cc5..398304a 100644 --- a/Ansible/collection/jfrog/ansible/galaxy.yml +++ b/Ansible/ansible_collections/jfrog/installers/galaxy.yml @@ -6,10 +6,10 @@ namespace: "jfrog" # The name of the collection. Has the same character restrictions as 'namespace' -name: "ansible" +name: "installers" # The version of the collection. Must be compatible with semantic versioning -version: "1.0.4" +version: "1.0.5" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: "README.md" @@ -28,7 +28,7 @@ description: "This collection provides roles for installing Artifactory and Xray # Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only # accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file' license: - - "GPL-2.0-or-later" + - "Apache-2.0" # The path to the license file for the collection. This path is relative to the root of the collection. This key is # mutually exclusive with 'license' @@ -40,6 +40,7 @@ tags: - artifactory - xray - jfrog + - application # Collections that this collection requires to be installed for it to be usable. The key of the dict is the # collection label 'namespace.name'. The value is a version range @@ -51,7 +52,9 @@ dependencies: {} repository: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to any online docs -documentation: "https://www.jfrog.com/confluence/display/JFROG/" +documentation: + - "https://github.com/jfrog/JFrog-Cloud-Installers/blob/master/Ansible/README.md" + - "https://www.jfrog.com/confluence/display/JFROG/" # The URL to the homepage of the collection/project homepage: "https://github.com/jfrog/JFrog-Cloud-Installers/" diff --git a/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz b/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..80395da2affa4a40d7c1e1fb9e0582c3b248c7f4 GIT binary patch literal 25876 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%0D1_s(-AY?!U3R%f|{qYO1_>TYq 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 zU;T?|!NYansible.cfg - -script: - # Basic role syntax check - - ansible-playbook tests/test.yml -i tests/inventory --syntax-check - -notifications: - webhooks: https://galaxy.ansible.com/api/v1/notifications/ \ No newline at end of file diff --git a/Ansible/pipelines.yaml b/Ansible/pipelines.yaml index 7c0f343..45a5731 100644 --- a/Ansible/pipelines.yaml +++ b/Ansible/pipelines.yaml @@ -49,6 +49,8 @@ pipelines: - export AWS_ACCESS_KEY_ID="$int_ansibleEnvVars_AWS_ACCESS_KEY_ID" - export AWS_SECRET_KEY="$int_ansibleEnvVars_AWS_SECRET_KEY" - printenv + - pwd + - ls - eval $(ssh-agent -s) - ssh-add <(echo "$int_ansiblePrivateKey_key") - ansible-playbook Ansible/test/aws/playbook.yaml @@ -98,6 +100,8 @@ pipelines: - export clientSecret="$int_ansibleAzureKeys_password" - export tenantId="$int_ansibleAzureKeys_tenant" - printenv + - pwd + - ls - eval $(ssh-agent -s) - ssh-add <(echo "$int_ansiblePrivateKey_key") - az login --service-principal -u "$clientId" -p "$clientSecret" --tenant "$tenantId" diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index a859072..26cc90d 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -37,9 +37,7 @@ db_url: "jdbc:postgresql://{{ AWSDeployment.stack_outputs.DBInstancePrivate }}:5432/artifactory" server_name: "{{ AWSDeployment.stack_outputs.ALBHostName }}" artifactory_is_primary: true - artifactory_license1: "{{ lookup('env', 'artifactory_license1') }}" - artifactory_license2: "{{ lookup('env', 'artifactory_license2') }}" - artifactory_license3: "{{ lookup('env', 'artifactory_license3') }}" + artifactory_license_file: "{{ lookup('env', 'artifactory_license_file') }}" groups: - artifactory diff --git a/Ansible/test/tests/.gradle/6.5/executionHistory/executionHistory.bin b/Ansible/test/tests/.gradle/6.5/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..1da42b951b5fd0483d7c7691fd96842c9e3011af GIT binary patch literal 134537 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 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/.gradle/checksums/checksums.lock b/Ansible/test/tests/.gradle/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..19bc2572d5ec51849eda6f2e4f923dbf29606ee8 GIT binary patch literal 17 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 In?tTY0E(G@G5`Po literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/steps/XraySteps.class b/Ansible/test/tests/build/classes/groovy/test/steps/XraySteps.class new file mode 100644 index 0000000000000000000000000000000000000000..58846009f2a30ee99be0e6cb26db3d662e5f0891 GIT binary patch literal 27034 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 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/tests/RepositoryTest.class b/Ansible/test/tests/build/classes/groovy/test/tests/RepositoryTest.class new file mode 100644 index 0000000000000000000000000000000000000000..bd1747bfca5bdcdf56ad81f27a233946d08f0c4c GIT binary patch literal 16086 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 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/tests/SecurityTest.class b/Ansible/test/tests/build/classes/groovy/test/tests/SecurityTest.class new file mode 100644 index 0000000000000000000000000000000000000000..95b97710c869e75da1d3c9f3eb19a0a67434f723 GIT binary patch literal 13805 zcmc&*cVJw_(Vu-f>7LH#qIdUk`R(yWE;#$dXmmQ-5pnK zi{4EMp@i@O0a8dP2_ysvmLVjh(UOpu^bk_MRMLCHf$ulF`|eKClVkq+{_wornc3Oh znc3OdIr-(cp8gCGH5d(o0$Dqg&4fGc-dsAC9qvNUOG41}Ox8{n@Yzo8dZ|Q^Rm@vI zkWMD|4h!-OM~C8qf-TAPK$zR%Od`6+maT4dR}1p>CKLU!f%UPtjd@#kNB2g<@n~Wo ze0I-nyEhAtGQ}ZiN;I8~^+$WN$@K8%jut`wzE~!kj`ifSv1CG!nakMeM05y(%v3a! z*_TZB37S@!$wsrW-ljNE&58b`plZ3E-ejLW7|mtEYPI3C-5Vor@EV%gILl~gU=B4|#F9-K`_6Pf;GdMLcXPT1*a*6zdDipl{y+Z2t*J7Zb9 zF`bS=Cy}b9JKX2bC9<(0JKPKY4EV#&z}0@5Nyqufpjm#hXu6L)bbJYHMS_l-K(k(& zE2xf%E1AVJItR+=F+`(Mt1GQ-giub@a7pPjy|)0*bIw zPV|#W<-C}ac`*h9oEoX^4R*FYolM#3?699sQA)%a^spuTbgB|?nxA}1z!@NA2V)tW z#+LEN6i!!~v9p^~AXmApNKmD8J|2lf7EL6Qd^%w8@LC)GYj@`0dVK2O*tryDDcRi% zFDOZ+le}mTgHk_DQj6Kd-7*GVKlv5zZ0?#2%KbE1;X1kNV=&22QxtBipe09hlntFY z+lhhZp;X*U-8jf&V}qA=jKV5@FP)1+JDAO;8p2_dcERr9qQGHNRM66@9YwyR?N^La zqE;{6!UwL`N81UJ4C?O_LxvpW6%Rkq$;k*K5j>#3Ave}(%@iRQ9{HbPRb^beELJl|yY zNO{h42>Jz!bPcAH`=UL3uJ*BCr)`A5&4|YtzB~k-a&!euyhsGuxf6LTi-xQE`=Z$> zbiFs$XTw!X`5J)ZnyGXw$=4T}?Cx#yX7D%3rG+FD?`R5aC4*iroyK+r^;J1RUEV_* z|rhJjUf5`sqr#iZy+;pwJkOq+3?b}ywa%*rr}m8sJ%InwFfwS z-T?R88;$4ev*Cy{tD1|a)J(WW-bFY0=tg=s3#x$q`1t8a&|#;NX&H%c6*QwRRIH}@ z5L+^2(tAJ(DckmiGPzzv%S?YR9v?R8y`$E(Hkpju(S(=&hgY+`cr}_NS96z-?xedB z`PmwLb9X@hUVA7Si*w88+~V9Z9kmEr*z(^r2Cta9*G|X!hk51N2N!RV7-jmQSJtzVm8ZQbO?&Z zz0?}b_6}kXUV03^Ep=nkv3j59Ip#A6F<8J_N~e=)lfI1D(3>1eMbq|~7v!SIM3)>> z7+SjBPhX{1ILLmDMJ{Bph(RST#%L;r9h>w`Mx4N4F@q%xsu(QAt;8nWokOY^#tnh1 z-Ak`Asah(3oR;cCkQl=Ci!=5^=94K)EkZ+MD#m&YMdNJ6;gG!_DQ`xyvdtPy`d>k7 zk9Lh_kxmUp6Mb>qrQvmUe>4}*a*EaEWUMm0d+BFTR*yQin-e|B{qREl7@Wx9BnC2TTfwcB3|28X zg+T)YM4M1u$W45aVTFfJRl2Z-F%eXh;UX$5y)S=@;sVO0)Gg|25!{edn$)Eh4axJ* zYdV#|X$($ha0Y`l3>q1%WzfW69fLC&tY@$R)5@6Ao{sHBnmk}qBypAyXi_1jmOC9cD~{7lsN^>M|}<1h@j60G3nTb~`;3%VanyRokBHY%kHL zqR?;%>9WIv?eiU07-fpZkl5JPZHg+)$3#9W%S?gem+vk&1rC^>sdaJ_bzs1opcn(5 zWeCrF^h^;!VA+R!!ZyW8aND710$ywi=@pv3KD^J5?>q{cw<*GxQfBm46YG0yDl`I)yaJX z^4NKyLF7I?ww*w@9!l=D$3|)-wPk7**sN-7Mu1W4n5Bg$l8L%Lb=?*o8`tt04luZm z!SxJ~x|1nB$juvJ;QZ>?5%bIXFygYBNk&>VRnTQB0Hm zdaUFx#P5&eIB?ObQ`XE{?QB%OO%c^mO#m;-da68^C*krlF+j6fqlymdUF#Q*izj?I zX-^88%;mHESV1)|!Ed68{NgEb5J{OB@zYeAhH8pNUglt@MoXlG&DwC{RTmNUA}S$VoCet@e!p5&|k zhg@T`_h(JH7OvrVHE#~%8_bcu{*hOxR_Nn;%ms9r&#mSNdz)W;U%ZBjy%9pe-!(u@RE3v9yvD*Y zZ&ekWic_h)E2BhdRQilX#tDA$UGY7HMPmtqO(9wHGFQR6q}8uNIm zbr2+cj0?kCqx@@y-&jt6E{AB`z#jHL9GjL{!fwkA_29nadLRF2lf+@&5>3aruaUtH zwZSd1Obpn@LY)}_43|sqp4Mne^ZGhv;hn4Uv;ZY?4>ZWXcA$KZmcf;C`9%R-eo=dt zU(}oB7d2-2MO_*7F(2Oz_+C#H6yQE91@w7@tBs~(qbH&F9?VjTZ*&B|PE{YI*)@SV zk-)q|RB2FaZD8IARX<1bs&{>gYHPRF1nMGzaA5f%ehjwNF?K~Auqz|gPf~47U=@E? z9HP|*9pdL!gD2==rZqv&)=%=%jFSPUPzkm&jViIQ1_~G}fb(Nf$R??g)`D#%+GW7Z zz!&)#ty7B?XFw4qaKGWj)&!a(HGz#h+buCx z0YXJ@(;KW2FYT9#oCkH_7cg2xv!S**)JJpaTG)4l=F{sGDpKqlMT)I}O3%c<^*hMO z(1r}1h0ZWts2$>YI8Pa7i9^S%j=&X>>YCcRLv&3k1rA7eIM4tkYz67M2*CA`V5wYe z1-&#vH%r4a@s>#7wt|Lg9QEAJ>bZl};~Am%NfnIojZ!)R)vU#I8db?HoFpA|kJj&RpG1OXYLcJIRgTabchPbXeti^iza4LO6*wx$c#Gcl(qFuEz)L&d zq)jqA`dyT471VlJ%}o2W^8#7-EC z(37EBw)AlXP9I0Klt;`FVfq~(M`{u#{a&823|&uuK+8)vQIh@$s!2~G2>l7Ta@S+K ziaqBGMV|9l$8*G8JP3=J?0C-K#~V@ytADU&|LHhE1?A5u+v#6S{5OL)9ga~}mTu(< z92qZNJJ5f4>|2qbR}LE^{cRADt4Syvo>B6ZvsuDmH!2I7qut07C9a0IL@6A}65jEq zS6A&q=(ZHPolniM?ndgRO^AdobT_p^p>6aUwM(0J@U<%Zd7Jv3Qx2SCQ@>+V`Xg+~ zHa(vnk(MljIc}4d^wM*X&XzP?E!oVL{9D12qFivsg+xT$i9twn#2i?%wbl}TsCrcV zZL8Y~^yCP@ln8O6SsVXqPnZ>3pAy*?Hs677H*MuPpqApQ>JhWhDjRFa^?Z|VgdxSGB12X>8D;4mh%1xv2NHL~kS&&2(ptOK5=&t{ zOVmh%SfWlQ5S9qbaBYd@oCJY>VgsK8OPt)mQPmPF8+<|E)*4G7v8=5NdV-}m8{VK9 zED!od#Oa4bW6||IDL9E)*G2%EBEd=HYz_Q6$Qk8S4gR2?N1e%|)<=SVw^18lyjsxD zVkRV=me}ZU7JEvuWx=xvqw4T&;Q`1+Ezve=lqK4Aa4*~#U^<6A#YCfnhjcRN8a1wv zQw2Rbsj|ct=`P#YUEG9rv(R#g+RpNJFxYvlLeHB>=q?uOgQ)XaUX(%4u?p>*NT}^> zzn|p|Fc_RjXz8(TKjv(IH_O|@AbzYuC*1y!v;73iOEO3utI!Fze}S|8G|S5{$WA1* zEWiD|N4NeyXZ!nE-Y|m;Clcx%BXq*;U*xRxVwQIagG-N9=!AZHnX}T%S>6>4t~^$u z6Rz|sgjh>l-U!q}NI9g`gjTB~<2VlC8BjpW2WJ;vyTn$2Q*MEk%30JD)hB{3V~c59-9x z68DVD9#rCJiF;+@cAtdrchbY66pxd;58#njh|JDw*AgF+Tm4Wz+{x&SjMEbLk5W!y z#7B;<9Il>}B6Xfm@1`8xEES_($PYL-JU!r~Z)iOZWAY36fqeRQgH)FL3;7(@*!zk! z_JEV1(NCc<_KJITg7(l@eW?WPVNQ`g%HU(;odVcL-jSj(;L!>6^ojqjClB(W+4No< z;5&*O=$^cu?r}09x~j;5imC=O*XdxLJm~0Tnup8tBxLn$EmX_OT~hs&_*B672$|I* z;?QG{i)UJDUZAOr9TA`FZh1mHQ}dMg;$vVHvX}##OgTc9S3HY9$o-OdUKd}uHp7LD zQj~{knR`qvOuQgo)T{wLby;-{YI9s&8_WBWQ#V7NToAj$P3+5gD~}Sp!cFX#UB#|( z6Z;i+v1{DKe$`cMi<{V2+{L!IiT#?Z*mgIuUw0SV?k4uItJp3#v9G#|?Q#?Q4Og+- z+{AvpElJy#}dCnuS4}VTjJN~ZBf01C4P%u))K$R=L$>w z5ufWU@n?Llx5QuZxy2HH$LD@a{1cxCE%9%B9#Wr&)#sz?^D#B<5jE};mN){=C)MYm z`aG>Z&nlT;w8UFrdC@WmpO-Adz~^N({IEj4s*vAM$ZuPQ2Q1%FwC^g~_Z02>mQe=U z>q_*GEyG0bCzj#E=hq7Pcgygj_Ybwsf2wi+Qo{bNguSVdN7O|BQJilnn|Jw7Q&m%G6MWvtK~Oo{&kiyo$+UC{CbVwpvRx3=V{jSY}E8kn%<)6t(p$M zf@9!er0E@+-l^$bn%=GH+ckZMrtj4BU7CKrrbjisN7HRh@7MGJO&`?sn5OU6^gWs$ z*YqJxPiT5l(^Hy$fu^T5J)`M34RU|`G=0CO4{Q2`ntqX{U##huX!@m^ewn6UuIX23 z`jwh~mA2chmNAp{iJTbc4!N7A->&KRSjH^I-z$%qCGOLF@7H`Eu#DrGjw34l;33PH z!+mu+arbL}oKLy0M>PMV%rB$UG#~%ermxV2NGkZsgWJu=4=9_eM~nr}7>l|CM)g5s zu?|uE|9&)olL}E(^|(>>JXHWbWz;^00h?Z+z=%=5=^3NC8$*{pVN_K=X`ILs@^|j^ RBQ(WpECS*bzAvft{{TP8w8#Je literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/tests/XrayTest.class b/Ansible/test/tests/build/classes/groovy/test/tests/XrayTest.class new file mode 100644 index 0000000000000000000000000000000000000000..889fd079668da9c657ec48a3c94ce74f10d22566 GIT binary patch literal 21909 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 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure2.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure2.class new file mode 100644 index 0000000000000000000000000000000000000000..d87ab79016eebc971d659e7d736ef47133968a96 GIT binary patch literal 2705 zcmcIm-%}e^6#i}!*syGY1gO@wN^30n0ZoHi+fuBMQbYn(7O4R>E}NUM5O#61p~HhS zzWRswPFn|1rs|WO@o(y==Vq5Al!Yk|KIHD*yXWV3zH@H={^z&f0o=i3hHEv)s8rMU z)m*Gl&?|;%IO1tlYc|is4tFCG7(;K_wydq~bVW1E>8vXwA;>Uf+2you75S=GtEN3E zyJkAZ22W3MliQlZiw%u72ALdQcLf*R}eu| zMhI^(gq&5Q$`H?;R+uI^D4(u^RdcvKZ4xY|&KaV|p=0PQ2*YmK7;e2@vVMjJeW5-i zoa)$yS)Sh5tVno=YV|5(BwRUi>dH%amjPkCM>QD>V~`;cUq0@<^~hBmO)LuV5;6vm zB;|GbZBe&0-7c)!)?;m@!X;cMbVV70)PP_ZJ}r@B<&rQ$Ad2H`&9=GeFwDnutz9`) z@6atg{)Qnl^!X_<+@vb{;&aka zsZXO(L2#zv3(Sl0@`$F>*^NlZzcLeDd{6AbWf@EOTERnnE=v0?!^I{6j{zm&JBA=t zlX5>oRj+>(tU#Bcp{QU1Uy3|R4E?S3_9Wd2uqtE?hBnQe$2ZPCjn`4>pcFP3IvRH` zO^htHfS9Qk@nBK24KYg=#6sOb-Knq7YMb7Bcg`^RTy0~8+un&XZPE=~M~+ihc2An( zey0gZTwAq@bQ!Bw&DQw?qr#D)BttZq+7axLMT-DEKcO2v^ppjzR95;kATA49H|cE* zLDB#^_i=tMnHt)|n@>dT@ja~r^bvGrUcg)Q6uXPKMBl{jGVKDim+>~O!qg9BT9_IZ zrVcQWZ+nib`Cv-ThlbSl=ZNKl(QEV)jjQ=K+U+5=gFi?i2%A;~>|dm4!z83prA<2- z4w0K?D5*v$DGYg`q%iD-a-$K-BhnM0^omf1qnQ!P>{omgg6lBQbQn2w*mM$UIEgfz zL|i95A>6`kFW(8uKS1h($z6;^13x32+(&ljDJFBN7w8tJ`)DGxMd2?*Xx#<>lN4rNAi9t8%mK7KsjfXkA^8i;BLVikM3+Qd4#FY3 WGMN;qTEv_hJwxcAdTr4z0O>#7deW%? literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure3.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure3.class new file mode 100644 index 0000000000000000000000000000000000000000..9fb36e4bd75555223ac2b85b0a382d730fd1d8ac GIT binary patch literal 2705 zcmcIm-%}e^6#i}!*syGY1gO@wmeyGE1Db|vZA(!hrHBNoEK&n%TsAjhA?)I2Lx%@v zeDx3U9a{%brs|WO@o(y==Vq5Al!Yk|KIHD*yXWV3zH@H={^z&f0o=nAhU+!Qs8rJr z)Lg7k&?|;%IO1tlYc|is4tKXCFoxc;ZCP8}>568S(^*$WLXcs|vdd}RD)LpWR!w_S zcFlB*4W6FjCbu<*7aJOF3^F;q;R-TbIxPkXVTSgimDMU0h9Ba&HEm0CLwK~Z#&u`( z|2s(>H?2TMCqqxH>S&IkXDeE@I&GFLhGfnc1zxI9kcMRvVxH_MgH$Mxh1o0vTcY&t z3*0|s7<{et5{nFxSeZKl6V-6|xNU3O3?uQxvVRa>DRh#rl6?A5aa2Js`eX#quONb` zj1b;n2sx`pl_8!xtuRe;P(ED+tLAWf+9X&^oijv_L&wlr5Qg2dG2D5*Wc>^c`a*q3 zIMuNYvpl`AS&?vsYV|5(BwRgm>dH%ahXG-{OEnn_V~`;cUq0@<^~hBmO)LuV5;6vm zB;|GbZBe&0-7c)!))Q@|!X?}wbVV70)PP_ZJ}r@B<&rQ$Ad2H`&9=GeFwDnutz9`) z@6a7-0zO%UpbM7Vnx zm2nOC88W9Ouj;n3=}c@pTnv`+qP9u=l0Z#zPBcryB}2-GM<>On;A4!-_y`jU&Y`P= znE!x??i+|t=Sq0Upd4oC_Wf9^dpF61e;4`~Bs@OBw2Ucy>Kbn3r67m9;=?R;S4`Br zrPD9B;A-tg{)Qnl^!X_<+@>n};&aka zsZXO(L2#zvbIgnJ@|dR6*^NlZzcLeDd{6AbWf@EOO2H$1CQADa!^I{6j{zm&TZSN2 zlX5>oRj+>(tU#Bcp{QU1Ux++P4E?S3_9Wd2uqtE?hBnQe$2ZSDjn`4>pcFP3IvRH` zO^htHfS9Qk@nBK24KYg=#6sOb-Knq7YMb7Bcg`^RTy0~8+un&XZPE=~M~+ihc2An( zey0gZTwAq@bQ!Bw&DQxtqr#D)BttZq+7axLMT-DEKcX8w^ppjzR95;kATA49H|cE* zLDB#^_i=tMnHt)|n?H-%<2zah=p*RLynwgpDRvieiN1;5W!eR3FXL@mg{kk!v@kU+ zOdVh#-}W5W^1+mv4-Kj9&k@T9qu1#r8dvjewA({!2Y--45H_s}*uO~8hDk`HN}F~v z9Kw~BP*ROhQW)|=NnzLv8Xo*{}E@1lM7p=`eEWu$gb9;Uv;< z5^~av#~9rF6MTGr@CVz zch^hwN|>UeP>Xr?dI<=Dt(1&rqN*y&AgV^(^#ra`PC}qRx=3iwkhd=nu#}Gml6&}C zm>1&okH8bpdiLT^QTPiHT6e+!B!!t5i0-32a{w(*s%y_sNd5xzNPvAW(IpX=gK)^M WOeRID7BQzr&k#DOUR$&aK>82&;nJ@F literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure4.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure4.class new file mode 100644 index 0000000000000000000000000000000000000000..242ce9dd58a8f900f813efc42e4fcd415def9407 GIT binary patch literal 3489 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 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL.class new file mode 100644 index 0000000000000000000000000000000000000000..85ddc1028c4f6fe4bd7bd37b87f84082e18b0a3a GIT binary patch literal 2223 zcmb7F+fv(B6kW$$1d1SFAmjo`FK)37MIlYo3y>B}p%hbEOidlyy28jtsgW2-WQNzi z^+Wnjp&?8&?er;`={IFMT}P5H5a%He){)QId!4n{zUbfo{`?!jC$I#%4}7cY=?l56 z0wK`%(0F9%Rl~06YugXalCPjm;A+KnoJWV@{!;K>JM9oq={y-)2*kWyfq3>J%rv1B zo^SY8DN{8(Z`m$80_m*dR`imyW9}LUo*v!en&m2Qwj5ip+tObt7KyN$5fBf^d(ZTZ z;8nL1q##|3S3L3 zYMcVm>qkVnhU*gLhK62T?&jO5K)b(dc>%lw8TR_Wk)o-;^nt+cEZi(^c?}K#!EM&P`xE*>p=-3e&F+WDH3a?;@o^#U&ZY zxInTckrtU(@ScEHi!iL4+2-rRAXBZA)B=!t=(w$75>p{?JuVIJOUWm3SKvl1EsauH zwkd~gRH^t-%YswzArU>ZS*h#E8qkIO%6jaYDOIBa9jPZYQ7neLa&^1|*PK!?BQVw+ zbfkHUEaYX;-B&S-Pc?L*Tk1V0&>^djtvPtEKq43(leIh^YH^8V+MAGd-qaVPO;@vF z^_)}o*Uhr&ns&*gLW7BtYqGCuT@kg@Jzn23^RMcrz;C*Z;|k}dQ_goSyP_b=7JYp{ z1z%kdG_0bnrl`Ujrc;5SU#nQdHyW1kg%mW$0%^3_OYtlCmLrFXYuLnsiafs4u#7Kd zJ3o;5S(JOLi=9~k!WG-4&lT#(ep~4}H4mLJR z4d_#4i*x-I8hW_?B4<~yPvw}yZka{&)3d~Xce%>cUOB^+Z2AeVrcW`lI*~3u#?6V% z--Dd*@Tt)Y7{V>Q!PVrilRI(Zw#zBWcZoJnv>4Yhq9o$6-_VslL;C0#6WQ_SxGZb*9JZFGC9hX}0geG^GiHxfMtY3_QhbAs&mzp5U{U z^a(9h>73jfeywThA-*lkg(Hmw?Bp-5tt)L_a3vkf=t*09U$F3j-i zn}3M!*eWtQI(=$q{F^$C-`&k7sf33<m@j^A*-9dkuG(z61&P3!TwrVNT! zt5vZBS@1mTKwvSQ+3X+Xo)g$R(yY_or@a|F<_(M^r6Yj}1EV;rBZ(=22?bsW8R$eP za3P(EV+x7xToGj&=M~BY0|rKh`E^Mk89cImx|L2T9J3fwNhpr_Cegb^3=fHW8E>hW zt_WQ3OMg4DO5L+}gQbH&ssa_Zt=&L+8r~5YQKWVv709J~UWvqzKRvB?@t%%3%o`ZO zuu3Z0h!wfaK$ST-C7vGXn19W#GChzycNpF2zOa z3TM?J9gfu^<5PX*r{Ne1e853Otpv*I>_b=i=fbn24t zPR`XmN$tkUYfJV9tKOH-(-a%}}ydv|q01d3-D;;;SW+0DSs*}nrRc}18 zRKwTrDcf%Z&R9|7Uwi$wUq@w_Dcon97TGcasglc*RxQuA9=7CtwXk>BqdHV=-{wKV zaa=VOT!#%i!U0kLp=|B8ZS{(~=hfx1-IBP%43aF+Ad+Lc>K$P0C+K*C`;TfwaMu-i zEaM>UIC|(&<-ZTPtLmOR#$+k`JI-Z~aIw6Q-TDnP3mdt#m7XG-JHiKtG!>|EWl=|8 zVnSm}ar6)`iq7P&-kr|=ikaGTBo8;TH3rDw)JfN$!K`Yy5eBBp$-tPJLjM?_w82u` zRd9pZ9Q{>lQ6fF|B#C;Umr7y&@zFVW~w@c@?pV9mR5xFO&p_NU}l1NnILoNo+_kkz*PqR%Fw(orVJfE!A$=^|4gRS=UqvbjAW*aN4tB@dEaxM=e-{P z`@jGE7l4!at3tfyS(R$~3D+r_)#`lBTd#RJ&ozxT4N773s6xcp*Vx=C z5>U8()peYW&2+`ESJP+x@A;LhX3^6SQW)y8^SyNqh2E-FF>OylEh_9SS=FN9mg)y6 z^p90N!?TJr6{A|6wabn|D(kqb>7r9IuNbvzx^b{;mMc8Ya_scBY(_y_Ugi#SGYWgw zOwaI_6b@$F;m$P|DBt^lWn11u3ZcZ}Vsb%Y|JbVO%@~zR&T4R1m`o&>x`U|Mp0#GC ziM%^{-)t19EK6r@jr3eo7>F zL9SyIcgX&q)3FbIvfm+s_Z{c^WZH2mreSNii$>WnDm8PytT32ZOlCWTi1rBXj$jN& z6{fpdyFt|3T&EZ8QpKX%A2G{Dt>Rte+(p;0t7XSsqwgFZnpDtN>Ig2`E6&pju|(Us z^-#$q7j=wdB7zj|Q3!fhtg6CrcGuvfzd}#Bv@?Yhv&n@3;~DZ`%=WifaZ z!abixro(F*zM#-2(`QYOA-rz7-loFc-Jo}}(eXu`ybbq*Fxwn4YkTIZ>1udT%s<<1 z{>GAT{)Z!Y2&YI)j#s$9%bA@=wr|$3sg7yP2#QC-IJVO)o=dN3IJ;xEnYFVD$3D$i zxuR>Wdr}Z26Hk|nbx%m0Qy8%94df*VP;1xw-=2}8#UG; z!ptnSO*O-%b4te?&PR~NJj=-nf248WXU$a&Ip#=WX?nI1Q#}$>EOJk_Q)qzb#PI*j z?Bb});;4c`&(bu@gi~gQ23Q*v!cv5!1hO))2DD1e zZC*NTsdpCG5JsADo8x^j`x^@B$w6tDrJCIE*(cH){ zsM}C7(kAv+CCtZ;kNNdT$1zMwb$?pEF3H!|w`C^lGSXs}rbTzacPHEH&aV0`(S0U@ zZ{s@(`^KaWwDq9Twjf~dOXr-jcfl;1u4xxd@){f~vVVK#OuO1LE5Kl)J(U{SB`^X` z%?smu#M4bxVTys*H4=7fdj3rzBe@gQ@jPCT_Vgom&(FSzhMy=L?Tn z!G_$Gbo>svJ;d{SR`VGaOZJqkWt-<~Yb&OE(O9W)CYp8V;043AWZanC%L_p9+MKc8 z7{@QvO}$`MElQoXZAWehj?G|=yhgPUC<+!3!pzDiOu(m z*z1pPpSp?L15?3RFtz*-48?-^z*Hy}lEFwU zluzBjohN(ay)r%=@68WSX)$dJi7nh)m)G(mQ{h;+H8m0o=l|wI`xBpH)kz-qD8K&9 z@tuArzl=2Q;|RFy6H)$`P~infvaA90Iy7HCN1$`5zhmePXu-D;47`q!iRkgkiRg*R z=+t|7pa;WSIQ`4Eoj+Br7QUm>eh(1KAGSQz5 z?u36=JQ!V=Vg5!i!|SDqJA6VZ(gjCNLM90_2HVEsBpm2Y zsp#?OnOrJ*BKmzk7yR!$zndzoNDY-kJW^C*(I0+*$Ij8bKYkxC6{0=N+@Fg*B>nk+ zNJD(4aYEu9yz&wD^LYcWe@KOMA0xVjH_yF~*9uhq?Ynq|7X3rZqV&kXE$q`+)D+(4 IzCFx|@yV{`Z|YL_O$G=uxK_X1+}wNaIs5Fh&zZme{^d6S*Rdfm-0&^Co-3_M z+fJ6{chYS5a=~-WvT3{Zh9}1~2!Z~Z=ekd}a<<{ra)s87hKRtZ>(z3mTajxGf0r5!SonpGFLP;8?tyk<jK@E?B39ah8xX_JZB$>QzIn1K}Kn;s)p8Kt_YD*0x zyim-Sn$@3^zR|3z!0A-_5QhCLG88{>)dHmj`+4d31Q~U4i&{)7U9`2t**0E1 zS*rsg<^;CEv50T3$7tw#lt;JDs>AFc9`! z;414G%G7b1ZidaPcHjtXlS?bEhFKk-;&QQ*vhK#vfqfy6{uZ8CC5%0Un6c!=c~9^jFV&oHC%_)=i7T@Qg}dPzn9TG^Hb zP8hAhcIEZQnt|0WreHEm=*NbAUSPYZY2{KgONM8u4qsFYJBR&kKAtl+ga5rn&V>2K z#;Wv!6Me?vC#T7xWC!=&cGPE#BB3tV+=@V~ z#Q7Uj9JBBzdCv*VwaR}Ji0}o_y^EpwOm_4+-uzLi12wMac?o`pPU9{9s@)m9%{#R_ z%UuWe@1UEja`lkb%059?bEAoKnAdmk(NoEOH7wk@`@{}ComXpG71bPKK~WPSw@?GfraHn zN9H+7%Dpn@$1N}~1pZP_asN;BaoxenAAB(TQZe(@>AWx4SH9K@!~*l(B^|oxDENkN znOWN?6#AVBS0Isdy~&j6j>{>dSV)zpXwz`WaxDLdKwZ3ZNMKt<(f16eFyVUBsXpmQ&+z3qwbyn`NZdA(nHbhWk0OM1F*KtkiZC_^tW(bO0Rl@A3T%#d zR$>akUHU{X8?i}w*&IU*YZ|%RDiHRktb)LrTvdS>d6S%zX3>|YJ=YZ28P7dfu1x3Z zqdHa_0^K!h@UZMOJi+T!(%GWtNyisB8efq@H4ieYZ>|o?2~T3D3W;nBEB`Tc zVuw0SsMC-Vq+E;o)F*vrIwL)QK8D>Tt&~7}6(}8}RgjFDwp%EAvPVOYz^)qb)QEFP zRqyF2(%37o|Nq&ncB8V`r?PlfB@kAkUWo=JG!oOC9v9G88xnS$sv`kHX9|C+u|3hO!K~HIg`N^+6=e8 z?L_c8Cug}8A{ZlUq+w3wEJsE_;)N`#OsKgc=llq!NJ!~<5nSYim2;LqWY|S&+5+oq z#UQYc%&S?`hYgTmu4WYbBP*VjQt%qyh~YJis=-HIryt$5hT;P)USdj3pj3-rj$#&b zF}#9T6-nPD36@)FRW&rcMU2QxBC?|CN)I1d_BP&$;ws*a!GWvtxJKesGqY zlcteI~sTp!s3BEvQN|hS23KkD~ z9miFVl$WJ~oGea{Nw0ho>v#Bm1_(ouu$-f4kv~m@A96KnLw?9<`TqV5?CiV7oqU$zx)nPcP$J5+) zg>bT)|0L5%y*u4~8+$^ygY-y(H$QV5`vc7b=|oaLNR3QcBT%dOIiwEhX92(SqB?v< z$>9Eh$&Jv^i?6w9Lp=j&V1OD!ZsaemH8{tlRVq7zgw1j)py6R0VFFum0?%<**BVy8 z2g)fOBS0Zq?IJKQ=%McsNi1Su;RXhCUH8zUP8X3M$=$?Y*DVY!s3?MFy<$>V*pl)%W(JxUR(x>x* zYr0~am0h(5gd-*NnP1@z5ETCoW=Hf8OF6HyP>kb`v$A@&d~^H;uH401%3FBv4;l>I vgT9FO2kzkN2u(k_i7Uk6(`6ip1o{w@PN!&(_ZNtYVq=*shaZUCaI2>?{!`Mita4g^ndFFvDq@m20+oqCUYr z?R#y<4)!awr3a@Jw$&E~p6U2S*IUXSu^h`Y18bhEHx4XV!Khg-=k35c;Cbe(|rPt4Fpz=#WDO6z*=B zm7Dpi;V#-GVNlr9;>5KFwy+_EGzQmW2Ml6WLK5{fI5b)E+;iq!+0t+~iBNGXk%PUA zUSm~6)Ddw<3Eu63H>|KhvKrCzknPEIjGT!AIO;k@d!b4OkZvbgEgJ5V6)c5~4dgK= zu)@0eJWoGsmaEpWBC9Js)_iD<-n2(I52Nk0;$a} zvVIEgQpNPFBc4TSdXpv7QP}axVtXou12~w(0~i%Y;tHwI5!=l^XiEeilwlUL$|f+T z&?T8;82rGi76R8(c<2)yv^Ma~!KmdTg>mF04HI%`yTZYb3rMhBp%6IpWt*aO$SRuE zaxlrU$$GVhS<-NvKFzsq*)pAz&YXK*p|6F>gN(!pW2!J_Z| z1CgoqOC!8(W_OFIG+UhyJl4X9xEU8+PvCLhWz@d}zRl95y{mUSIh??ExX!mPSP4AI z>AeGmMqLl=PvCo;UUY3Ifv0&lTIU%6KY<_ed+E%)?eY7^3camNQ@D@pZb`SB-3y^h zp&BQydu>EMY4}A7-@rHJhI^LR?5Bs;@T(g{F(Prx_{mND>m;7T#T34VuS@;>hWu`LNAyp+OE@iQ^__X2l8#$HiaXUa<G@(Oav ziYe2x$0eOqiA0+OC}KSPxg1=6D4}yOVjh z>J=;za@(KPyIiv6f+Z21C51+wj*}utOJ4bZ(9kk+hehb=hV#V0^ z3R*_LWB4-eG_E1jhD&&d<8AmeTVj0_ZdDp~;x8N#tT@LTC+QdxZ}`h%R}KAsVv7|$ zL?1Ww-GY7%pNrMNV<9-99=RU2n;`eBf_%VGiNlXYAomXI_lFp{%(S8JS%qv{!TuE- zx`?BOet1|vV(3R@PJbx$CUXrB$1yR)Eysq3!u=~a`8>4v>xj2qM5m!o)yAiXE&=ak zn*HC2_75?m;gp6r|2?2Kd=&a6;rIZtXreI`M#x}R=!i6Yt0vX}g9GX8;EXWm8p(zG!{ zI+02;(%8=&jcKTaG?H2p8aezaJO-}@rn490+KmkN3lSsQHLp*=Cy^uS?O-p5ceTBZ z_zKRA8&}A^8iVT`6Vp3zo@9tD?hd!`g~Zf~c{eh985e3R_SpPoTqxuin9@Brsc1r(AK7=I{6{ZGt zTUgz!JN@Txwn9KQ>Ms4|M?d0@jyznkIvb~Cz|H}>I??GR| kAI9Ipi!J_}ejQp{Y5oWaaeROIRFNMF-_!zYR1KH!FE&u=k literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html new file mode 100644 index 0000000..09a0b8a --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html @@ -0,0 +1,106 @@ + + +TestNG: tests.HealthCheckTest + + + + + + + + +

tests.HealthCheckTest

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:2/0/0
Started on:Thu Jun 18 15:54:18 PDT 2020
Total time:1 seconds (1490 ms)
Included groups:common xray pro
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
healthCheckTest
Test class: tests.HealthCheckTest
+Show output + +Show all outputs +
+- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+
+
1tests.HealthCheckTest@483dde3c
pingTest
Test class: tests.HealthCheckTest
+Show output + +Show all outputs +
+- Ping test. Service is OK
+
+
0tests.HealthCheckTest@483dde3c

+ + \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml new file mode 100644 index 0000000..d7a4746 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html new file mode 100644 index 0000000..340e707 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html @@ -0,0 +1,151 @@ + + +TestNG: tests.RepositoryTest + + + + + + + + +

tests.RepositoryTest

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:6/0/0
Started on:Thu Jun 18 15:54:19 PDT 2020
Total time:52 seconds (52678 ms)
Included groups:common xray pro
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
checkDefaultHAReposTest
Test class: tests.RepositoryTest
+Show output + +Show all outputs +
+- Verify HA repos were created. 84 repositories were created
+
+
0tests.RepositoryTest@4f17d179
checkReposAreDeleted
Test class: tests.RepositoryTest
+Show output + +Show all outputs +
+- Verify repo were deleted. 0 repositories remain
+
+
0tests.RepositoryTest@4f17d179
createDefaultHAReposTest
Test class: tests.RepositoryTest
+Show output + +Show all outputs +
+- Create repositories for HA distribution. Successfully created
+
+
3tests.RepositoryTest@4f17d179
deleteDefaultReposTest
Test class: tests.RepositoryTest
+Show output + +Show all outputs +
+- Delete HA repositories. All repositories were successfully deleted
+
+
44tests.RepositoryTest@4f17d179
deleteReposTest
Test class: tests.RepositoryTest
+Show output + +Show all outputs +
+- Delete sample HA repositories. All repositories were successfully deleted
+
+
1tests.RepositoryTest@4f17d179
reCreateDefaultHAReposTest
Test class: tests.RepositoryTest
+Show output + +Show all outputs +
+- Re-create repositories for HA distribution. Successfully created
+
+
2tests.RepositoryTest@4f17d179

+ + \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml new file mode 100644 index 0000000..d1a75bc --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html new file mode 100644 index 0000000..755187a --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html @@ -0,0 +1,943 @@ + + +TestNG: tests.SecurityTest + + + + + + + + +

tests.SecurityTest

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:72/0/0
Started on:Thu Jun 18 15:55:12 PDT 2020
Total time:31 seconds (31896 ms)
Included groups:common xray pro
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-0
+Show output + +Show all outputs +
+- Create group. Group test-group-0 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-1
+Show output + +Show all outputs +
+- Create group. Group test-group-1 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-2
+Show output + +Show all outputs +
+- Create group. Group test-group-2 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-3
+Show output + +Show all outputs +
+- Create group. Group test-group-3 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-4
+Show output + +Show all outputs +
+- Create group. Group test-group-4 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-5
+Show output + +Show all outputs +
+- Create group. Group test-group-5 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-6
+Show output + +Show all outputs +
+- Create group. Group test-group-6 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-7
+Show output + +Show all outputs +
+- Create group. Group test-group-7 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-8
+Show output + +Show all outputs +
+- Create group. Group test-group-8 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-9
+Show output + +Show all outputs +
+- Create group. Group test-group-9 was successfully created
+
+
0tests.SecurityTest@285aa2f9
createPermissionsTest
Test class: tests.SecurityTest
+Show output + +Show all outputs +
+- Create permissions. Permissions successfully created and verified
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser0 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser1 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser2 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser3 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser4 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser5 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser6 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser7 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser8 created successfully
+
+
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
+Show output + +Show all outputs +
+- Create users. User testuser9 created successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-0
+Show output + +Show all outputs +
+- Delete group. Group test-group-0 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-1
+Show output + +Show all outputs +
+- Delete group. Group test-group-1 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-2
+Show output + +Show all outputs +
+- Delete group. Group test-group-2 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-3
+Show output + +Show all outputs +
+- Delete group. Group test-group-3 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-4
+Show output + +Show all outputs +
+- Delete group. Group test-group-4 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-5
+Show output + +Show all outputs +
+- Delete group. Group test-group-5 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-6
+Show output + +Show all outputs +
+- Delete group. Group test-group-6 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-7
+Show output + +Show all outputs +
+- Delete group. Group test-group-7 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-8
+Show output + +Show all outputs +
+- Delete group. Group test-group-8 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-9
+Show output + +Show all outputs +
+- Delete group. Group test-group-9 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deletePermissionsTest
Test class: tests.SecurityTest
+Show output + +Show all outputs +
+- Delete permissions. User testPermission has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser0 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser1 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser2 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser3 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser4 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser5 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser6 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser7 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser8 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
+Show output + +Show all outputs +
+- Delete user. User testuser9 has been removed successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser0 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser1 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser2 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser3 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser4 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser5 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser6 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser7 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser8 created successfully
+
+
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
+Show output + +Show all outputs +
+- Generate API keys. Key for testuser9 created successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser0 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser1 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser2 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser3 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser4 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser5 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser6 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser7 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser8 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
+Show output + +Show all outputs +
+- Re-generate API keys. Key for testuser9 re-generated successfully
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser0 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser1 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser2 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser3 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser4 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser5 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser6 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser7 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser8 was successfully verified
+
+
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
+Show output + +Show all outputs +
+- Verify created users. User testuser9 was successfully verified
+
+
0tests.SecurityTest@285aa2f9

+ + \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml new file mode 100644 index 0000000..f936834 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html new file mode 100644 index 0000000..cfbada1 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html @@ -0,0 +1,307 @@ + + +TestNG: tests.XrayTest + + + + + + + + +

tests.XrayTest

+ + + + + + + + + + + +
Tests passed/Failed/Skipped:19/0/0
Started on:Thu Jun 18 15:55:44 PDT 2020
Total time:10 seconds (10620 ms)
Included groups:common xray pro
Excluded groups:

+(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PASSED TESTS
Test methodExceptionTime (seconds)Instance
assignPolicyToWatchTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Assign policy to watch. Policy assigned successfully to Watch
+
+
0tests.XrayTest@53d7d172
createIssueEventTest
Test class: tests.XrayTest
Parameters: XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue
+Show output + +Show all outputs +
+- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully
+
+
0tests.XrayTest@53d7d172
createPolicyTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Create policy. Policy with name security_policy_4206031 created and verified successfully
+
+
0tests.XrayTest@53d7d172
createSupportBundleTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Create support bundle. Created with a bug, localhost instead of the hostname
+
+
4tests.XrayTest@53d7d172
createWatchTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully
+
+
0tests.XrayTest@53d7d172
deletePolicyTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Delete policy. Policy security_policy_4206031 has been successfully deleted
+
+
0tests.XrayTest@53d7d172
deleteWatchTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Delete watch. Watch all-repositories_4206031 has been successfully deleted
+
+
0tests.XrayTest@53d7d172
enableTLSRabbitMQTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified
+
+
0tests.XrayTest@53d7d172
getBinaryManagerTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Get binary manager. Binary manager is verified, connected RT version: 7.4.1
+
+
0tests.XrayTest@53d7d172
getIndexingConfigurationTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Get repo indexing configuration.
+
+
0tests.XrayTest@53d7d172
getPoliciesTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]
+
+
0tests.XrayTest@53d7d172
getSystemMonitoringTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Get system monitoring status. Data returned successfully
+
+
0tests.XrayTest@53d7d172
integrationConfigurationTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified
+
+
0tests.XrayTest@53d7d172
updateIndexingConfigurationTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Update repo indexing configuration. Successfully updated
+
+
0tests.XrayTest@53d7d172
updateIssueEventTest
Test class: tests.XrayTest
Parameters: XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue
+Show output + +Show all outputs +
+- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully
+
+
0tests.XrayTest@53d7d172
updatePolicyTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Update policy. Policy with name security_policy_4206031 updated and verified successfully
+
+
0tests.XrayTest@53d7d172
updateWatchTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully
+
+
0tests.XrayTest@53d7d172
xrayGetVersionTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Get X-ray version. Version: 3.3.0, revision: 3980dcb
+
+
0tests.XrayTest@53d7d172
xrayPingRequestTest
Test class: tests.XrayTest
+Show output + +Show all outputs +
+- Get system monitoring status. Data returned successfully
+
+
0tests.XrayTest@53d7d172

+ + \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml new file mode 100644 index 0000000..8112a1c --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/bullet_point.png b/Ansible/test/tests/build/reports/tests/unified_test/bullet_point.png new file mode 100644 index 0000000000000000000000000000000000000000..176e6d5b3d64d032e76c493e5811a1cf839220b5 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{ + + + + +Test results - Class tests.HealthCheckTest + + + + + +

+

Class tests.HealthCheckTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.481s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + +
TestDurationResult
healthCheckTest1.254spassed
pingTest0.227spassed
+
+
+

Standard output

+ +
- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
+- Ping test. Service is OK
+
+
+
+
+ +
+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html new file mode 100644 index 0000000..7565312 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html @@ -0,0 +1,139 @@ + + + + + +Test results - Class tests.RepositoryTest + + + + + +
+

Class tests.RepositoryTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
6
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
52.675s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
checkDefaultHAReposTest0.488spassed
checkReposAreDeleted0.239spassed
createDefaultHAReposTest3.271spassed
deleteDefaultReposTest44.317spassed
deleteReposTest1.476spassed
reCreateDefaultHAReposTest2.884spassed
+
+
+

Standard output

+ +
- Delete sample HA repositories. All repositories were successfully deleted
+383 changes to config merged successfully
+- Create repositories for HA distribution. Successfully created
+Number of created repositories is 84
+- Verify HA repos were created. 84 repositories were created
+- Delete HA repositories. All repositories were successfully deleted
+- Verify repo were deleted. 0 repositories remain
+383 changes to config merged successfully
+- Re-create repositories for HA distribution. Successfully created
+
+
+
+
+ +
+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html new file mode 100644 index 0000000..629ef66 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html @@ -0,0 +1,532 @@ + + + + + +Test results - Class tests.SecurityTest + + + + + +
+

Class tests.SecurityTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
72
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
31.877s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
createGroupTest[0](test-group-0)0.599spassed
createGroupTest[1](test-group-1)0.620spassed
createGroupTest[2](test-group-2)0.629spassed
createGroupTest[3](test-group-3)0.617spassed
createGroupTest[4](test-group-4)0.634spassed
createGroupTest[5](test-group-5)0.614spassed
createGroupTest[6](test-group-6)0.654spassed
createGroupTest[7](test-group-7)0.656spassed
createGroupTest[8](test-group-8)0.647spassed
createGroupTest[9](test-group-9)0.629spassed
createPermissionsTest0.912spassed
createUsersTest[0](testuser0, email0@jfrog.com, password123)0.480spassed
createUsersTest[1](testuser1, email1@jfrog.com, password123)0.467spassed
createUsersTest[2](testuser2, email2@jfrog.com, password123)0.498spassed
createUsersTest[3](testuser3, email3@jfrog.com, password123)0.385spassed
createUsersTest[4](testuser4, email4@jfrog.com, password123)0.409spassed
createUsersTest[5](testuser5, email5@jfrog.com, password123)0.422spassed
createUsersTest[6](testuser6, email6@jfrog.com, password123)0.419spassed
createUsersTest[7](testuser7, email7@jfrog.com, password123)0.405spassed
createUsersTest[8](testuser8, email8@jfrog.com, password123)0.417spassed
createUsersTest[9](testuser9, email9@jfrog.com, password123)0.402spassed
deleteGroupTest[0](test-group-0)0.335spassed
deleteGroupTest[1](test-group-1)0.324spassed
deleteGroupTest[2](test-group-2)0.327spassed
deleteGroupTest[3](test-group-3)0.319spassed
deleteGroupTest[4](test-group-4)0.407spassed
deleteGroupTest[5](test-group-5)0.333spassed
deleteGroupTest[6](test-group-6)0.338spassed
deleteGroupTest[7](test-group-7)0.326spassed
deleteGroupTest[8](test-group-8)0.322spassed
deleteGroupTest[9](test-group-9)0.313spassed
deletePermissionsTest0.375spassed
deleteUserTest[0](testuser0, email0@jfrog.com, password123)0.403spassed
deleteUserTest[1](testuser1, email1@jfrog.com, password123)0.347spassed
deleteUserTest[2](testuser2, email2@jfrog.com, password123)0.412spassed
deleteUserTest[3](testuser3, email3@jfrog.com, password123)0.337spassed
deleteUserTest[4](testuser4, email4@jfrog.com, password123)0.400spassed
deleteUserTest[5](testuser5, email5@jfrog.com, password123)0.350spassed
deleteUserTest[6](testuser6, email6@jfrog.com, password123)0.350spassed
deleteUserTest[7](testuser7, email7@jfrog.com, password123)0.350spassed
deleteUserTest[8](testuser8, email8@jfrog.com, password123)0.379spassed
deleteUserTest[9](testuser9, email9@jfrog.com, password123)0.334spassed
generateAPIKeysTest[0](testuser0, email0@jfrog.com, password123)0.816spassed
generateAPIKeysTest[1](testuser1, email1@jfrog.com, password123)0.543spassed
generateAPIKeysTest[2](testuser2, email2@jfrog.com, password123)0.499spassed
generateAPIKeysTest[3](testuser3, email3@jfrog.com, password123)0.463spassed
generateAPIKeysTest[4](testuser4, email4@jfrog.com, password123)0.448spassed
generateAPIKeysTest[5](testuser5, email5@jfrog.com, password123)0.457spassed
generateAPIKeysTest[6](testuser6, email6@jfrog.com, password123)0.442spassed
generateAPIKeysTest[7](testuser7, email7@jfrog.com, password123)0.472spassed
generateAPIKeysTest[8](testuser8, email8@jfrog.com, password123)0.467spassed
generateAPIKeysTest[9](testuser9, email9@jfrog.com, password123)0.479spassed
regenerateAPIKeysTest[0](testuser0, email0@jfrog.com, password123)0.473spassed
regenerateAPIKeysTest[1](testuser1, email1@jfrog.com, password123)0.447spassed
regenerateAPIKeysTest[2](testuser2, email2@jfrog.com, password123)0.476spassed
regenerateAPIKeysTest[3](testuser3, email3@jfrog.com, password123)0.474spassed
regenerateAPIKeysTest[4](testuser4, email4@jfrog.com, password123)0.450spassed
regenerateAPIKeysTest[5](testuser5, email5@jfrog.com, password123)0.422spassed
regenerateAPIKeysTest[6](testuser6, email6@jfrog.com, password123)0.479spassed
regenerateAPIKeysTest[7](testuser7, email7@jfrog.com, password123)0.450spassed
regenerateAPIKeysTest[8](testuser8, email8@jfrog.com, password123)0.448spassed
regenerateAPIKeysTest[9](testuser9, email9@jfrog.com, password123)0.457spassed
verifyUsersTest[0](testuser0, email0@jfrog.com, password123)0.338spassed
verifyUsersTest[1](testuser1, email1@jfrog.com, password123)0.331spassed
verifyUsersTest[2](testuser2, email2@jfrog.com, password123)0.313spassed
verifyUsersTest[3](testuser3, email3@jfrog.com, password123)0.322spassed
verifyUsersTest[4](testuser4, email4@jfrog.com, password123)0.324spassed
verifyUsersTest[5](testuser5, email5@jfrog.com, password123)0.337spassed
verifyUsersTest[6](testuser6, email6@jfrog.com, password123)0.311spassed
verifyUsersTest[7](testuser7, email7@jfrog.com, password123)0.394spassed
verifyUsersTest[8](testuser8, email8@jfrog.com, password123)0.337spassed
verifyUsersTest[9](testuser9, email9@jfrog.com, password123)0.312spassed
+
+
+

Standard output

+ +
- Create users. User testuser0 created successfully
+- Create users. User testuser1 created successfully
+- Create users. User testuser2 created successfully
+- Create users. User testuser3 created successfully
+- Create users. User testuser4 created successfully
+- Create users. User testuser5 created successfully
+- Create users. User testuser6 created successfully
+- Create users. User testuser7 created successfully
+- Create users. User testuser8 created successfully
+- Create users. User testuser9 created successfully
+- Verify created users. User testuser0 was successfully verified
+- Verify created users. User testuser1 was successfully verified
+- Verify created users. User testuser2 was successfully verified
+- Verify created users. User testuser3 was successfully verified
+- Verify created users. User testuser4 was successfully verified
+- Verify created users. User testuser5 was successfully verified
+- Verify created users. User testuser6 was successfully verified
+- Verify created users. User testuser7 was successfully verified
+- Verify created users. User testuser8 was successfully verified
+- Verify created users. User testuser9 was successfully verified
+- Generate API keys. Key for testuser0 created successfully
+- Generate API keys. Key for testuser1 created successfully
+- Generate API keys. Key for testuser2 created successfully
+- Generate API keys. Key for testuser3 created successfully
+- Generate API keys. Key for testuser4 created successfully
+- Generate API keys. Key for testuser5 created successfully
+- Generate API keys. Key for testuser6 created successfully
+- Generate API keys. Key for testuser7 created successfully
+- Generate API keys. Key for testuser8 created successfully
+- Generate API keys. Key for testuser9 created successfully
+- Re-generate API keys. Key for testuser0 re-generated successfully
+- Re-generate API keys. Key for testuser1 re-generated successfully
+- Re-generate API keys. Key for testuser2 re-generated successfully
+- Re-generate API keys. Key for testuser3 re-generated successfully
+- Re-generate API keys. Key for testuser4 re-generated successfully
+- Re-generate API keys. Key for testuser5 re-generated successfully
+- Re-generate API keys. Key for testuser6 re-generated successfully
+- Re-generate API keys. Key for testuser7 re-generated successfully
+- Re-generate API keys. Key for testuser8 re-generated successfully
+- Re-generate API keys. Key for testuser9 re-generated successfully
+- Create group. Group test-group-0 was successfully created
+- Create group. Group test-group-1 was successfully created
+- Create group. Group test-group-2 was successfully created
+- Create group. Group test-group-3 was successfully created
+- Create group. Group test-group-4 was successfully created
+- Create group. Group test-group-5 was successfully created
+- Create group. Group test-group-6 was successfully created
+- Create group. Group test-group-7 was successfully created
+- Create group. Group test-group-8 was successfully created
+- Create group. Group test-group-9 was successfully created
+- Create permissions. Permissions successfully created and verified
+- Delete permissions. User testPermission has been removed successfully
+- Delete user. User testuser0 has been removed successfully
+- Delete user. User testuser1 has been removed successfully
+- Delete user. User testuser2 has been removed successfully
+- Delete user. User testuser3 has been removed successfully
+- Delete user. User testuser4 has been removed successfully
+- Delete user. User testuser5 has been removed successfully
+- Delete user. User testuser6 has been removed successfully
+- Delete user. User testuser7 has been removed successfully
+- Delete user. User testuser8 has been removed successfully
+- Delete user. User testuser9 has been removed successfully
+- Delete group. Group test-group-0 has been removed successfully
+- Delete group. Group test-group-1 has been removed successfully
+- Delete group. Group test-group-2 has been removed successfully
+- Delete group. Group test-group-3 has been removed successfully
+- Delete group. Group test-group-4 has been removed successfully
+- Delete group. Group test-group-5 has been removed successfully
+- Delete group. Group test-group-6 has been removed successfully
+- Delete group. Group test-group-7 has been removed successfully
+- Delete group. Group test-group-8 has been removed successfully
+- Delete group. Group test-group-9 has been removed successfully
+
+
+
+
+ +
+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html new file mode 100644 index 0000000..502a936 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html @@ -0,0 +1,214 @@ + + + + + +Test results - Class tests.XrayTest + + + + + +
+

Class tests.XrayTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
19
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
10.615s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
assignPolicyToWatchTest0.240spassed
createIssueEventTest[0](XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue)0.622spassed
createPolicyTest0.389spassed
createSupportBundleTest4.665spassed
createWatchTest0.455spassed
deletePolicyTest0.228spassed
deleteWatchTest0.253spassed
enableTLSRabbitMQTest0.422spassed
getBinaryManagerTest0.241spassed
getIndexingConfigurationTest0.270spassed
getPoliciesTest0.243spassed
getSystemMonitoringTest0.179spassed
integrationConfigurationTest0.403spassed
updateIndexingConfigurationTest0.463spassed
updateIssueEventTest[0](XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue)0.429spassed
updatePolicyTest0.398spassed
updateWatchTest0.465spassed
xrayGetVersionTest0.135spassed
xrayPingRequestTest0.115spassed
+
+
+

Standard output

+ +
- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully
+- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully
+- Create policy. Policy with name security_policy_4206031 created and verified successfully
+- Update policy. Policy with name security_policy_4206031 updated and verified successfully
+- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]
+- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully
+- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully
+- Assign policy to watch. Policy assigned successfully to Watch
+- Delete watch. Watch all-repositories_4206031 has been successfully deleted
+- Delete policy. Policy security_policy_4206031 has been successfully deleted
+- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified
+- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified
+- Get binary manager. Binary manager is verified, connected RT version: 7.4.1
+- Get repo indexing configuration.
+- Update repo indexing configuration. Successfully updated
+- Create support bundle. Created with a bug, localhost instead of the hostname
+- Get system monitoring status. Data returned successfully
+- Get system monitoring status. Data returned successfully
+- Get X-ray version. Version: 3.3.0, revision: 3980dcb
+
+
+
+
+ +
+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/collapseall.gif b/Ansible/test/tests/build/reports/tests/unified_test/collapseall.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 GIT binary patch literal 157 zcmZ?wbhEHb6krfw*v!DtJ#F>UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css b/Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css new file mode 100644 index 0000000..4afa73e --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/css/style.css b/Ansible/test/tests/build/reports/tests/unified_test/css/style.css new file mode 100644 index 0000000..3dc4913 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html b/Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html new file mode 100644 index 0000000..ad69c48 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html @@ -0,0 +1,123 @@ + + + + +TestNG Report + + + + + + + + + + + +
Test# Passed# Skipped# FailedTime (ms)Included GroupsExcluded Groups
All API tests
tests.HealthCheckTest2001,490common, xray, pro
tests.RepositoryTest60052,678common, xray, pro
tests.SecurityTest720031,896common, xray, pro
tests.XrayTest190010,620common, xray, pro
Total990096,684
+ + + + +
ClassMethodStartTime (ms)
All API tests
tests.HealthCheckTest — passed
tests.HealthCheckTesthealthCheckTest15925208584951254
pingTest1592520859750227
tests.RepositoryTest — passed
tests.RepositoryTestcheckDefaultHAReposTest1592520864746488
checkReposAreDeleted1592520909553239
createDefaultHAReposTest15925208614753271
deleteDefaultReposTest159252086523544317
deleteReposTest15925208599991476
reCreateDefaultHAReposTest15925209097922884
tests.SecurityTest — passed
tests.SecurityTestcreateGroupTest1592520933083614
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createPermissionsTest1592520936283912
createUsersTest1592520916593402
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
deleteGroupTest1592520941236335
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deletePermissionsTest1592520937196375
deleteUserTest1592520939471350
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
generateAPIKeysTest1592520924460467
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
regenerateAPIKeysTest1592520928628450
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
verifyUsersTest1592520918301324
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
tests.XrayTest — passed
tests.XrayTestassignPolicyToWatchTest1592520947606240
createIssueEventTest1592520944603622
createPolicyTest1592520945655389
createSupportBundleTest15925209501274665
createWatchTest1592520946685455
deletePolicyTest1592520948099228
deleteWatchTest1592520947846253
enableTLSRabbitMQTest1592520948730422
getBinaryManagerTest1592520949152241
getIndexingConfigurationTest1592520949393270
getPoliciesTest1592520946442243
getSystemMonitoringTest1592520954792179
integrationConfigurationTest1592520948327403
updateIndexingConfigurationTest1592520949664463
updateIssueEventTest1592520945226429
updatePolicyTest1592520946044398
updateWatchTest1592520947140465
xrayGetVersionTest1592520955087135
xrayPingRequestTest1592520954971115
+

tests.HealthCheckTest

tests.HealthCheckTest#healthCheckTest

Messages
- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy

back to summary

+

tests.HealthCheckTest#pingTest

Messages
- Ping test. Service is OK

back to summary

+

tests.RepositoryTest

tests.RepositoryTest#checkDefaultHAReposTest

Messages
- Verify HA repos were created. 84 repositories were created

back to summary

+

tests.RepositoryTest#checkReposAreDeleted

Messages
- Verify repo were deleted. 0 repositories remain

back to summary

+

tests.RepositoryTest#createDefaultHAReposTest

Messages
- Create repositories for HA distribution. Successfully created

back to summary

+

tests.RepositoryTest#deleteDefaultReposTest

Messages
- Delete HA repositories. All repositories were successfully deleted

back to summary

+

tests.RepositoryTest#deleteReposTest

Messages
- Delete sample HA repositories. All repositories were successfully deleted

back to summary

+

tests.RepositoryTest#reCreateDefaultHAReposTest

Messages
- Re-create repositories for HA distribution. Successfully created

back to summary

+

tests.SecurityTest

tests.SecurityTest#createGroupTest

Parameter #1
test-group-5
Messages
- Create group. Group test-group-5 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-6
Messages
- Create group. Group test-group-6 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-0
Messages
- Create group. Group test-group-0 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-8
Messages
- Create group. Group test-group-8 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-1
Messages
- Create group. Group test-group-1 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-2
Messages
- Create group. Group test-group-2 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-3
Messages
- Create group. Group test-group-3 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-4
Messages
- Create group. Group test-group-4 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-9
Messages
- Create group. Group test-group-9 was successfully created

back to summary

+

tests.SecurityTest#createGroupTest

Parameter #1
test-group-7
Messages
- Create group. Group test-group-7 was successfully created

back to summary

+

tests.SecurityTest#createPermissionsTest

Messages
- Create permissions. Permissions successfully created and verified

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Create users. User testuser9 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Create users. User testuser7 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Create users. User testuser1 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Create users. User testuser5 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Create users. User testuser0 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Create users. User testuser4 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Create users. User testuser3 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Create users. User testuser6 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Create users. User testuser8 created successfully

back to summary

+

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Create users. User testuser2 created successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-0
Messages
- Delete group. Group test-group-0 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-6
Messages
- Delete group. Group test-group-6 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-1
Messages
- Delete group. Group test-group-1 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-5
Messages
- Delete group. Group test-group-5 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-4
Messages
- Delete group. Group test-group-4 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-7
Messages
- Delete group. Group test-group-7 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-3
Messages
- Delete group. Group test-group-3 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-8
Messages
- Delete group. Group test-group-8 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-2
Messages
- Delete group. Group test-group-2 has been removed successfully

back to summary

+

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-9
Messages
- Delete group. Group test-group-9 has been removed successfully

back to summary

+

tests.SecurityTest#deletePermissionsTest

Messages
- Delete permissions. User testPermission has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Delete user. User testuser5 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Delete user. User testuser9 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Delete user. User testuser3 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Delete user. User testuser0 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Delete user. User testuser7 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Delete user. User testuser2 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Delete user. User testuser1 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Delete user. User testuser6 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Delete user. User testuser4 has been removed successfully

back to summary

+

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Delete user. User testuser8 has been removed successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Generate API keys. Key for testuser8 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Generate API keys. Key for testuser7 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Generate API keys. Key for testuser6 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Generate API keys. Key for testuser3 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Generate API keys. Key for testuser9 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Generate API keys. Key for testuser0 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Generate API keys. Key for testuser5 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Generate API keys. Key for testuser2 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Generate API keys. Key for testuser4 created successfully

back to summary

+

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Generate API keys. Key for testuser1 created successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser7 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser3 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser0 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser9 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser8 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser4 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser6 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser2 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser1 re-generated successfully

back to summary

+

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser5 re-generated successfully

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Verify created users. User testuser4 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Verify created users. User testuser7 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Verify created users. User testuser6 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Verify created users. User testuser9 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Verify created users. User testuser8 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Verify created users. User testuser2 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Verify created users. User testuser5 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Verify created users. User testuser3 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Verify created users. User testuser0 was successfully verified

back to summary

+

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Verify created users. User testuser1 was successfully verified

back to summary

+

tests.XrayTest

tests.XrayTest#assignPolicyToWatchTest

Messages
- Assign policy to watch. Policy assigned successfully to Watch

back to summary

+

tests.XrayTest#createIssueEventTest

Parameter #1Parameter #2Parameter #3Parameter #4
XRAY-CVE-2017-2000386A very important custom issueA very important custom issue
Messages
- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully

back to summary

+

tests.XrayTest#createPolicyTest

Messages
- Create policy. Policy with name security_policy_4206031 created and verified successfully

back to summary

+

tests.XrayTest#createSupportBundleTest

Messages
- Create support bundle. Created with a bug, localhost instead of the hostname

back to summary

+

tests.XrayTest#createWatchTest

Messages
- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully

back to summary

+

tests.XrayTest#deletePolicyTest

Messages
- Delete policy. Policy security_policy_4206031 has been successfully deleted

back to summary

+

tests.XrayTest#deleteWatchTest

Messages
- Delete watch. Watch all-repositories_4206031 has been successfully deleted

back to summary

+

tests.XrayTest#enableTLSRabbitMQTest

Messages
- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified

back to summary

+

tests.XrayTest#getBinaryManagerTest

Messages
- Get binary manager. Binary manager is verified, connected RT version: 7.4.1

back to summary

+

tests.XrayTest#getIndexingConfigurationTest

Messages
- Get repo indexing configuration.

back to summary

+

tests.XrayTest#getPoliciesTest

Messages
- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]

back to summary

+

tests.XrayTest#getSystemMonitoringTest

Messages
- Get system monitoring status. Data returned successfully

back to summary

+

tests.XrayTest#integrationConfigurationTest

Messages
- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified

back to summary

+

tests.XrayTest#updateIndexingConfigurationTest

Messages
- Update repo indexing configuration. Successfully updated

back to summary

+

tests.XrayTest#updateIssueEventTest

Parameter #1Parameter #2Parameter #3Parameter #4
XRAY-CVE-2017-2000386A very important custom issueA very important custom issue
Messages
- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully

back to summary

+

tests.XrayTest#updatePolicyTest

Messages
- Update policy. Policy with name security_policy_4206031 updated and verified successfully

back to summary

+

tests.XrayTest#updateWatchTest

Messages
- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully

back to summary

+

tests.XrayTest#xrayGetVersionTest

Messages
- Get X-ray version. Version: 3.3.0, revision: 3980dcb

back to summary

+

tests.XrayTest#xrayPingRequestTest

Messages
- Get system monitoring status. Data returned successfully

back to summary

+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/failed.png b/Ansible/test/tests/build/reports/tests/unified_test/failed.png new file mode 100644 index 0000000000000000000000000000000000000000..c117be59a9ecd1da15ebf48f6b7f53496302a7cd GIT binary patch literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/reports/tests/unified_test/index.html b/Ansible/test/tests/build/reports/tests/unified_test/index.html new file mode 100644 index 0000000..9e3d48b --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/index.html @@ -0,0 +1,163 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
99
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1m36.65s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+tests +99001m36.65s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+tests.HealthCheckTest +2001.481s100%
+tests.RepositoryTest +60052.675s100%
+tests.SecurityTest +720031.877s100%
+tests.XrayTest +190010.615s100%
+
+
+ +
+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js b/Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js new file mode 100644 index 0000000..979ed08 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/js/report.js b/Ansible/test/tests/build/reports/tests/unified_test/js/report.js new file mode 100644 index 0000000..83bab4a --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml new file mode 100644 index 0000000..ee4875a --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml new file mode 100644 index 0000000..3058f31 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml new file mode 100644 index 0000000..0bf143d --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml new file mode 100644 index 0000000..1c11671 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/navigator-bullet.png b/Ansible/test/tests/build/reports/tests/unified_test/navigator-bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..36d90d395c51912e718b89dd88b4a3fb53aa1d85 GIT binary patch literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class nameMethod nameGroups
tests.SecurityTest  
@Test
 deleteUserTestpro
 deleteGroupTestpro
 generateAPIKeysTestpro
 verifyUsersTestpro
 createUsersTestpro
 regenerateAPIKeysTestpro
 createGroupTestpro
 createPermissionsTestpro
 deletePermissionsTestpro
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
tests.HealthCheckTest  
@Test
 healthCheckTestcommon
 pingTestcommon ping
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
tests.RepositoryTest  
@Test
 deleteDefaultReposTestpro
 createDefaultJCRReposTestjcr
 createSupportBundleJCATestjcr
 checkDefaultJCRReposTestjcr
 reCreateDefaultHAReposTestpro
 checkReposAreDeletedpro
 reCreateDefaultJCRReposTestjcr
 deleteReposTestpro
 checkDefaultHAReposTestpro
 deleteDefaultJCRReposTestjcr
 createDefaultHAReposTestpro
 deleteJCRReposTestjcr
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
tests.XrayTest  
@Test
 getPoliciesTestxray
 createSupportBundleTestxray
 getSystemMonitoringTestxray
 enableTLSRabbitMQTestxray
 createPolicyTestxray
 getIndexingConfigurationTestxray
 assignPolicyToWatchTestxray
 createIssueEventTestxray
 updateIssueEventTestxray
 deleteWatchTestxray
 createWatchTestxray
 xrayPingRequestTestxray
 xrayGetVersionTestxray
 updateWatchTestxray
 getBinaryManagerTestxray
 updatePolicyTestxray
 deletePolicyTestxray
 integrationConfigurationTestxray
 updateIndexingConfigurationTestxray
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html new file mode 100644 index 0000000..74162f7 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html @@ -0,0 +1,6 @@ +

Groups used for this test run

+ + + + +
Group nameMethods
commonHealthCheckTest.pingTest()[pri:1, instance:tests.HealthCheckTest@483dde3c]
HealthCheckTest.healthCheckTest()[pri:0, instance:tests.HealthCheckTest@483dde3c]
pingHealthCheckTest.pingTest()[pri:1, instance:tests.HealthCheckTest@483dde3c]
proSecurityTest.verifyUsersTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:2, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.createDefaultHAReposTest()[pri:2, instance:tests.RepositoryTest@4f17d179]
SecurityTest.regenerateAPIKeysTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:4, instance:tests.SecurityTest@285aa2f9]
SecurityTest.createPermissionsTest()[pri:6, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.checkReposAreDeleted()[pri:10, instance:tests.RepositoryTest@4f17d179]
SecurityTest.deletePermissionsTest()[pri:7, instance:tests.SecurityTest@285aa2f9]
SecurityTest.generateAPIKeysTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:3, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.checkDefaultHAReposTest()[pri:3, instance:tests.RepositoryTest@4f17d179]
SecurityTest.createUsersTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:1, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.deleteDefaultReposTest()[pri:9, instance:tests.RepositoryTest@4f17d179]
SecurityTest.deleteUserTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:8, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.deleteReposTest()[pri:1, instance:tests.RepositoryTest@4f17d179]
SecurityTest.deleteGroupTest(java.lang.Object)[pri:9, instance:tests.SecurityTest@285aa2f9]
SecurityTest.createGroupTest(java.lang.Object)[pri:5, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.reCreateDefaultHAReposTest()[pri:11, instance:tests.RepositoryTest@4f17d179]
xrayXrayTest.deleteWatchTest()[pri:8, instance:tests.XrayTest@53d7d172]
XrayTest.integrationConfigurationTest()[pri:11, instance:tests.XrayTest@53d7d172]
XrayTest.updateIndexingConfigurationTest()[pri:15, instance:tests.XrayTest@53d7d172]
XrayTest.xrayGetVersionTest()[pri:20, instance:tests.XrayTest@53d7d172]
XrayTest.deletePolicyTest()[pri:9, instance:tests.XrayTest@53d7d172]
XrayTest.getBinaryManagerTest()[pri:13, instance:tests.XrayTest@53d7d172]
XrayTest.updatePolicyTest()[pri:4, instance:tests.XrayTest@53d7d172]
XrayTest.updateWatchTest()[pri:6, instance:tests.XrayTest@53d7d172]
XrayTest.createWatchTest()[pri:5, instance:tests.XrayTest@53d7d172]
XrayTest.xrayPingRequestTest()[pri:19, instance:tests.XrayTest@53d7d172]
XrayTest.createIssueEventTest(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)[pri:1, instance:tests.XrayTest@53d7d172]
XrayTest.assignPolicyToWatchTest()[pri:7, instance:tests.XrayTest@53d7d172]
XrayTest.createPolicyTest()[pri:3, instance:tests.XrayTest@53d7d172]
XrayTest.enableTLSRabbitMQTest()[pri:12, instance:tests.XrayTest@53d7d172]
XrayTest.getIndexingConfigurationTest()[pri:14, instance:tests.XrayTest@53d7d172]
XrayTest.createSupportBundleTest()[pri:17, instance:tests.XrayTest@53d7d172]
XrayTest.getSystemMonitoringTest()[pri:18, instance:tests.XrayTest@53d7d172]
XrayTest.getPoliciesTest()[pri:4, instance:tests.XrayTest@53d7d172]
XrayTest.updateIssueEventTest(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)[pri:2, instance:tests.XrayTest@53d7d172]
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html new file mode 100644 index 0000000..706e7d0 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html @@ -0,0 +1,6 @@ +Results for All API tests + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html new file mode 100644 index 0000000..432da36 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html @@ -0,0 +1,2 @@ +Results for All API tests +Select a result on the left-hand pane. diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html new file mode 100644 index 0000000..81c0477 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html @@ -0,0 +1,212 @@ +

Methods run, sorted chronologically

>> means before, << means after


All API tests

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/06/18 15:55:47 0      assignPolicyToWatchTestTest worker@545376742
20/06/18 15:54:24 -82860      checkDefaultHAReposTestTest worker@545376742
20/06/18 15:55:09 -38053      checkReposAreDeletedTest worker@545376742
20/06/18 15:54:21 -86131      createDefaultHAReposTestTest worker@545376742
20/06/18 15:55:29 -17622      createGroupTestTest worker@545376742
20/06/18 15:55:30 -17023      createGroupTestTest worker@545376742
20/06/18 15:55:31 -16403      createGroupTestTest worker@545376742
20/06/18 15:55:31 -15774      createGroupTestTest worker@545376742
20/06/18 15:55:32 -15157      createGroupTestTest worker@545376742
20/06/18 15:55:33 -14523      createGroupTestTest worker@545376742
20/06/18 15:55:33 -13909      createGroupTestTest worker@545376742
20/06/18 15:55:34 -13255      createGroupTestTest worker@545376742
20/06/18 15:55:35 -12599      createGroupTestTest worker@545376742
20/06/18 15:55:35 -11952      createGroupTestTest worker@545376742
20/06/18 15:55:44 -3003      createIssueEventTestTest worker@545376742
20/06/18 15:55:36 -11323      createPermissionsTestTest worker@545376742
20/06/18 15:55:45 -1951      createPolicyTestTest worker@545376742
20/06/18 15:55:50 2521      createSupportBundleTestTest worker@545376742
20/06/18 15:55:12 -34915      createUsersTestTest worker@545376742
20/06/18 15:55:13 -34435      createUsersTestTest worker@545376742
20/06/18 15:55:13 -33968      createUsersTestTest worker@545376742
20/06/18 15:55:14 -33470      createUsersTestTest worker@545376742
20/06/18 15:55:14 -33085      createUsersTestTest worker@545376742
20/06/18 15:55:14 -32676      createUsersTestTest worker@545376742
20/06/18 15:55:15 -32254      createUsersTestTest worker@545376742
20/06/18 15:55:15 -31835      createUsersTestTest worker@545376742
20/06/18 15:55:16 -31430      createUsersTestTest worker@545376742
20/06/18 15:55:16 -31013      createUsersTestTest worker@545376742
20/06/18 15:55:46 -921      createWatchTestTest worker@545376742
20/06/18 15:54:25 -82371      deleteDefaultReposTestTest worker@545376742
20/06/18 15:55:41 -6370      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 -6035      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 -5711      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 -5384      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 -5065      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 -4657      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 -4323      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 -3984      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 -3657      deleteGroupTestTest worker@545376742
20/06/18 15:55:44 -3335      deleteGroupTestTest worker@545376742
20/06/18 15:55:37 -10410      deletePermissionsTestTest worker@545376742
20/06/18 15:55:48 493      deletePolicyTestTest worker@545376742
20/06/18 15:54:19 -87607      deleteReposTestTest worker@545376742
20/06/18 15:55:37 -10034      deleteUserTestTest worker@545376742
20/06/18 15:55:37 -9631      deleteUserTestTest worker@545376742
20/06/18 15:55:38 -9284      deleteUserTestTest worker@545376742
20/06/18 15:55:38 -8872      deleteUserTestTest worker@545376742
20/06/18 15:55:39 -8535      deleteUserTestTest worker@545376742
20/06/18 15:55:39 -8135      deleteUserTestTest worker@545376742
20/06/18 15:55:39 -7785      deleteUserTestTest worker@545376742
20/06/18 15:55:40 -7434      deleteUserTestTest worker@545376742
20/06/18 15:55:40 -7084      deleteUserTestTest worker@545376742
20/06/18 15:55:40 -6705      deleteUserTestTest worker@545376742
20/06/18 15:55:47 240      deleteWatchTestTest worker@545376742
20/06/18 15:55:48 1124      enableTLSRabbitMQTestTest worker@545376742
20/06/18 15:55:20 -27289      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 -26472      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 -25929      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 -25429      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 -24965      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 -24517      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 -24060      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 -23618      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 -23146      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 -22678      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:49 1546      getBinaryManagerTestTest worker@545376742
20/06/18 15:55:49 1787      getIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:46 -1164      getPoliciesTestTest worker@545376742
20/06/18 15:55:54 7186      getSystemMonitoringTestTest worker@545376742
20/06/18 15:54:18 -89111      healthCheckTestTest worker@545376742
20/06/18 15:55:48 721      integrationConfigurationTestTest worker@545376742
20/06/18 15:54:19 -87856      pingTestTest worker@545376742
20/06/18 15:55:09 -37814      reCreateDefaultHAReposTestTest worker@545376742
20/06/18 15:55:25 -22199      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:25 -21726      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 -21279      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 -20803      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 -20329      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 -19879      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 -19457      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 -18978      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 -18528      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 -18079      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:54:18 -89294 >>setUp      Test worker@545376742
20/06/18 15:54:18 -89205 >>setUp      Test worker@545376742
20/06/18 15:54:18 -89121 >>setUp      Test worker@545376742
20/06/18 15:54:19 -87608  >>setUp     Test worker@545376742
20/06/18 15:55:44 -3004  >>testSetUp     Test worker@545376742
20/06/18 15:55:49 2058      updateIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:45 -2380      updateIssueEventTestTest worker@545376742
20/06/18 15:55:46 -1562      updatePolicyTestTest worker@545376742
20/06/18 15:55:47 -466      updateWatchTestTest worker@545376742
20/06/18 15:55:16 -30610      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 -30272      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 -29941      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 -29627      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 -29305      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 -28981      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 -28644      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 -28333      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 -27938      verifyUsersTestTest worker@545376742
20/06/18 15:55:20 -27601      verifyUsersTestTest worker@545376742
20/06/18 15:55:55 7481      xrayGetVersionTestTest worker@545376742
20/06/18 15:55:54 7365      xrayPingRequestTestTest worker@545376742
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html new file mode 100644 index 0000000..04743c3 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html @@ -0,0 +1,8 @@ +

Methods that were not run

+ + + + + + +
tests.RepositoryTest.deleteJCRReposTest
tests.RepositoryTest.deleteDefaultJCRReposTest
tests.RepositoryTest.reCreateDefaultJCRReposTest
tests.RepositoryTest.createSupportBundleJCATest
tests.RepositoryTest.checkDefaultJCRReposTest
tests.RepositoryTest.createDefaultJCRReposTest
\ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html new file mode 100644 index 0000000..1101d8f --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html @@ -0,0 +1,212 @@ +

Methods run, sorted chronologically

>> means before, << means after


All API tests

(Hover the method name to see the test class name)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/06/18 15:54:18 0 >>setUp      Test worker@545376742
20/06/18 15:54:18 89 >>setUp      Test worker@545376742
20/06/18 15:54:18 173 >>setUp      Test worker@545376742
20/06/18 15:54:18 183      healthCheckTestTest worker@545376742
20/06/18 15:54:19 1438      pingTestTest worker@545376742
20/06/18 15:54:19 1686  >>setUp     Test worker@545376742
20/06/18 15:54:19 1687      deleteReposTestTest worker@545376742
20/06/18 15:54:21 3163      createDefaultHAReposTestTest worker@545376742
20/06/18 15:54:24 6434      checkDefaultHAReposTestTest worker@545376742
20/06/18 15:54:25 6923      deleteDefaultReposTestTest worker@545376742
20/06/18 15:55:09 51241      checkReposAreDeletedTest worker@545376742
20/06/18 15:55:09 51480      reCreateDefaultHAReposTestTest worker@545376742
20/06/18 15:55:12 54379      createUsersTestTest worker@545376742
20/06/18 15:55:13 54859      createUsersTestTest worker@545376742
20/06/18 15:55:13 55326      createUsersTestTest worker@545376742
20/06/18 15:55:14 55824      createUsersTestTest worker@545376742
20/06/18 15:55:14 56209      createUsersTestTest worker@545376742
20/06/18 15:55:14 56618      createUsersTestTest worker@545376742
20/06/18 15:55:15 57040      createUsersTestTest worker@545376742
20/06/18 15:55:15 57459      createUsersTestTest worker@545376742
20/06/18 15:55:16 57864      createUsersTestTest worker@545376742
20/06/18 15:55:16 58281      createUsersTestTest worker@545376742
20/06/18 15:55:16 58684      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 59022      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 59353      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 59667      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 59989      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 60313      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 60650      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 60961      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 61356      verifyUsersTestTest worker@545376742
20/06/18 15:55:20 61693      verifyUsersTestTest worker@545376742
20/06/18 15:55:20 62005      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 62822      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 63365      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 63865      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 64329      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 64777      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 65234      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 65676      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 66148      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 66616      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:25 67095      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:25 67568      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 68015      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 68491      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 68965      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 69415      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 69837      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 70316      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 70766      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 71215      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 71672      createGroupTestTest worker@545376742
20/06/18 15:55:30 72271      createGroupTestTest worker@545376742
20/06/18 15:55:31 72891      createGroupTestTest worker@545376742
20/06/18 15:55:31 73520      createGroupTestTest worker@545376742
20/06/18 15:55:32 74137      createGroupTestTest worker@545376742
20/06/18 15:55:33 74771      createGroupTestTest worker@545376742
20/06/18 15:55:33 75385      createGroupTestTest worker@545376742
20/06/18 15:55:34 76039      createGroupTestTest worker@545376742
20/06/18 15:55:35 76695      createGroupTestTest worker@545376742
20/06/18 15:55:35 77342      createGroupTestTest worker@545376742
20/06/18 15:55:36 77971      createPermissionsTestTest worker@545376742
20/06/18 15:55:37 78884      deletePermissionsTestTest worker@545376742
20/06/18 15:55:37 79260      deleteUserTestTest worker@545376742
20/06/18 15:55:37 79663      deleteUserTestTest worker@545376742
20/06/18 15:55:38 80010      deleteUserTestTest worker@545376742
20/06/18 15:55:38 80422      deleteUserTestTest worker@545376742
20/06/18 15:55:39 80759      deleteUserTestTest worker@545376742
20/06/18 15:55:39 81159      deleteUserTestTest worker@545376742
20/06/18 15:55:39 81509      deleteUserTestTest worker@545376742
20/06/18 15:55:40 81860      deleteUserTestTest worker@545376742
20/06/18 15:55:40 82210      deleteUserTestTest worker@545376742
20/06/18 15:55:40 82589      deleteUserTestTest worker@545376742
20/06/18 15:55:41 82924      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 83259      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 83583      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 83910      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 84229      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 84637      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 84971      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 85310      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 85637      deleteGroupTestTest worker@545376742
20/06/18 15:55:44 85959      deleteGroupTestTest worker@545376742
20/06/18 15:55:44 86290  >>testSetUp     Test worker@545376742
20/06/18 15:55:44 86291      createIssueEventTestTest worker@545376742
20/06/18 15:55:45 86914      updateIssueEventTestTest worker@545376742
20/06/18 15:55:45 87343      createPolicyTestTest worker@545376742
20/06/18 15:55:46 87732      updatePolicyTestTest worker@545376742
20/06/18 15:55:46 88130      getPoliciesTestTest worker@545376742
20/06/18 15:55:46 88373      createWatchTestTest worker@545376742
20/06/18 15:55:47 88828      updateWatchTestTest worker@545376742
20/06/18 15:55:47 89294      assignPolicyToWatchTestTest worker@545376742
20/06/18 15:55:47 89534      deleteWatchTestTest worker@545376742
20/06/18 15:55:48 89787      deletePolicyTestTest worker@545376742
20/06/18 15:55:48 90015      integrationConfigurationTestTest worker@545376742
20/06/18 15:55:48 90418      enableTLSRabbitMQTestTest worker@545376742
20/06/18 15:55:49 90840      getBinaryManagerTestTest worker@545376742
20/06/18 15:55:49 91081      getIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:49 91352      updateIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:50 91815      createSupportBundleTestTest worker@545376742
20/06/18 15:55:54 96480      getSystemMonitoringTestTest worker@545376742
20/06/18 15:55:54 96659      xrayPingRequestTestTest worker@545376742
20/06/18 15:55:55 96775      xrayGetVersionTestTest worker@545376742
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html new file mode 100644 index 0000000..4f0038f --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html @@ -0,0 +1,103 @@ +

Reporter output

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Ping test. Service is OK
- Delete sample HA repositories. All repositories were successfully deleted
- Create repositories for HA distribution. Successfully created
- Verify HA repos were created. 84 repositories were created
- Delete HA repositories. All repositories were successfully deleted
- Verify repo were deleted. 0 repositories remain
- Re-create repositories for HA distribution. Successfully created
- Create users. User testuser0 created successfully
- Create users. User testuser1 created successfully
- Create users. User testuser2 created successfully
- Create users. User testuser3 created successfully
- Create users. User testuser4 created successfully
- Create users. User testuser5 created successfully
- Create users. User testuser6 created successfully
- Create users. User testuser7 created successfully
- Create users. User testuser8 created successfully
- Create users. User testuser9 created successfully
- Verify created users. User testuser0 was successfully verified
- Verify created users. User testuser1 was successfully verified
- Verify created users. User testuser2 was successfully verified
- Verify created users. User testuser3 was successfully verified
- Verify created users. User testuser4 was successfully verified
- Verify created users. User testuser5 was successfully verified
- Verify created users. User testuser6 was successfully verified
- Verify created users. User testuser7 was successfully verified
- Verify created users. User testuser8 was successfully verified
- Verify created users. User testuser9 was successfully verified
- Generate API keys. Key for testuser0 created successfully
- Generate API keys. Key for testuser1 created successfully
- Generate API keys. Key for testuser2 created successfully
- Generate API keys. Key for testuser3 created successfully
- Generate API keys. Key for testuser4 created successfully
- Generate API keys. Key for testuser5 created successfully
- Generate API keys. Key for testuser6 created successfully
- Generate API keys. Key for testuser7 created successfully
- Generate API keys. Key for testuser8 created successfully
- Generate API keys. Key for testuser9 created successfully
- Re-generate API keys. Key for testuser0 re-generated successfully
- Re-generate API keys. Key for testuser1 re-generated successfully
- Re-generate API keys. Key for testuser2 re-generated successfully
- Re-generate API keys. Key for testuser3 re-generated successfully
- Re-generate API keys. Key for testuser4 re-generated successfully
- Re-generate API keys. Key for testuser5 re-generated successfully
- Re-generate API keys. Key for testuser6 re-generated successfully
- Re-generate API keys. Key for testuser7 re-generated successfully
- Re-generate API keys. Key for testuser8 re-generated successfully
- Re-generate API keys. Key for testuser9 re-generated successfully
- Create group. Group test-group-0 was successfully created
- Create group. Group test-group-1 was successfully created
- Create group. Group test-group-2 was successfully created
- Create group. Group test-group-3 was successfully created
- Create group. Group test-group-4 was successfully created
- Create group. Group test-group-5 was successfully created
- Create group. Group test-group-6 was successfully created
- Create group. Group test-group-7 was successfully created
- Create group. Group test-group-8 was successfully created
- Create group. Group test-group-9 was successfully created
- Create permissions. Permissions successfully created and verified
- Delete permissions. User testPermission has been removed successfully
- Delete user. User testuser0 has been removed successfully
- Delete user. User testuser1 has been removed successfully
- Delete user. User testuser2 has been removed successfully
- Delete user. User testuser3 has been removed successfully
- Delete user. User testuser4 has been removed successfully
- Delete user. User testuser5 has been removed successfully
- Delete user. User testuser6 has been removed successfully
- Delete user. User testuser7 has been removed successfully
- Delete user. User testuser8 has been removed successfully
- Delete user. User testuser9 has been removed successfully
- Delete group. Group test-group-0 has been removed successfully
- Delete group. Group test-group-1 has been removed successfully
- Delete group. Group test-group-2 has been removed successfully
- Delete group. Group test-group-3 has been removed successfully
- Delete group. Group test-group-4 has been removed successfully
- Delete group. Group test-group-5 has been removed successfully
- Delete group. Group test-group-6 has been removed successfully
- Delete group. Group test-group-7 has been removed successfully
- Delete group. Group test-group-8 has been removed successfully
- Delete group. Group test-group-9 has been removed successfully
- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully
- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully
- Create policy. Policy with name security_policy_4206031 created and verified successfully
- Update policy. Policy with name security_policy_4206031 updated and verified successfully
- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]
- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully
- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully
- Assign policy to watch. Policy assigned successfully to Watch
- Delete watch. Watch all-repositories_4206031 has been successfully deleted
- Delete policy. Policy security_policy_4206031 has been successfully deleted
- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified
- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified
- Get binary manager. Binary manager is verified, connected RT version: 7.4.1
- Get repo indexing configuration.
- Update repo indexing configuration. Successfully updated
- Create support bundle. Created with a bug, localhost instead of the hostname
- Get system monitoring status. Data returned successfully
- Get system monitoring status. Data returned successfully
- Get X-ray version. Version: 3.3.0, revision: 3980dcb
\ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html new file mode 100644 index 0000000..6fbff4b --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html @@ -0,0 +1 @@ +testng.xml for All API tests<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All API tests" guice-stage="DEVELOPMENT" verbose="0">
  <groups>
    <run>
      <include name="common"/>
      <include name="pro"/>
      <include name="xray"/>
    </run>
  </groups>
  <test thread-count="5" name="tests.HealthCheckTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.HealthCheckTest"/>
    </classes>
  </test> <!-- tests.HealthCheckTest -->
  <test thread-count="5" name="tests.RepositoryTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.RepositoryTest"/>
    </classes>
  </test> <!-- tests.RepositoryTest -->
  <test thread-count="5" name="tests.SecurityTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.SecurityTest"/>
    </classes>
  </test> <!-- tests.SecurityTest -->
  <test thread-count="5" name="tests.XrayTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.XrayTest"/>
    </classes>
  </test> <!-- tests.XrayTest -->
</suite> <!-- All API tests -->
\ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties new file mode 100644 index 0000000..eca880c --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties @@ -0,0 +1 @@ +[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties new file mode 100644 index 0000000..eca880c --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties @@ -0,0 +1 @@ +[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties new file mode 100644 index 0000000..eca880c --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties @@ -0,0 +1 @@ +[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties new file mode 100644 index 0000000..eca880c --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties @@ -0,0 +1 @@ +[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html new file mode 100644 index 0000000..71ef1bf --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html @@ -0,0 +1,54 @@ + + +Results for All API tests + + + + +

Results for
All API tests

+ + + + + + + + + + +
4 tests4 classes36 methods:
+  chronological
+  alphabetical
+  not run (6)
4 groupsreporter outputtestng.xml
+ +

+

+
tests.HealthCheckTest (2/0/0) + Results +
+
+ + +

+

+
tests.RepositoryTest (6/0/0) + Results +
+
+ + +

+

+
tests.SecurityTest (72/0/0) + Results +
+
+ + +

+

+
tests.XrayTest (19/0/0) + Results +
+
+ \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/index.html b/Ansible/test/tests/build/reports/tests/unified_test/old/index.html new file mode 100644 index 0000000..5845aa4 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/old/index.html @@ -0,0 +1,9 @@ + + + + +

Test results

+ + + +
SuitePassedFailedSkippedtestng.xml
Total9900 
All API tests9900Link
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html b/Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html new file mode 100644 index 0000000..4c1808b --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html @@ -0,0 +1,133 @@ + + + + + +Test results - Package tests + + + + + +
+

Package tests

+ +
+ + + + + +
+
+ + + + + + + +
+
+
99
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1m36.65s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+HealthCheckTest +2001.481s100%
+RepositoryTest +60052.675s100%
+SecurityTest +720031.877s100%
+XrayTest +190010.615s100%
+
+
+ +
+ + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/passed.png b/Ansible/test/tests/build/reports/tests/unified_test/passed.png new file mode 100644 index 0000000000000000000000000000000000000000..45e85bbfd0f5e85def14b896cfd4331675be2759 GIT binary patch literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css b/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css new file mode 100644 index 0000000..6c65926 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css @@ -0,0 +1,309 @@ +body { + margin: 0px 0px 5px 5px; +} + +ul { + margin: 0px; +} + +li { + list-style-type: none; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.navigator-selected { + background: #ffa500; +} + +.wrapper { + position: absolute; + top: 60px; + bottom: 0; + left: 400px; + right: 0; + overflow: auto; +} + +.navigator-root { + position: absolute; + top: 60px; + bottom: 0; + left: 0; + width: 400px; + overflow-y: auto; +} + +.suite { + margin: 0px 10px 10px 0px; + background-color: #fff8dc; +} + +.suite-name { + padding-left: 10px; + font-size: 25px; + font-family: Times; +} + +.main-panel-header { + padding: 5px; + background-color: #9FB4D9; //afeeee; + font-family: monospace; + font-size: 18px; +} + +.main-panel-content { + padding: 5px; + margin-bottom: 10px; + background-color: #DEE8FC; //d0ffff; +} + +.rounded-window { + border-radius: 10px; + border-style: solid; + border-width: 1px; +} + +.rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; + border-style: solid; + border-width: 1px; + overflow: auto; +} + +.light-rounded-window-top { + border-top-right-radius: 10px 10px; + border-top-left-radius: 10px 10px; +} + +.rounded-window-bottom { + border-style: solid; + border-width: 0px 1px 1px 1px; + border-bottom-right-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + overflow: auto; +} + +.method-name { + font-size: 12px; + font-family: monospace; +} + +.method-content { + border-style: solid; + border-width: 0px 0px 1px 0px; + margin-bottom: 10; + padding-bottom: 5px; + width: 80%; +} + +.parameters { + font-size: 14px; + font-family: monospace; +} + +.stack-trace { + white-space: pre; + font-family: monospace; + font-size: 12px; + font-weight: bold; + margin-top: 0px; + margin-left: 20px; +} + +.testng-xml { + font-family: monospace; +} + +.method-list-content { + margin-left: 10px; +} + +.navigator-suite-content { + margin-left: 10px; + font: 12px 'Lucida Grande'; +} + +.suite-section-title { + margin-top: 10px; + width: 80%; + border-style: solid; + border-width: 1px 0px 0px 0px; + font-family: Times; + font-size: 18px; + font-weight: bold; +} + +.suite-section-content { + list-style-image: url(bullet_point.png); +} + +.top-banner-root { + position: absolute; + top: 0; + height: 45px; + left: 0; + right: 0; + padding: 5px; + margin: 0px 0px 5px 0px; + background-color: #0066ff; + font-family: Times; + color: #fff; + text-align: center; +} + +.top-banner-title-font { + font-size: 25px; +} + +.test-name { + font-family: 'Lucida Grande'; + font-size: 16px; +} + +.suite-icon { + padding: 5px; + float: right; + height: 20; +} + +.test-group { + font: 20px 'Lucida Grande'; + margin: 5px 5px 10px 5px; + border-width: 0px 0px 1px 0px; + border-style: solid; + padding: 5px; +} + +.test-group-name { + font-weight: bold; +} + +.method-in-group { + font-size: 16px; + margin-left: 80px; +} + +table.google-visualization-table-table { + width: 100%; +} + +.reporter-method-name { + font-size: 14px; + font-family: monospace; +} + +.reporter-method-output-div { + padding: 5px; + margin: 0px 0px 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0px 0px 0px 1px; + border-style: solid; +} + +.ignored-class-div { + font-size: 14px; + font-family: monospace; +} + +.ignored-methods-div { + padding: 5px; + margin: 0px 0px 5px 20px; + font-size: 12px; + font-family: monospace; + border-width: 0px 0px 0px 1px; + border-style: solid; +} + +.border-failed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0px 0px 0px 10px; + border-color: #f00; +} + +.border-skipped { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0px 0px 0px 10px; + border-color: #edc600; +} + +.border-passed { + border-top-left-radius: 10px 10px; + border-bottom-left-radius: 10px 10px; + border-style: solid; + border-width: 0px 0px 0px 10px; + border-color: #19f52d; +} + +.times-div { + text-align: center; + padding: 5px; +} + +.suite-total-time { + font: 16px 'Lucida Grande'; +} + +.configuration-suite { + margin-left: 20px; +} + +.configuration-test { + margin-left: 40px; +} + +.configuration-class { + margin-left: 60px; +} + +.configuration-method { + margin-left: 80px; +} + +.test-method { + margin-left: 100px; +} + +.chronological-class { + background-color: #0ccff; + border-style: solid; + border-width: 0px 0px 1px 1px; +} + +.method-start { + float: right; +} + +.chronological-class-name { + padding: 0px 0px 0px 5px; + color: #008; +} + +.after, .before, .test-method { + font-family: monospace; + font-size: 14px; +} + +.navigator-suite-header { + font-size: 22px; + margin: 0px 10px 5px 0px; + background-color: #deb887; + text-align: center; +} + +.collapse-all-icon { + padding: 5px; + float: right; +} diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js b/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js new file mode 100644 index 0000000..b147043 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js @@ -0,0 +1,122 @@ +$(document).ready(function() { + $('a.navigator-link').click(function() { + // Extract the panel for this link + var panel = getPanelName($(this)); + + // Mark this link as currently selected + $('.navigator-link').parent().removeClass('navigator-selected'); + $(this).parent().addClass('navigator-selected'); + + showPanel(panel); + }); + + installMethodHandlers('failed'); + installMethodHandlers('skipped'); + installMethodHandlers('passed', true); // hide passed methods by default + + $('a.method').click(function() { + showMethod($(this)); + return false; + }); + + // Hide all the panels and display the first one (do this last + // to make sure the click() will invoke the listeners) + $('.panel').hide(); + $('.navigator-link').first().click(); + + // Collapse/expand the suites + $('a.collapse-all-link').click(function() { + var contents = $('.navigator-suite-content'); + if (contents.css('display') == 'none') { + contents.show(); + } else { + contents.hide(); + } + }); +}); + +// The handlers that take care of showing/hiding the methods +function installMethodHandlers(name, hide) { + function getContent(t) { + return $('.method-list-content.' + name + "." + t.attr('panel-name')); + } + + function getHideLink(t, name) { + var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); + return $(s); + } + + function getShowLink(t, name) { + return $('a.show-methods.' + name + "." + t.attr('panel-name')); + } + + function getMethodPanelClassSel(element, name) { + var panelName = getPanelName(element); + var sel = '.' + panelName + "-class-" + name; + return $(sel); + } + + $('a.hide-methods.' + name).click(function() { + var w = getContent($(this)); + w.hide(); + getHideLink($(this), name).hide(); + getShowLink($(this), name).show(); + getMethodPanelClassSel($(this), name).hide(); + }); + + $('a.show-methods.' + name).click(function() { + var w = getContent($(this)); + w.show(); + getHideLink($(this), name).show(); + getShowLink($(this), name).hide(); + showPanel(getPanelName($(this))); + getMethodPanelClassSel($(this), name).show(); + }); + + if (hide) { + $('a.hide-methods.' + name).click(); + } else { + $('a.show-methods.' + name).click(); + } +} + +function getHashForMethod(element) { + return element.attr('hash-for-method'); +} + +function getPanelName(element) { + return element.attr('panel-name'); +} + +function showPanel(panelName) { + $('.panel').hide(); + var panel = $('.panel[panel-name="' + panelName + '"]'); + panel.show(); +} + +function showMethod(element) { + var hashTag = getHashForMethod(element); + var panelName = getPanelName(element); + showPanel(panelName); + var current = document.location.href; + var base = current.substring(0, current.indexOf('#')) + document.location.href = base + '#' + hashTag; + var newPosition = $(document).scrollTop() - 65; + $(document).scrollTop(newPosition); +} + +function drawTable() { + for (var i = 0; i < suiteTableInitFunctions.length; i++) { + window[suiteTableInitFunctions[i]](); + } + + for (var k in window.suiteTableData) { + var v = window.suiteTableData[k]; + var div = v.tableDiv; + var data = v.tableData + var table = new google.visualization.Table(document.getElementById(div)); + table.draw(data, { + showRowNumber : false + }); + } +} diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml b/Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml new file mode 100644 index 0000000..5d158a9 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml @@ -0,0 +1,2134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng.css b/Ansible/test/tests/build/reports/tests/unified_test/testng.css new file mode 100644 index 0000000..3904800 --- /dev/null +++ b/Ansible/test/tests/build/reports/tests/unified_test/testng.css @@ -0,0 +1,9 @@ +.invocation-failed, .test-failed { background-color: #DD0000; } +.invocation-percent, .test-percent { background-color: #006600; } +.invocation-passed, .test-passed { background-color: #00AA00; } +.invocation-skipped, .test-skipped { background-color: #CCCC00; } + +.main-page { + font-size: x-large; +} + diff --git a/Ansible/test/tests/build/resources/test/enableRabbitMQ.json b/Ansible/test/tests/build/resources/test/enableRabbitMQ.json new file mode 100644 index 0000000..c6e54d4 --- /dev/null +++ b/Ansible/test/tests/build/resources/test/enableRabbitMQ.json @@ -0,0 +1,11 @@ +{ + "sslInsecure": false, + "maxDiskDataUsage": 80, + "monitorSamplingInterval": 300, + "mailNoSsl": false, + "messageMaxTTL": 7, + "jobInterval": 86400, + "allowSendingAnalytics": true, + "httpsPort": 443, + "enableTlsConnectionToRabbitMQ": true +} \ No newline at end of file diff --git a/Ansible/test/tests/build/resources/test/integration.json b/Ansible/test/tests/build/resources/test/integration.json new file mode 100644 index 0000000..08ba303 --- /dev/null +++ b/Ansible/test/tests/build/resources/test/integration.json @@ -0,0 +1,9 @@ +{ + "vendor": "whitesource5", + "api_key": "12345", + "enabled": true, + "context": "project_id", + "url": "https://saas.whitesourcesoftware.com/xray", + "description": "WhiteSource provides a simple yet powerful open source security and licenses management solution. More details at http://www.whitesourcesoftware.com.", + "test_url": "https://saas.whitesourcesoftware.com/xray/api/checkauth" +} \ No newline at end of file diff --git a/Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml b/Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml new file mode 100644 index 0000000..ef1f5fd --- /dev/null +++ b/Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml @@ -0,0 +1,554 @@ +localRepositories: + libs-release-local: + type: maven + description: "production deployment" + repoLayout: maven-2-default + xray: + enabled: true + libs-snapshot-local: + type: maven + description: "snapshot deployment" + repoLayout: maven-2-default + xray: + enabled: true + maven-prod-local: + type: maven + description: "production release deployment" + repoLayout: maven-2-default + xray: + enabled: true + maven-dev-local: + type: maven + description: "development release deployment" + repoLayout: maven-2-default + xray: + enabled: true + maven-release-local: + type: maven + description: "development release deployment" + repoLayout: maven-2-default + xray: + enabled: true + maven-snapshot-local: + type: maven + description: "development release deployment" + repoLayout: maven-2-default + xray: + enabled: true + gradle-prod-local: + type: gradle + description: "production deployment" + repoLayout: gradle-default + xray: + enabled: true + gradle-dev-local: + type: gradle + description: "development deployment" + repoLayout: gradle-default + xray: + enabled: true + tomcat-local: + type: generic + description: "used by demo" + repoLayout: simple-default + xray: + enabled: true + generic-prod-local: + type: generic + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + generic-dev-local: + type: generic + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + ivy-prod-local: + type: ivy + description: "production deployment" + repoLayout: "ivy-default" + xray: + enabled: true + ivy-dev-local: + type: ivy + description: "development deployment" + repoLayout: ivy-default + xray: + enabled: true + helm-prod-local: + type: helm + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + helm-dev-local: + type: helm + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + sbt-prod-local: + type: sbt + description: "production deployment" + repoLayout: sbt-default + xray: + enabled: true + sbt-dev-local: + type: sbt + description: "development deployment" + repoLayout: sbt-default + xray: + enabled: true + nuget-prod-local: + type: nuget + description: "production deployment" + repoLayout: nuget-default + xray: + enabled: true + nuget-dev-local: + type: nuget + description: "development deployment" + repoLayout: nuget-default + xray: + enabled: true + gems-prod-local: + type: gems + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + gems-dev-local: + type: gems + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + npm-prod-local: + type: npm + description: "production deployment" + repoLayout: npm-default + xray: + enabled: true + npm-dev-local: + type: npm + description: "development deployment" + repoLayout: npm-default + xray: + enabled: true + bower-prod-local: + type: bower + description: "production deployment" + repoLayout: bower-default + xray: + enabled: true + bower-dev-local: + type: bower + description: "development deployment" + repoLayout: bower-default + xray: + enabled: true + debian-prod-local: + type: debian + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + debian-dev-local: + type: debian + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + php-prod-local: + type: composer + description: "production deployment" + repoLayout: composer-default + xray: + enabled: true + php-dev-local: + type: composer + description: "development deployment" + repoLayout: composer-default + xray: + enabled: true + pypi-prod-local: + type: pypi + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + pypi-dev-local: + type: pypi + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + docker-prod-local: + type: docker + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + docker-stage-local: + type: docker + description: "stage deployment" + repoLayout: simple-default + xray: + enabled: true + docker-dev-local: + type: docker + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + docker-local: + type: docker + description: "docker deployment" + repoLayout: simple-default + xray: + enabled: true + docker-push: + type: docker + description: "docker push repo for push replication testing" + repoLayout: simple-default + xray: + enabled: true + vagrant-prod-local: + type: vagrant + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + vagrant-dev-local: + type: vagrant + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + gitlfs-prod-local: + type: gitlfs + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + gitlfs-dev-local: + type: gitlfs + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + rpm-prod-local: + type: yum + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + rpm-dev-local: + type: yum + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + conan-prod-local: + type: conan + description: "production deployment" + repoLayout: conan-default + xray: + enabled: true + conan-dev-local: + type: conan + description: "development deployment" + repoLayout: conan-default + xray: + enabled: true + chef-prod-local: + type: chef + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + chef-dev-local: + type: chef + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + puppet-prod-local: + type: puppet + description: "production deployment" + repoLayout: puppet-default + xray: + enabled: true + puppet-dev-local: + type: puppet + description: "development deployment" + repoLayout: puppet-default + xray: + enabled: true + go-prod-local: + type: go + description: "production deployment" + repoLayout: go-default + xray: + enabled: true + go-staging-local: + type: go + description: "production deployment" + repoLayout: go-default + xray: + enabled: true +remoteRepositories: + docker-remote: + type: docker + url: https://registry-1.docker.io + repoLayout: simple-default + enableTokenAuthentication: true + xray: + enabled: true + helm-remote: + type: helm + url: https://storage.googleapis.com/kubernetes-charts + repoLayout: simple-default + xray: + enabled: true + jcenter: + type: maven + url: https://jcenter.bintray.com + repoLayout: maven-2-default + xray: + enabled: true + npm-remote: + type: npm + url: https://registry.npmjs.org + repoLayout: npm-default + xray: + enabled: true + nuget-remote: + type: nuget + url: https://www.nuget.org/ + repoLayout: nuget-default + xray: + enabled: true + bower-remote: + type: bower + url: https://github.com/ + repoLayout: bower-default + xray: + enabled: true + gems-remote: + type: gems + url: https://rubygems.org/ + repoLayout: simple-default + xray: + enabled: true + debian-remote: + type: debian + url: http://archive.ubuntu.com/ubuntu/ + repoLayout: simple-default + xray: + enabled: true + php-remote: + type: composer + url: https://github.com/ + repoLayout: composer-default + xray: + enabled: true + pypi-remote: + type: pypi + url: https://files.pythonhosted.org + repoLayout: simple-default + xray: + enabled: true + rpm-remote: + type: yum + url: http://mirror.centos.org/centos/ + repoLayout: simple-default + xray: + enabled: true + chef-remote: + type: chef + url: https://supermarket.chef.io + repoLayout: simple-default + xray: + enabled: true + puppet-remote: + type: puppet + url: https://forgeapi.puppetlabs.com/ + repoLayout: puppet-default + xray: + enabled: true +virtualRepositories: + maven-release-virtual: + type: maven + repositories: + - maven-prod-local + - jcenter + - maven-release-local + - libs-release-local + description: "maven release virtual repositories" + defaultDeploymentRepo: maven-release-local + maven-snapshot-virtual: + type: maven + repositories: + - maven-snapshot-local + - jcenter + - maven-dev-local + - libs-snapshot-local + description: "maven snapshot virtual repositories" + defaultDeploymentRepo: maven-snapshot-local + gradle-virtual: + type: gradle + repositories: + - gradle-dev-local + - jcenter + - gradle-prod-local + - libs-release-local + description: "gradle virtual repositories" + defaultDeploymentRepo: gradle-dev-local + docker-PLACEHOLDERFORBUILDSTEP: + type: docker + repositories: + - docker-local + - docker-remote + - docker-dev-local + - docker-prod-local + - docker-stage-local + - docker-push + description: "docker virtual" + defaultDeploymentRepo: docker-stage-local + docker-virtual: + type: docker + repositories: + - docker-local + - docker-remote + - docker-dev-local + - docker-prod-local + - docker-stage-local + - docker-push + description: "docker virtual" + defaultDeploymentRepo: docker-stage-local + libs-release: + type: maven + repositories: + - libs-release-local + - jcenter + description: "maven libraries virtual" + defaultDeploymentRepo: libs-release-local + libs-snapshot: + type: maven + repositories: + - libs-snapshot-local + - jcenter + description: "maven libraries virtual" + defaultDeploymentRepo: libs-snapshot-local + ivy-virtual: + type: ivy + repositories: + - ivy-prod-local + - ivy-dev-local + - jcenter + description: "ivy virtual" + defaultDeploymentRepo: ivy-dev-local + generic-virtual: + type: generic + repositories: + - generic-prod-local + - generic-dev-local + description: "generic virtual" + defaultDeploymentRepo: generic-dev-local + helm-virtual: + type: helm + repositories: + - helm-prod-local + - helm-dev-local + - helm-remote + description: "helm virtual" + defaultDeploymentRepo: helm-dev-local + nuget-virtual: + type: nuget + repositories: + - nuget-prod-local + - nuget-dev-local + - nuget-remote + description: "nuget virtual" + defaultDeploymentRepo: nuget-dev-local + npm-virtual: + type: npm + repositories: + - npm-dev-local + - npm-remote + - npm-prod-local + description: "npm virtual" + defaultDeploymentRepo: npm-dev-local + chef-virtual: + type: chef + repositories: + - chef-dev-local + - chef-remote + - chef-prod-local + description: "chef virtual" + defaultDeploymentRepo: chef-dev-local + puppet-virtual: + type: puppet + repositories: + - puppet-dev-local + - puppet-remote + - puppet-prod-local + description: "puppet virtual" + defaultDeploymentRepo: puppet-dev-local + rpm-virtual: + type: yum + repositories: + - rpm-dev-local + - rpm-remote + - rpm-prod-local + description: "rpm virtual" + defaultDeploymentRepo: rpm-dev-local + gitlfs-virtual: + type: gitlfs + repositories: + - gitlfs-dev-local + - gitlfs-prod-local + description: "gitlfs virtual" + defaultDeploymentRepo: gitlfs-dev-local + pypi-virtual: + type: pypi + repositories: + - pypi-dev-local + - pypi-prod-local + - pypi-remote + description: "pypi virtual" + defaultDeploymentRepo: pypi-dev-local + bower-virtual: + type: bower + repositories: + - bower-dev-local + - bower-prod-local + - bower-remote + description: "bower virtual" + defaultDeploymentRepo: bower-dev-local + gems-virtual: + type: gems + repositories: + - gems-dev-local + - gems-prod-local + - gems-remote + description: "gems virtual" + defaultDeploymentRepo: gems-dev-local + sbt-virtual: + type: sbt + repositories: + - sbt-dev-local + - sbt-prod-local + - jcenter + description: "sbt virtual" + defaultDeploymentRepo: sbt-dev-local + go-staging: + type: go + repositories: + - go-staging-local + - go-prod-local + description: "go virtual" + defaultDeploymentRepo: go-staging-local diff --git a/Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml b/Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml new file mode 100644 index 0000000..38a5feb --- /dev/null +++ b/Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml @@ -0,0 +1,119 @@ +localRepositories: + tomcat-local: + type: generic + description: "used by demo" + repoLayout: simple-default + xray: + enabled: true + generic-prod-local: + type: generic + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + generic-dev-local: + type: generic + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + helm-prod-local: + type: helm + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + helm-dev-local: + type: helm + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + docker-generator: + type: docker + description: "docker generator repo for generation testing" + repoLayout: simple-default + xray: + enabled: true + docker-prod-local: + type: docker + description: "production deployment" + repoLayout: simple-default + xray: + enabled: true + docker-stage-local: + type: docker + description: "stage deployment" + repoLayout: simple-default + xray: + enabled: true + docker-dev-local: + type: docker + description: "development deployment" + repoLayout: simple-default + xray: + enabled: true + docker-local: + type: docker + description: "docker deployment" + repoLayout: simple-default + xray: + enabled: true + docker-push: + type: docker + description: "docker push repo for push replication testing" + repoLayout: simple-default + xray: + enabled: true +virtualRepositories: + generic-virtual: + type: generic + repositories: + - generic-prod-local + - generic-dev-local + description: "generic virtual" + defaultDeploymentRepo: generic-dev-local + helm-virtual: + type: helm + repositories: + - helm-prod-local + - helm-dev-local + - helm-remote + description: "helm virtual" + defaultDeploymentRepo: helm-dev-local + docker-PLACEHOLDERFORBUILDSTEP: + type: docker + repositories: + - docker-local + - docker-remote + - docker-dev-local + - docker-prod-local + - docker-stage-local + - docker-push + description: "docker virtual" + defaultDeploymentRepo: docker-stage-local + docker-virtual: + type: docker + repositories: + - docker-local + - docker-remote + - docker-dev-local + - docker-prod-local + - docker-stage-local + - docker-push + description: "docker virtual" + defaultDeploymentRepo: docker-stage-local +remoteRepositories: + helm-remote: + type: helm + url: https://storage.googleapis.com/kubernetes-charts + repoLayout: simple-default + xray: + enabled: true + docker-remote: + type: docker + url: https://registry-1.docker.io + repoLayout: simple-default + enableTokenAuthentication: true + xray: + enabled: true \ No newline at end of file diff --git a/Ansible/test/tests/build/resources/test/repositories/artifact.zip b/Ansible/test/tests/build/resources/test/repositories/artifact.zip new file mode 100644 index 0000000000000000000000000000000000000000..0e86cb54fe2c3d52b3946278043f30b86a274eaa GIT binary patch literal 519 zcmWIWW@Zs#-~d9!MSTGbP@o8;IT;ifN>YnU^ePi`b3#LS8Q9m?Op62Itw3B_!Og(P z@|BT+0jQmU!COb`q>s0c-bwvcTOI`kc&yd%)IH^Wrt`ech9DqQ?;#UIfHymbnd!_w z%0T5H^8>Kjya6a90<<|k-q+FDKR7~PFCM!ic40aqIYBfzJs~OKgRf862mY{*fCi=s z63prX(u{?&0?j|9B|4b;6crr<)I5$eDTp})ALiYS5 zdg^$F@^P?f#zYwF^0|D^y|;#A5hKX;*BWA4Vu0=gxiP?-kx7IZ5pu{r1BDz6ENKL> puzLYZIHDViY$YgIU|>mO6_80zAO(1{vVlxt0>Yg@+JX_p0|0lTf`|YB literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/resources/test/testenv.yaml b/Ansible/test/tests/build/resources/test/testenv.yaml new file mode 100644 index 0000000..08e7b33 --- /dev/null +++ b/Ansible/test/tests/build/resources/test/testenv.yaml @@ -0,0 +1,6 @@ +artifactory: + url: http://Ansib-Appli-M90CVY19FRF6-334171479.us-east-1.elb.amazonaws.com + external_ip: Ansib-Appli-M90CVY19FRF6-334171479.us-east-1.elb.amazonaws.com + distribution: artifactory_ha + rt_username: admin + rt_password: password \ No newline at end of file diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml new file mode 100644 index 0000000..00e9581 --- /dev/null +++ b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml new file mode 100644 index 0000000..5d25dcf --- /dev/null +++ b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml new file mode 100644 index 0000000..4c0f655 --- /dev/null +++ b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml new file mode 100644 index 0000000..688a145 --- /dev/null +++ b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ansible/test/tests/build/test-results/unified_test/binary/output.bin b/Ansible/test/tests/build/test-results/unified_test/binary/output.bin new file mode 100644 index 0000000..462e50c --- /dev/null +++ b/Ansible/test/tests/build/test-results/unified_test/binary/output.bin @@ -0,0 +1,107 @@ +p- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy +Y- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy +p- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy +p- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy +- Ping test. Service is OK +L- Delete sample HA repositories. All repositories were successfully deleted +*383 changes to config merged successfully +@- Create repositories for HA distribution. Successfully created +%Number of created repositories is 84 +=- Verify HA repos were created. 84 repositories were created +E- Delete HA repositories. All repositories were successfully deleted + 2- Verify repo were deleted. 0 repositories remain + +*383 changes to config merged successfully + +C- Re-create repositories for HA distribution. Successfully created + 4- Create users. User testuser0 created successfully + 4- Create users. User testuser1 created successfully + 4- Create users. User testuser2 created successfully + 4- Create users. User testuser3 created successfully + 4- Create users. User testuser4 created successfully + 4- Create users. User testuser5 created successfully + 4- Create users. User testuser6 created successfully + 4- Create users. User testuser7 created successfully + 4- Create users. User testuser8 created successfully + 4- Create users. User testuser9 created successfully + A- Verify created users. User testuser0 was successfully verified + A- Verify created users. User testuser1 was successfully verified + A- Verify created users. User testuser2 was successfully verified + A- Verify created users. User testuser3 was successfully verified + A- Verify created users. User testuser4 was successfully verified + A- Verify created users. User testuser5 was successfully verified + A- Verify created users. User testuser6 was successfully verified + A- Verify created users. User testuser7 was successfully verified + A- Verify created users. User testuser8 was successfully verified + A- Verify created users. User testuser9 was successfully verified + <- Generate API keys. Key for testuser0 created successfully + !<- Generate API keys. Key for testuser1 created successfully + "<- Generate API keys. Key for testuser2 created successfully + #<- Generate API keys. Key for testuser3 created successfully + $<- Generate API keys. Key for testuser4 created successfully + %<- Generate API keys. Key for testuser5 created successfully + &<- Generate API keys. Key for testuser6 created successfully + '<- Generate API keys. Key for testuser7 created successfully + (<- Generate API keys. Key for testuser8 created successfully + )<- Generate API keys. Key for testuser9 created successfully + *D- Re-generate API keys. Key for testuser0 re-generated successfully + +D- Re-generate API keys. Key for testuser1 re-generated successfully + ,D- Re-generate API keys. Key for testuser2 re-generated successfully + -D- Re-generate API keys. Key for testuser3 re-generated successfully + .D- Re-generate API keys. Key for testuser4 re-generated successfully + /D- Re-generate API keys. Key for testuser5 re-generated successfully + 0D- Re-generate API keys. Key for testuser6 re-generated successfully + 1D- Re-generate API keys. Key for testuser7 re-generated successfully + 2D- Re-generate API keys. Key for testuser8 re-generated successfully + 3D- Re-generate API keys. Key for testuser9 re-generated successfully + 4<- Create group. Group test-group-0 was successfully created + 5<- Create group. Group test-group-1 was successfully created + 6<- Create group. Group test-group-2 was successfully created + 7<- Create group. Group test-group-3 was successfully created + 8<- Create group. Group test-group-4 was successfully created + 9<- Create group. Group test-group-5 was successfully created + :<- Create group. Group test-group-6 was successfully created + ;<- Create group. Group test-group-7 was successfully created + <<- Create group. Group test-group-8 was successfully created + =<- Create group. Group test-group-9 was successfully created + >D- Create permissions. Permissions successfully created and verified + ?H- Delete permissions. User testPermission has been removed successfully + @<- Delete user. User testuser0 has been removed successfully + A<- Delete user. User testuser1 has been removed successfully + B<- Delete user. User testuser2 has been removed successfully + C<- Delete user. User testuser3 has been removed successfully + D<- Delete user. User testuser4 has been removed successfully + E<- Delete user. User testuser5 has been removed successfully + F<- Delete user. User testuser6 has been removed successfully + G<- Delete user. User testuser7 has been removed successfully + H<- Delete user. User testuser8 has been removed successfully + I<- Delete user. User testuser9 has been removed successfully + JA- Delete group. Group test-group-0 has been removed successfully + KA- Delete group. Group test-group-1 has been removed successfully + LA- Delete group. Group test-group-2 has been removed successfully + MA- Delete group. Group test-group-3 has been removed successfully + NA- Delete group. Group test-group-4 has been removed successfully + OA- Delete group. Group test-group-5 has been removed successfully + PA- Delete group. Group test-group-6 has been removed successfully + QA- Delete group. Group test-group-7 has been removed successfully + RA- Delete group. Group test-group-8 has been removed successfully + SA- Delete group. Group test-group-9 has been removed successfully +UTY- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully +UVY- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully +UW\- Create policy. Policy with name security_policy_4206031 created and verified successfully +UX\- Update policy. Policy with name security_policy_4206031 updated and verified successfully +UYe- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031] +UZd- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully +U[d- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully +U\@- Assign policy to watch. Policy assigned successfully to Watch +U]M- Delete watch. Watch all-repositories_4206031 has been successfully deleted +U^N- Delete policy. Policy security_policy_4206031 has been successfully deleted +U_n- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified +U`W- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified +UaN- Get binary manager. Binary manager is verified, connected RT version: 7.4.1 +Ub#- Get repo indexing configuration. +Uc;- Update repo indexing configuration. Successfully updated +UdO- Create support bundle. Created with a bug, localhost instead of the hostname +Ue;- Get system monitoring status. Data returned successfully +Uf;- Get system monitoring status. Data returned successfully +Ug7- Get X-ray version. Version: 3.3.0, revision: 3980dcb diff --git a/Ansible/test/tests/build/test-results/unified_test/binary/output.bin.idx b/Ansible/test/tests/build/test-results/unified_test/binary/output.bin.idx new file mode 100644 index 0000000000000000000000000000000000000000..b5acf17888d9f99808142e3da8c61d53eebffa75 GIT binary patch literal 3276 zcmZYBIZTsr9L8~>rO>yOmcA`*X+01R4iCIcCuUaHJumdn|sbD9?l%;}Q6g5i)yIqlDL(1E* z2f&8ZxSp^Vz=qV6f_(rsq-qNIW=XRl?QJ;VPDryM?QQ4>up#YjI0*P{sT&TtqLq_c z`xP7pOjs&7LNQ~h;3&nSrGjIw$gm;fZ5RNsAv2*T90#x=Go#=HfDM^N1>EgIHiX`W zlkS9&4WYN;6o3t(x8bw{S$+{^Bf8-XfGydI0)CuiCxMd+&QbiZRB+xEIqsjiyaMht zxl!P#f(sPyEEVv@ky`*PC>U}@8{e00y$UXemmp6pl?+pSw^VS&6?r~edGE7z74XVZ zPq;==vsA#1pup=X3@Nzoo>};8sep@I7+z_f~08!9BohO9l5SxTTcl6+CdD%&(bphXSr(c?>wF F;2*`ktrGwM literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/test-results/unified_test/binary/results.bin b/Ansible/test/tests/build/test-results/unified_test/binary/results.bin new file mode 100644 index 0000000000000000000000000000000000000000..61f24b12b03a3ddba41229db56b6609c764910ef GIT binary patch literal 10699 zcmchddu$X{7{yO14-p?A2%@6PL#5D`w%aEtPzpkYYHdpeQE}PcF01Wsot;&im>5Hp zs0kFYP*kD_Yy8KkXap2g5XBcDXhf+GR8qlL5rQa+Iy3j{F5WxK?sYc&Lzp|?`OWE_ znX})Wne^^wE!9~_4`o*~Z&>r|%{9iB%@B~Ly|?Ch_q0Bnyc+Z9Y-WgQA+vZ+&dnoD zMA#U}$#k(skG~;j;%)U>(3kBEHfFk-JfYBCL9H$~&z<2&jD6|c#*6)NwnWN}*~ldu zxk=kl5#wXBv9<%}NH+3fHuA_uUeY#H#5hbgUj7W{N;cdv8*Z}UPTGcw826ElS7xKH zWFtRjBcE*KCv8JTj1^>K-C^{TY!t+76p)RAq;05(@eJA6(1!CQ8-+0&g=C{JX&WkH ztR@?;jYEIQMp4X05!on8+J=f4tz={4M;IX4D2~}ECL6^`+fWf>71?15S`3nGs05)SF+Lz0TUOx$iKG&Q zj>OnNHs0Ec!4gR&2px&Bg>1Y%1Q$vql^}E^##XZNjt3V>B$Xg^B*reXv286bmPjf= z=tzupWaHg~7$T8Wg3yr|4^eKsAHpRPNhJs!iK8dwgST<1L{bStM`Em}lk(vSxHhNx zSb%9pJ6c*A!9c%diH(~q(+)E=i2s?G^`vO71ly8^@PaVqiZoPZ;A0e>

Ea&mY6(_BfRoc22;n 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 M$fN%#-U_JfHyBYQy8r+H literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/tmp/unified_test/jar_extract_15312985063730868442_tmp b/Ansible/test/tests/build/tmp/unified_test/jar_extract_15312985063730868442_tmp new file mode 100644 index 0000000000000000000000000000000000000000..51559244012cc3f12c38f7961e835eb7afa5d2bf GIT binary patch literal 965 zcmZ`%O>fgc5Pj=7I5BS1CNyozM;cndb`h2kw;(ta@gXH}2+Dn9mej3dM~)qdD?bLV zAn_#*`~ZFwFdG{uf#k3=JF_$Iy`9~kzrOzfa1Rzka~Or;^o`^5VCX!V?OzPegd6vg z@i>fP4UA#yj8A!5k{)U(Fzl^s)lj6<6<~KH4nuh)Vt(TD$%J9Ivxw6Dd(dXMaNi5O z_yI$~wE6~gT-2e$V5kj6{7Ag!i67_n3=Pv-17%~&a+?|o{Q+I@W&$3&}6X9|IpUYrjC}516-$xoDc&;rQ-$Sc`_P^ z=p`Tcl&N+?m-~Glc{0wD8@-sj=UqO|V!an8kt-g1zEE25n ziXKu0BfnvPrA21@Gio0xq2LDDO%%vBsp$X)TDVD(kv8BGb|_+~qmqF+=CS@mQZC(;Dxm!VBx}q1 literal 0 HcmV?d00001 diff --git a/Ansible/test/tests/build/tmp/unified_test/jar_extract_4590906891718676027_tmp b/Ansible/test/tests/build/tmp/unified_test/jar_extract_4590906891718676027_tmp new file mode 100644 index 0000000..e69de29 diff --git a/Ansible/test/tests/gradle/wrapper/gradle-wrapper.properties b/Ansible/test/tests/gradle/wrapper/gradle-wrapper.properties index 09c586a..f9f4003 100644 --- a/Ansible/test/tests/gradle/wrapper/gradle-wrapper.properties +++ b/Ansible/test/tests/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ #Wed Feb 12 10:23:21 PST 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists diff --git a/Ansible/test/tests/src/test/resources/testenv.yaml b/Ansible/test/tests/src/test/resources/testenv.yaml index 9cb1760..55ff648 100644 --- a/Ansible/test/tests/src/test/resources/testenv.yaml +++ b/Ansible/test/tests/src/test/resources/testenv.yaml @@ -1,6 +1,6 @@ artifactory: - url: http://Ansib-Appli-1RBHLINBKUHSU-1876699665.us-east-1.elb.amazonaws.com - external_ip: Ansib-Appli-1RBHLINBKUHSU-1876699665.us-east-1.elb.amazonaws.com + url: urlval + external_ip: ipval distribution: artifactory_ha rt_username: admin - rt_password: password \ No newline at end of file + rt_password: passval \ No newline at end of file diff --git a/ansible.cfg b/ansible.cfg index f0524a4..3d08974 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -3,7 +3,7 @@ collections_paths = ~/.ansible/collections:/usr/share/ansible/collections:collection # Installs roles into [current dir]/roles/namespace.rolename -roles_path = Ansible/collection/jfrog/ansible/roles +roles_path = Ansible/ansible_collections/jfrog/installers/roles host_key_checking = false From 27d41ff3443325a1850dbc055b3fbd4e48831694 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Fri, 19 Jun 2020 10:57:05 -0700 Subject: [PATCH 05/20] Documentation updates. Fixes AWS test/playbook. --- Ansible/README.md | 16 ++- .../jfrog/installers/README.md | 102 +++++++----------- .../jfrog/installers/galaxy.yml | 6 +- .../installers/jfrog-installers-1.0.5.tar.gz | Bin 25876 -> 0 bytes .../installers/jfrog-installers-1.0.6.tar.gz | Bin 0 -> 25663 bytes Ansible/examples/playbook-rt-ha.yml | 4 + Ansible/examples/playbook-rt-xray.yml | 6 ++ Ansible/examples/playbook-rt.yml | 4 + Ansible/examples/playbook-ssl.yml | 4 + Ansible/examples/playbook-xray.yml | 2 + Ansible/pipelines.yaml | 12 +++ Ansible/test/aws/playbook.yaml | 4 +- 12 files changed, 89 insertions(+), 71 deletions(-) delete mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz create mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.6.tar.gz diff --git a/Ansible/README.md b/Ansible/README.md index f08e7dd..591c237 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -10,9 +10,23 @@ This Ansible directory consists of the following directories that support the JF ## Getting Started 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. + ``` ansible-galaxy collection install jfrog.installers ``` + + Ensure you reference the collection in your playbook when using these roles. + + ``` + --- + - hosts: xray + collections: + - jfrog.installers + roles: + - xray + + ``` + 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. @@ -21,7 +35,7 @@ This Ansible directory consists of the following directories that support the JF 5. Then execute with the following command to provision the JFrog software with Ansible. Variables can also be passed in at the command-line. - ``` +``` ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" ``` diff --git a/Ansible/ansible_collections/jfrog/installers/README.md b/Ansible/ansible_collections/jfrog/installers/README.md index e0449a9..bb6b243 100644 --- a/Ansible/ansible_collections/jfrog/installers/README.md +++ b/Ansible/ansible_collections/jfrog/installers/README.md @@ -1,70 +1,42 @@ # JFrog Ansible Installers Collection -This collection provides roles for installing Artifactory and Xray. Additionally, it provides optional SSL and Postgresql roles if these are needed for your deployment. -## Roles Provided -### artifactory -The artifactory role installs the Artifactory Pro software onto the host. Per the Vars below, it will configure a node as primary or secondary. This role uses secondary roles artifactory_nginx to install nginx. - -### artifactory_nginx_ssl -The artifactory_nginx_ssl role installs and configures nginx for SSL. - -### postgres -The postgres role will install Postgresql software and configure a database and user to support an Artifactory or Xray server. - -### xray -The xray role will install Xray software onto the host. An Artifactory server and Postgress database is required. - -## Vars Required -The following Vars must be configured. - -### databsase vars -* _db_users_: This is a list of database users to create. eg. db_users: - { db_user: "artifactory", db_password: "Art1fAct0ry" } -* _dbs_: This is the database to create. eg. dbs: - { db_name: "artifactory", db_owner: "artifactory" } - -### artifactory vars -* _artifactory_version_: The version of Artifactory to install. eg. "7.4.1" -* _master_key_: This is the Artifactory [Master Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). -* _join_key_: This is the Artifactory [Join Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). -* _db_download_url_: This is the download URL for the JDBC driver for your database. eg. "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar" -* _db_type_: This is the database type. eg. "postgresql" -* _db_driver_: This is the JDBC driver class. eg. "org.postgresql.Driver" -* _db_url_: This is the JDBC database url. eg. "jdbc:postgresql://10.0.0.120:5432/artifactory" -* _db_user_: The database user to configure. eg. "artifactory" -* _db_password_: The database password to configure. "Art1fact0ry" -* _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" -* _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. **If specified, this file will be used rather than constructing a file from the parameters above.** -* _binary_store_file_: Your own [binary store file](https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore) can be used. If specified, the default cluster-file-system will not be used. - -### primary vars (vars used by the primary Artifactory server) -* _artifactory_is_primary_: For the primary node this must be set to **true**. -* _artifactory_license1 - 5_: These are the cluster licenses. -* _artifactory_license_file_: Your own license file can be used. **If specified, a license file constructed from the licenses above will not be used.** - -### secondary vars (vars used by the secondary Artifactory server) -* _artifactory_is_primary_: For the secondary node(s) this must be set to **false**. - -### ssl vars (Used with artifactory_nginx_ssl role) -* _certificate_: This is the SSL cert. -* _certificate_key_: This is the SSL private key. - -### xray vars -* _xray_version_: The version of Artifactory to install. eg. "3.3.0" -* _jfrog_url_: This is the URL to the Artifactory base URL. eg. "http://ec2-54-237-207-135.compute-1.amazonaws.com" -* _master_key_: This is the Artifactory [Master Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). -* _join_key_: This is the Artifactory [Join Key](https://www.jfrog.com/confluence/display/JFROG/Managing+Keys). See below to [autogenerate this key](#autogenerating-master-and-join-keys). -* _db_type_: This is the database type. eg. "postgresql" -* _db_driver_: This is the JDBC driver class. eg. "org.postgresql.Driver" -* _db_url_: This is the database url. eg. "postgres://10.0.0.59:5432/xraydb?sslmode=disable" -* _db_user_: The database user to configure. eg. "xray" -* _db_password_: The database password to configure. "xray" -* _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. If specified, this file will be used rather than constructing a file from the parameters above. - -## Example Inventory and Playbooks -Example playbooks are located in the [examples](../examples) directory. This directory contains several example inventory and playbooks for different Artifactory, HA and Xray architectures. - -## Executing a Playbook -``` -ansible-playbook -i +This Ansible directory consists of the following directories that support the JFrog Ansible collection. + + * [ansible_collections directory](ansible_collections) - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection [README](ansible_collections/README.md) for details on the available roles and variables. + * [examples directory](examples) - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups. + * [infra directory](infra) - This directory contains example infrastructure templates that can be used for testing and as example deployments. + * [test directory](test) - This directory contains Gradle tests that can be used to verify a deployment. It also has Ansible playbooks for creating infrastructure, provisioning software and testing with Gradle. + + ## Getting Started + + 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. + + ``` + ansible-galaxy collection install jfrog.installers + ``` + + Ensure you reference the collection in your playbook when using these roles. + + ``` + --- + - hosts: xray + collections: + - jfrog.installers + roles: + - xray + + ``` + + 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. + + 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. + + 4. Create your playbook. Use one of the examples from the [examples directory](examples) to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software. + + 5. Then execute with the following command to provision the JFrog software with Ansible. Variables can also be passed in at the command-line. + + ``` +ansible-playbook -i hosts.yml playbook.yml --extra-vars "master_key=$(openssl rand -hex 16) join_key=$(openssl rand -hex 16)" ``` ## Autogenerating Master and Join Keys diff --git a/Ansible/ansible_collections/jfrog/installers/galaxy.yml b/Ansible/ansible_collections/jfrog/installers/galaxy.yml index 398304a..4c7bdc6 100644 --- a/Ansible/ansible_collections/jfrog/installers/galaxy.yml +++ b/Ansible/ansible_collections/jfrog/installers/galaxy.yml @@ -9,7 +9,7 @@ namespace: "jfrog" name: "installers" # The version of the collection. Must be compatible with semantic versioning -version: "1.0.5" +version: "1.0.6" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: "README.md" @@ -52,9 +52,7 @@ dependencies: {} repository: "https://github.com/jfrog/JFrog-Cloud-Installers/" # The URL to any online docs -documentation: - - "https://github.com/jfrog/JFrog-Cloud-Installers/blob/master/Ansible/README.md" - - "https://www.jfrog.com/confluence/display/JFROG/" +documentation: "https://github.com/jfrog/JFrog-Cloud-Installers/blob/master/Ansible/README.md" # The URL to the homepage of the collection/project homepage: "https://github.com/jfrog/JFrog-Cloud-Installers/" diff --git a/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz b/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.5.tar.gz deleted file mode 100644 index 80395da2affa4a40d7c1e1fb9e0582c3b248c7f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25876 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%0D1_s(-AY?!U3R%f|{qYO1_>TYq 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 Sf34@hus6%Y7Z6I35dI6=$Yo&w literal 0 HcmV?d00001 diff --git a/Ansible/examples/playbook-rt-ha.yml b/Ansible/examples/playbook-rt-ha.yml index 151d2df..57fc65c 100644 --- a/Ansible/examples/playbook-rt-ha.yml +++ b/Ansible/examples/playbook-rt-ha.yml @@ -1,9 +1,13 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: primary:secondary + collections: + - jfrog.installers roles: - artifactory - artifactory_nginx_ssl \ No newline at end of file diff --git a/Ansible/examples/playbook-rt-xray.yml b/Ansible/examples/playbook-rt-xray.yml index 9c0ff31..6081198 100644 --- a/Ansible/examples/playbook-rt-xray.yml +++ b/Ansible/examples/playbook-rt-xray.yml @@ -1,12 +1,18 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: artifactory + collections: + - jfrog.installers roles: - artifactory - hosts: xray + collections: + - jfrog.installers roles: - xray \ No newline at end of file diff --git a/Ansible/examples/playbook-rt.yml b/Ansible/examples/playbook-rt.yml index 48d7c1e..72ffbec 100644 --- a/Ansible/examples/playbook-rt.yml +++ b/Ansible/examples/playbook-rt.yml @@ -1,8 +1,12 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: primary + collections: + - jfrog.installers roles: - artifactory diff --git a/Ansible/examples/playbook-ssl.yml b/Ansible/examples/playbook-ssl.yml index 33d84c2..7370111 100644 --- a/Ansible/examples/playbook-ssl.yml +++ b/Ansible/examples/playbook-ssl.yml @@ -1,9 +1,13 @@ --- - hosts: database + collections: + - jfrog.installers roles: - postgres - hosts: primary + collections: + - jfrog.installers roles: - artifactory - artifactory_nginx_ssl diff --git a/Ansible/examples/playbook-xray.yml b/Ansible/examples/playbook-xray.yml index 1f19914..3f0e5a4 100644 --- a/Ansible/examples/playbook-xray.yml +++ b/Ansible/examples/playbook-xray.yml @@ -1,4 +1,6 @@ --- - hosts: xray + collections: + - jfrog.installers roles: - xray \ No newline at end of file diff --git a/Ansible/pipelines.yaml b/Ansible/pipelines.yaml index 45a5731..96a1271 100644 --- a/Ansible/pipelines.yaml +++ b/Ansible/pipelines.yaml @@ -34,6 +34,12 @@ pipelines: - sudo apt -y --allow-unauthenticated install ansible - sudo pip install packaging - sudo pip install boto3 botocore + - pwd + - ls + - ls workspace + - ls dependencyState + - ls dependencyState/resources + - ls dependencyState/resources/ansibleRepo - cd ../dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" @@ -84,6 +90,12 @@ pipelines: - sudo pip install packaging - sudo pip install msrestazure - sudo pip install ansible[azure] + - pwd + - ls + - ls workspace + - ls dependencyState + - ls dependencyState/resources + - ls dependencyState/resources/ansibleRepo - cd ../dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index 26cc90d..a859072 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -37,7 +37,9 @@ db_url: "jdbc:postgresql://{{ AWSDeployment.stack_outputs.DBInstancePrivate }}:5432/artifactory" server_name: "{{ AWSDeployment.stack_outputs.ALBHostName }}" artifactory_is_primary: true - artifactory_license_file: "{{ lookup('env', 'artifactory_license_file') }}" + artifactory_license1: "{{ lookup('env', 'artifactory_license1') }}" + artifactory_license2: "{{ lookup('env', 'artifactory_license2') }}" + artifactory_license3: "{{ lookup('env', 'artifactory_license3') }}" groups: - artifactory From 878d7f5bf6c57d61d917e4776ce90e56b8c0690b Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Mon, 29 Jun 2020 20:50:12 -0700 Subject: [PATCH 06/20] Updated pipelines.yaml. --- Ansible/pipelines.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ansible/pipelines.yaml b/Ansible/pipelines.yaml index 96a1271..3a3ce38 100644 --- a/Ansible/pipelines.yaml +++ b/Ansible/pipelines.yaml @@ -40,7 +40,7 @@ pipelines: - ls dependencyState - ls dependencyState/resources - ls dependencyState/resources/ansibleRepo - - cd ../dependencyState/resources/ansibleRepo + - cd dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" - export xray_version="$int_ansibleEnvVars_xray_version" @@ -96,7 +96,7 @@ pipelines: - ls dependencyState - ls dependencyState/resources - ls dependencyState/resources/ansibleRepo - - cd ../dependencyState/resources/ansibleRepo + - cd dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" - export xray_version="$int_ansibleEnvVars_xray_version" From 78595560514f02f48eba7a9cbf7cc584bbce7a27 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 30 Jun 2020 15:25:24 -0700 Subject: [PATCH 07/20] Updated README with version information. --- Ansible/README.md | 9 +++++++++ .../installers/roles/artifactory/defaults/main.yml | 2 +- .../jfrog/installers/roles/xray/defaults/main.yml | 2 +- Ansible/pipelines.yaml | 12 ------------ 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/Ansible/README.md b/Ansible/README.md index 591c237..8151163 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -7,6 +7,15 @@ This Ansible directory consists of the following directories that support the JF * [infra directory](infra) - This directory contains example infrastructure templates that can be used for testing and as example deployments. * [test directory](test) - This directory contains Gradle tests that can be used to verify a deployment. It also has Ansible playbooks for creating infrastructure, provisioning software and testing with Gradle. + ## Tested Artifactory and Xray Versions + The following versions of Artifactory and Xray have been validated with this collection. Other versions and combinations may also work. + + | artifactory_version | xray_version | + |---------------------|--------------| + | 7.6.1 | 3.5.2 | + | 7.5.0 | 3.3.0 | + | 7.4.3 | 3.3.0 | + ## Getting Started 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml index 4520463..9e64a78 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml @@ -4,7 +4,7 @@ ansible_marketplace: standalone # The version of Artifactory to install -artifactory_version: 7.4.1 +artifactory_version: 7.6.1 # licenses file - specify a licenses file or specify up to 5 licenses artifactory_license1: diff --git a/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml index b8aad42..3cdffa3 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml @@ -4,7 +4,7 @@ ansible_marketplace: standalone # The version of xray to install -xray_version: 3.3.0 +xray_version: 3.5.2 # whether to enable HA xray_ha_enabled: true diff --git a/Ansible/pipelines.yaml b/Ansible/pipelines.yaml index 3a3ce38..9f7a18f 100644 --- a/Ansible/pipelines.yaml +++ b/Ansible/pipelines.yaml @@ -34,12 +34,6 @@ pipelines: - sudo apt -y --allow-unauthenticated install ansible - sudo pip install packaging - sudo pip install boto3 botocore - - pwd - - ls - - ls workspace - - ls dependencyState - - ls dependencyState/resources - - ls dependencyState/resources/ansibleRepo - cd dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" @@ -90,12 +84,6 @@ pipelines: - sudo pip install packaging - sudo pip install msrestazure - sudo pip install ansible[azure] - - pwd - - ls - - ls workspace - - ls dependencyState - - ls dependencyState/resources - - ls dependencyState/resources/ansibleRepo - cd dependencyState/resources/ansibleRepo - echo 'Setting environment variables...' - export artifactory_version="$int_ansibleEnvVars_artifactory_version" From de86142e6c11d34aede177ccf32d2c24c807199f Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 30 Jun 2020 16:34:06 -0700 Subject: [PATCH 08/20] Removed cleanup step from AWS step. --- Ansible/test/aws/playbook.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index a859072..efcbea8 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -144,8 +144,8 @@ shell: cmd: ./gradlew clean unified_test chdir: ../tests/ - - name: Cleanup and delete stack - cloudformation: - stack_name: "{{ lookup('env', 'stack_name') }}" - region: "us-east-1" - state: "absent" \ No newline at end of file +# - name: Cleanup and delete stack +# cloudformation: +# stack_name: "{{ lookup('env', 'stack_name') }}" +# region: "us-east-1" +# state: "absent" \ No newline at end of file From 9dba5ef4b998916b911138664d84094eaef71a0d Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Mon, 6 Jul 2020 11:50:42 -0700 Subject: [PATCH 09/20] Fixed installer-info.json location PTRENG-859. --- .../jfrog/installers/roles/artifactory/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml index 6c59717..5389511 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml @@ -97,7 +97,7 @@ - name: configure installer info template: src: installer-info.json.j2 - dest: "{{ artifactory_home }}/var/etc/info/installer-info.json" + dest: "{{ artifactory_home }}/var/etc/artifactory/info/installer-info.json" become: yes - name: use specified binary store From e26246b7bacbcc049e28ec38ab219efd7cb214ff Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Mon, 6 Jul 2020 11:51:48 -0700 Subject: [PATCH 10/20] Updated AWS playbook. --- Ansible/test/aws/playbook.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index efcbea8..a859072 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -144,8 +144,8 @@ shell: cmd: ./gradlew clean unified_test chdir: ../tests/ -# - name: Cleanup and delete stack -# cloudformation: -# stack_name: "{{ lookup('env', 'stack_name') }}" -# region: "us-east-1" -# state: "absent" \ No newline at end of file + - name: Cleanup and delete stack + cloudformation: + stack_name: "{{ lookup('env', 'stack_name') }}" + region: "us-east-1" + state: "absent" \ No newline at end of file From b92605f5bffb0d9b2947856967f1007e01829733 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Mon, 6 Jul 2020 14:38:26 -0700 Subject: [PATCH 11/20] Added the creation of artifactory/info directory. --- .../jfrog/installers/roles/artifactory/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml index 5389511..63cfd3b 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml @@ -86,9 +86,9 @@ dest: "{{ artifactory_home }}/var/etc/security/join.key" become: yes -- name: ensure {{ artifactory_home }}/var/etc/info/ exists +- name: ensure {{ artifactory_home }}/var/etc/artifactory/info/ exists file: - path: "{{ artifactory_home }}/var/etc/info/" + path: "{{ artifactory_home }}/var/etc/artifactory/info/" state: directory owner: "{{ artifactory_user }}" group: "{{ artifactory_group }}" From d2a056384a1cc86ea69731155784319b658520e6 Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 7 Jul 2020 09:11:01 -0700 Subject: [PATCH 12/20] Temporarily removed AWS stack cleanup. --- Ansible/test/aws/playbook.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook.yaml index a859072..efcbea8 100644 --- a/Ansible/test/aws/playbook.yaml +++ b/Ansible/test/aws/playbook.yaml @@ -144,8 +144,8 @@ shell: cmd: ./gradlew clean unified_test chdir: ../tests/ - - name: Cleanup and delete stack - cloudformation: - stack_name: "{{ lookup('env', 'stack_name') }}" - region: "us-east-1" - state: "absent" \ No newline at end of file +# - name: Cleanup and delete stack +# cloudformation: +# stack_name: "{{ lookup('env', 'stack_name') }}" +# region: "us-east-1" +# state: "absent" \ No newline at end of file From e4bf69a72a88552f50d28099cdc2c148ba7d01ed Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Tue, 7 Jul 2020 13:55:46 -0700 Subject: [PATCH 13/20] Updated collection package to 1.0.7 --- Ansible/README.md | 10 +++++----- .../jfrog/installers/galaxy.yml | 2 +- .../installers/jfrog-installers-1.0.6.tar.gz | Bin 25663 -> 0 bytes .../installers/jfrog-installers-1.0.7.tar.gz | Bin 0 -> 25676 bytes .../roles/artifactory/defaults/main.yml | 2 +- Ansible/test/aws/playbook.yaml | 10 +++++----- 6 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.6.tar.gz create mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.7.tar.gz diff --git a/Ansible/README.md b/Ansible/README.md index 8151163..4527053 100644 --- a/Ansible/README.md +++ b/Ansible/README.md @@ -10,11 +10,11 @@ This Ansible directory consists of the following directories that support the JF ## Tested Artifactory and Xray Versions The following versions of Artifactory and Xray have been validated with this collection. Other versions and combinations may also work. - | artifactory_version | xray_version | - |---------------------|--------------| - | 7.6.1 | 3.5.2 | - | 7.5.0 | 3.3.0 | - | 7.4.3 | 3.3.0 | +| collection_version | artifactory_version | xray_version | +|--------------------|---------------------|--------------| +| 1.0.7 | 7.6.1 | 3.5.2 | +| 1.0.6 | 7.5.0 | 3.3.0 | +| 1.0.6 | 7.4.3 | 3.3.0 | ## Getting Started diff --git a/Ansible/ansible_collections/jfrog/installers/galaxy.yml b/Ansible/ansible_collections/jfrog/installers/galaxy.yml index 4c7bdc6..45c190b 100644 --- a/Ansible/ansible_collections/jfrog/installers/galaxy.yml +++ b/Ansible/ansible_collections/jfrog/installers/galaxy.yml @@ -9,7 +9,7 @@ namespace: "jfrog" name: "installers" # The version of the collection. Must be compatible with semantic versioning -version: "1.0.6" +version: "1.0.7" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: "README.md" diff --git a/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.6.tar.gz b/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.6.tar.gz deleted file mode 100644 index 53a44137c88b299f74bbca80072ec39f8b880962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25663 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 Sf34@hus6%Y7Z6I35dI6=$Yo&w diff --git a/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.7.tar.gz b/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.7.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c37244da9a0cffd9f06e04922fb2f9a8367beb1 GIT binary patch literal 25676 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

-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%0AOcWZo6Wv6=dgP^ClLVT@%i1h zaZqzC8EoinrIZ7Rjeh&6^`?L;9I@VM`>Ihj6h$`QsE2!H*IPM>ma&PtFgt*EJSKK( zDz<6M?x)~0OIab)q(lFjva48ble3IjdmMq=>58^;?B{koU|^87U1>Dldr7@mL5|*n6*f#BRlvW+z2^+PVkwB$Z%^0 zKPPYZlv|j#z73@84y1|Q@9RY8)vHpy*iv?h%rIawk4`Hw&^#nzFYn2k3TEc0`YcT_SR~Np|vXa^|)ONnVFt2dK3#t%?t~SI9RlZ zbYmndeY1w!|x3>APe9wbH_Lr0C2Jiq!9uXeSo82Kj4l8KXEe9qrsa8u-HAw(FYiLB4WOe z2C1m~unQpG>Ax?g1PEOK6!(&T$p2oWzds{?X@S}cgtuM*NUV7P52v%VFCsap@&w{+ z{rEA!9hkU32a_>Me0m4-u;y2MbL7EW5uq!zo}M(f9lOiH8n|LP3(-b^|4Tme4nX30 zA_Zoe)YQHMYKVd52}vrF6CM4;Az=bCHf7m3AG%c~z3H&n+#)FRdNAjxaHy)pUguZ8 zURZF?yWG=PijF&OD2X3l_3?R5xeDdGKu6TP1`@UrH3}&0!$`+NI;25^6IEdJgQVad z_+$?}%G)jzpW1yi18cI<+8Rg+!n-|9T<{(Fe8*1{=0Viw6NTcORmEl=Q$Jl%!f`oj zo?Y`}i|v$Xf%Kvv{{ffI&6mi2 z>!*6adPzv7TL$OW+4z4?GM3~)V;LqPH-94-MA`CK)e%gd#y5r{zA5S2E2 z7M$JSqSKhhLG=ZaeG4*wB^vFqN~eG1Sm4?`<9ZC^6Y| zFkz-iVpw@-q_IZBw(2jI2)-HESbWl!Vcr0f@1aK(HG4Gj~H4l3g=wN8&QeSMZH z$3r^pKbTT;5ux!ELTGfah9+XvVg6^gQ~?MGR)gYe#le;R{)oK3+Pa-3)%mnJkZTgnL&*CX&+<{yWd@A6o~L6?_J zb*Uzny=*$n^e5q=`!Ef;;J$^BR;)^x9oY5%r5h(6<~>QMKt(J(4b9Ef{SB8v!~9ulfgWb8wbvl_efWoQ-1097h4{Ae?XPiEe#kmTfZtqZdAX4CnaC2SNV z!CYpgtZ>KL`1mQAVSlrQL6Qurrox*%SD&<|m(JJPV7O^+O~OhZnwP9;eSo|R()&aA zEmN4?Mp^M<>$_!<)N`ECQXCV(Naw2l`8RtYRxFrCJyzt&*j{agAAW;K(eJ&dr~s}! z)eE!rT;Hlz-O!&7X2leeC0h0EuWzpfKWbh%|0yRW_sPNBy*jmgNB;z4p9^s1jnu1B zjCceN&g^8*3@bJj+|R$kNTFBF;>Pdjh~S9NaH%p&Ehmnb|MtZBvCVCE{)TbTwdB#M z;JCqugm84=PW6&N&lOOqdgsml2u=gWcvi4HD|`_`lD~rI8v^@vUxmTD<k-`v+}`tYj1F)-%x z-qlP$k121lCU)bkz3>e2KUpuW(mOt}Pl_utZxQ~q&pwwt^M8PeB(2rRZsmr06UO7N zT6In}S2bI&D-W%FHM|z_LfP2ysG8j2@WkYGD{8O zSKu=9l*mvfS0gSYFOFK$)h3;4&49I0Aykv+X+9a2r!aItqA3Diq#cMwouDe)6D|S0 zyDN%rd!yC*|DbQn;ANJ%rU_vV3A=N6#X9h!ZzQ4iEO-F!#ouOjD(26;;Kkv+n{bi- zi`3?o0`s{3<4pH9vs^oEpeo!{U!!409ka;2ONB)V{!n#{+V0?i0#je`Ij>!VK4I() zVc~OR;@&$ZZ7{~`$cQ40yb<;J!lHJZ*M`c~^>|?=hnD#ZHKM!8h74oaWTXPdrX{&`m=-@4}LlBhfk;jOqp*Q zW#fAeFRB+=+pz}>*t}V!D7V^iQD6R(>n$r>PE^Kk;h?&h>n1Ahf)}lbT}^wdmXN=1 zFL-;*cWK;j@jnPSeKMJTctnLZQ)irP>m?(2=n~4N6Bt;4ushWBrw7(%?rV&nwO=Ah z{~8(N>5hHHrYour7&%Cnd3T|Szl)!n?M(*Z%hb~0KeeoIG`W_D*4&p(&BUgCsH zqtidHU*I~#O$q9^@1br^UF9!YB4ZDdyOnvxierIr3BB50weN#B9mZ}^zZ3Hs=rZ1u zWts$6G-jEf#nj7+vYfp{&DLzzQn-?xQ~hZaalr6W8Cl=dyV|VScJO;&*;PI0b-EC0 zDgVFC#^zL!n&{rEB8=WSR_1K~^9SKubfe133U=yad?MlJ*H~fzh)v>1Ae>SqD;-#Y z*^vSE{{vLnFzd2MZq6JrSKuJ|rk5U#?)NhgOL7oC!=W^hc+rP!RmB4apv5))nUo&Q z#mDJot{=}C`EHUr$PK{r~a9p0Chd7 z<}HOlygm9Wmv_jSu!(Rabme{`JMhdDK$in^0XYp9fKdX{E(f8tQ!kev$B(P^Y-^hQ z|AQ|RpZt^(@4sGOk0FPqDl`6zYnJ6eUR6SpQw(-aE@+Ll6zS86oJI}hQdl)5h;d%M z)RA#(RrxX3b@C1O84(G_V$Rlk=U)Uy->qET5j41*{ zGuF&HMMYL$chLAh9`?~f(n4HL(ZX7U6R8zVd-gsIouAf68~&VSTBIa_E(xobbuB2l zwXnZ2r`NCi8~P)7=S5Jx&H84GKF^d#m8^J;Quh)Dx%ZBeSx@eav_;R3K5N2p3;)IWC*@(1Ms45c1iCxHK6z>bnMHW-?TR?K zYc-_H(BgEd`r%wM^Xk>?I2b5F*YP2-<_@A5=&W-4+fPbBO6pPPbZh@Q{Ma{*aW{Uq zKL%b_xME#3@K4;yDL1&s>u9NPFA(b8$X(VCXxm17w`}_Uwt-}|WiP0P(koN^cIGHF zqG*~>ZzJ;lFNK~zbAeg)MMk#=m+EnJ1)&Q|oj6OYyJ~r4<9=eX%)V$}$*%UUjgLb% zv+*7i99x%Rh?-pldQB_ikNGE>nK>3P^kd=m>fz^~>&t!hw8fbxd=W)ZHwnF+&Z>1R zmYPD*Nc6QwW{u_A`+x-^)02la6}I=N_AHjJHvs6&!EdEG_}u#uo6cy;r#zK}nN0Jo z)Sn`y2dB)N5LyZY~208hts_67#81;I6g)Zml7Cta!HDpKK`wH@!e+K zWLT@inX-GGG2S1Jzaq|fch2mVfc^_`S=r2QB$)rfJQkqX2KsLy<{e0=?I1MC0nvU7 zp4m^^bUnf!Sa1(|w1Ru}s7rkw%OaC@v$uG8GG%V$; zS@s4?*Wz+P*vXVlmf)RwuWi1X5ICxgm3ogeLW<2>xeZ2-`q`OeQ%HlPCSP7J4X}Zx zS^oS;RCa}VDq^~>CN*~<)o}cEbj~%4am9}&BXBsO` zxGjrh*G7Gz8k>BpI-(PP^m6?|D8k^kBA%SRW)MN#c<3nq+x@K72+|jZ^~&R|CIm1jhpfq z;K};TU!XzaHcE7S)yy|?PX5fenadWR1#eQNH;Ak{Btz+0$yZ5! z{1>Z2j?Fdo-MIAv;xA&msko0e+%uq#FPJYhy_HWPA14%x;}*YK&_uexw-Heh5#ndK>?0)Yc0juW3iv1d=-tytQ= zUpCFxiK4nmPXotc`~=IQl8!WJBW=}<*{$bu?&&9^F}$KulEJO{01G1?+qywjK0lNY zBIM`bg%Gm%KnE!<&9E8S@i-WbZpy5dTrMfqPR+}(*UL_-;=5mBOe zzRfbVj?Nt(BHiSpAL(px)9MNLz9+dvG=7ee{_7U78suF}^+rtA%+abn)7xn?r+4BP zE}KlmLWiojox1Oa&R;uNE=S=IPd}&^=a_HFBKJUEK8s<0HAcsS!0O)Hv;^X%{6sjq{vZ z%#fsE!(IHtfX@CzD^u-5Q=BP0CT)$*OCRARo>Oje(@Uytppl)g$jc;2T4OVgUGKL-ex`cQ z!)#B5_W9kOW%z)UiS0=MJ16wAfO1Ua+RK;t&Ct5yv{3tRvT*)eHc*h@Howa+kLS=V z(@q|Xcm4-?F9Y!X!bO>xpedu4MX;Wf7RSRffw4i6pEGvF>Q17ejjQ#_&LgF##Ee&E zV}!#Zni2{ZT{k8%hNFcC0Y^Sp@@Pz%MnjRvltI;!x*tD6B--cO+CTl!t*L>3l0LcR zubRX6pMtS#>5=%Q%1!+>TG554v#VC12%@l^T79hi$C&8Ft!Z{&`Bhs2T)*U(&Co}; z;wch|b{}$*0iI+ywJbLR Date: Tue, 7 Jul 2020 13:56:44 -0700 Subject: [PATCH 14/20] Changed call home value. --- .../jfrog/installers/roles/artifactory/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml index e4f38fc..9e64a78 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml @@ -1,7 +1,7 @@ --- # defaults file for artifactory # indicates were this collection was downlaoded from (galaxy, automation_hub, standalone) -ansible_marketplace: galaxy +ansible_marketplace: standalone # The version of Artifactory to install artifactory_version: 7.6.1 From 7517a483392b165cd44be69ee37c08bfe2d42fec Mon Sep 17 00:00:00 2001 From: jefferyfry Date: Thu, 6 Aug 2020 19:35:31 -0700 Subject: [PATCH 15/20] Added support for Artifactory and Xray upgrades. v1.0.8 --- .../jfrog/installers/README.md | 32 +- .../jfrog/installers/galaxy.yml | 2 +- .../installers/jfrog-installers-1.0.7.tar.gz | Bin 25676 -> 0 bytes .../installers/jfrog-installers-1.0.8.tar.gz | Bin 0 -> 26573 bytes .../installers/roles/artifactory/README.md | 13 + .../roles/artifactory/defaults/main.yml | 8 +- .../roles/artifactory/tasks/install.yml | 166 ++ .../roles/artifactory/tasks/main.yml | 166 +- .../roles/artifactory/tasks/upgrade.yml | 63 + .../jfrog/installers/roles/xray/README.md | 13 + .../installers/roles/xray/defaults/main.yml | 10 +- .../installers/roles/xray/tasks/install.yml | 103 + .../installers/roles/xray/tasks/main.yml | 102 +- .../installers/roles/xray/tasks/upgrade.yml | 54 + ...playbook.yaml => playbook-ha-install.yaml} | 0 .../test/aws/{runAws.sh => runAwsInstall.sh} | 0 .../groovy/test/steps/RepositorySteps.class | Bin 8397 -> 0 bytes .../groovy/test/steps/SecuritytSteps.class | Bin 10895 -> 0 bytes .../classes/groovy/test/steps/XraySteps.class | Bin 27034 -> 0 bytes .../groovy/test/tests/HealthCheckTest.class | Bin 7260 -> 0 bytes .../groovy/test/tests/RepositoryTest.class | Bin 16086 -> 0 bytes .../groovy/test/tests/SecurityTest.class | Bin 13805 -> 0 bytes .../classes/groovy/test/tests/XrayTest.class | Bin 21909 -> 0 bytes .../groovy/test/utils/ConfigurationUtil.class | Bin 2884 -> 0 bytes .../DSL$__clinit__closure1$_closure2.class | Bin 2705 -> 0 bytes .../DSL$__clinit__closure1$_closure3.class | Bin 2705 -> 0 bytes .../DSL$__clinit__closure1$_closure4.class | Bin 3489 -> 0 bytes .../test/utils/DSL$__clinit__closure1.class | Bin 7088 -> 0 bytes .../build/classes/groovy/test/utils/DSL.class | Bin 2223 -> 0 bytes .../groovy/test/utils/EnvironmentConfig.class | Bin 1926 -> 0 bytes .../test/utils/ProcessOutputStream.class | Bin 3664 -> 0 bytes .../utils/Shell$_executeProc_closure1.class | Bin 2291 -> 0 bytes .../classes/groovy/test/utils/Shell.class | Bin 2896 -> 0 bytes .../groovy/test/utils/WorkspaceManager.class | Bin 3654 -> 0 bytes .../All API tests/tests.HealthCheckTest.html | 106 - .../All API tests/tests.HealthCheckTest.xml | 6 - .../All API tests/tests.RepositoryTest.html | 151 -- .../All API tests/tests.RepositoryTest.xml | 28 - .../All API tests/tests.SecurityTest.html | 943 -------- .../All API tests/tests.SecurityTest.xml | 76 - .../All API tests/tests.XrayTest.html | 307 --- .../All API tests/tests.XrayTest.xml | 23 - .../tests/unified_test/bullet_point.png | Bin 356 -> 0 bytes .../classes/tests.HealthCheckTest.html | 115 - .../classes/tests.RepositoryTest.html | 139 -- .../classes/tests.SecurityTest.html | 532 ---- .../unified_test/classes/tests.XrayTest.html | 214 -- .../tests/unified_test/collapseall.gif | Bin 157 -> 0 bytes .../tests/unified_test/css/base-style.css | 179 -- .../reports/tests/unified_test/css/style.css | 84 - .../tests/unified_test/emailable-report.html | 123 - .../reports/tests/unified_test/failed.png | Bin 977 -> 0 bytes .../reports/tests/unified_test/index.html | 163 -- .../tests/unified_test/jquery-1.7.1.min.js | 4 - .../reports/tests/unified_test/js/report.js | 194 -- .../TEST-tests.HealthCheckTest.xml | 6 - .../TEST-tests.RepositoryTest.xml | 10 - .../junitreports/TEST-tests.SecurityTest.xml | 76 - .../junitreports/TEST-tests.XrayTest.xml | 23 - .../tests/unified_test/navigator-bullet.png | Bin 352 -> 0 bytes .../old/All API tests/classes.html | 288 --- .../old/All API tests/groups.html | 6 - .../unified_test/old/All API tests/index.html | 6 - .../unified_test/old/All API tests/main.html | 2 - .../All API tests/methods-alphabetical.html | 212 -- .../old/All API tests/methods-not-run.html | 8 - .../old/All API tests/methods.html | 212 -- .../old/All API tests/reporter-output.html | 103 - .../old/All API tests/testng.xml.html | 1 - .../tests.HealthCheckTest.properties | 1 - .../tests.RepositoryTest.properties | 1 - .../tests.SecurityTest.properties | 1 - .../All API tests/tests.XrayTest.properties | 1 - .../unified_test/old/All API tests/toc.html | 54 - .../reports/tests/unified_test/old/index.html | 9 - .../tests/unified_test/packages/tests.html | 133 - .../reports/tests/unified_test/passed.png | Bin 1019 -> 0 bytes .../reports/tests/unified_test/skipped.png | Bin 967 -> 0 bytes .../tests/unified_test/testng-reports.css | 309 --- .../tests/unified_test/testng-reports.js | 122 - .../tests/unified_test/testng-results.xml | 2134 ----------------- .../reports/tests/unified_test/testng.css | 9 - .../build/resources/test/enableRabbitMQ.json | 11 - .../build/resources/test/integration.json | 9 - .../test/repositories/CreateDefault.yaml | 554 ----- .../test/repositories/CreateJCR.yaml | 119 - .../resources/test/repositories/artifact.zip | Bin 519 -> 0 bytes .../tests/build/resources/test/testenv.yaml | 6 - .../TEST-tests.HealthCheckTest.xml | 13 - .../TEST-tests.RepositoryTest.xml | 21 - .../unified_test/TEST-tests.SecurityTest.xml | 150 -- .../unified_test/TEST-tests.XrayTest.xml | 44 - .../unified_test/binary/output.bin | 107 - .../unified_test/binary/output.bin.idx | Bin 3276 -> 0 bytes .../unified_test/binary/results.bin | Bin 10699 -> 0 bytes .../jar_extract_13944288851973658335_tmp | Bin 13904 -> 0 bytes .../jar_extract_15312985063730868442_tmp | Bin 965 -> 0 bytes .../jar_extract_4590906891718676027_tmp | 0 98 files changed, 460 insertions(+), 8420 deletions(-) delete mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.7.tar.gz create mode 100644 Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.8.tar.gz create mode 100644 Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/install.yml create mode 100644 Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/upgrade.yml create mode 100644 Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/install.yml create mode 100644 Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/upgrade.yml rename Ansible/test/aws/{playbook.yaml => playbook-ha-install.yaml} (100%) rename Ansible/test/aws/{runAws.sh => runAwsInstall.sh} (100%) delete mode 100644 Ansible/test/tests/build/classes/groovy/test/steps/RepositorySteps.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/steps/SecuritytSteps.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/steps/XraySteps.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/HealthCheckTest.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/RepositoryTest.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/SecurityTest.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/tests/XrayTest.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/ConfigurationUtil.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure2.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure3.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure4.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/DSL.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/EnvironmentConfig.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/ProcessOutputStream.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/Shell$_executeProc_closure1.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/Shell.class delete mode 100644 Ansible/test/tests/build/classes/groovy/test/utils/WorkspaceManager.class delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/bullet_point.png delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.HealthCheckTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/collapseall.gif delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/css/style.css delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/failed.png delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/index.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/js/report.js delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/navigator-bullet.png delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/classes.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/old/index.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/passed.png delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/skipped.png delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml delete mode 100644 Ansible/test/tests/build/reports/tests/unified_test/testng.css delete mode 100644 Ansible/test/tests/build/resources/test/enableRabbitMQ.json delete mode 100644 Ansible/test/tests/build/resources/test/integration.json delete mode 100644 Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml delete mode 100644 Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml delete mode 100644 Ansible/test/tests/build/resources/test/repositories/artifact.zip delete mode 100644 Ansible/test/tests/build/resources/test/testenv.yaml delete mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml delete mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml delete mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml delete mode 100644 Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml delete mode 100644 Ansible/test/tests/build/test-results/unified_test/binary/output.bin delete mode 100644 Ansible/test/tests/build/test-results/unified_test/binary/output.bin.idx delete mode 100644 Ansible/test/tests/build/test-results/unified_test/binary/results.bin delete mode 100644 Ansible/test/tests/build/tmp/unified_test/jar_extract_13944288851973658335_tmp delete mode 100644 Ansible/test/tests/build/tmp/unified_test/jar_extract_15312985063730868442_tmp delete mode 100644 Ansible/test/tests/build/tmp/unified_test/jar_extract_4590906891718676027_tmp diff --git a/Ansible/ansible_collections/jfrog/installers/README.md b/Ansible/ansible_collections/jfrog/installers/README.md index bb6b243..88f2bdf 100644 --- a/Ansible/ansible_collections/jfrog/installers/README.md +++ b/Ansible/ansible_collections/jfrog/installers/README.md @@ -1,13 +1,6 @@ # JFrog Ansible Installers Collection -This Ansible directory consists of the following directories that support the JFrog Ansible collection. - - * [ansible_collections directory](ansible_collections) - This directory contains the Ansible collection package that has the Ansible roles for Artifactory and Xray. See the collection [README](ansible_collections/README.md) for details on the available roles and variables. - * [examples directory](examples) - This directory contains example playbooks for various architectures from single Artifactory (RT) deployments to high-availability setups. - * [infra directory](infra) - This directory contains example infrastructure templates that can be used for testing and as example deployments. - * [test directory](test) - This directory contains Gradle tests that can be used to verify a deployment. It also has Ansible playbooks for creating infrastructure, provisioning software and testing with Gradle. - - ## Getting Started +## Getting Started 1. Install this collection from Ansible Galaxy. This collection is also available in RedHat Automation Hub. @@ -29,9 +22,9 @@ This Ansible directory consists of the following directories that support the JF 2. Ansible uses SSH to connect to hosts. Ensure that your SSH private key is on your client and the public keys are installed on your Ansible hosts. - 3. Create your inventory file. Use one of the examples from the [examples directory](examples) to construct an inventory file (hosts.yml) with the host addresses and variables. + 3. Create your inventory file. Use one of the examples from the [examples directory](https://github.com/jfrog/JFrog-Cloud-Installers/tree/master/Ansible/examples) to construct an inventory file (hosts.yml) with the host addresses and variables. - 4. Create your playbook. Use one of the examples from the [examples directory](examples) to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software. + 4. Create your playbook. Use one of the examples from the [examples directory](https://github.com/jfrog/JFrog-Cloud-Installers/tree/master/Ansible/examples) to construct a playbook using the JFrog Ansible roles. These roles will be applied to your inventory and provision software. 5. Then execute with the following command to provision the JFrog software with Ansible. Variables can also be passed in at the command-line. @@ -74,4 +67,23 @@ ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A us eg. ansible_ssh_common_args: '-o ProxyCommand="ssh -o StrictHostKeyChecking=no -A ubuntu@{{ azureDeployment.deployment.outputs.lbIp.value }} -W %h:%p"' +``` + +## Upgrades +The Artifactory and Xray roles support software upgrades. To use a role to perform a software upgrade only, use the _artifactory_upgrade_only_ or _xray_upgrade_only_ variables and specify the version. See the following example. + +``` +- hosts: artifactory + vars: + artifactory_version: "{{ lookup('env', 'artifactory_version_upgrade') }}" + artifactory_upgrade_only: true + roles: + - artifactory + +- hosts: xray + vars: + xray_version: "{{ lookup('env', 'xray_version_upgrade') }}" + xray_upgrade_only: true + roles: + - xray ``` \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/galaxy.yml b/Ansible/ansible_collections/jfrog/installers/galaxy.yml index 45c190b..f507c41 100644 --- a/Ansible/ansible_collections/jfrog/installers/galaxy.yml +++ b/Ansible/ansible_collections/jfrog/installers/galaxy.yml @@ -9,7 +9,7 @@ namespace: "jfrog" name: "installers" # The version of the collection. Must be compatible with semantic versioning -version: "1.0.7" +version: "1.0.8" # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: "README.md" diff --git a/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.7.tar.gz b/Ansible/ansible_collections/jfrog/installers/jfrog-installers-1.0.7.tar.gz deleted file mode 100644 index 5c37244da9a0cffd9f06e04922fb2f9a8367beb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25676 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

-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%0AOcWZo6Wv6=dgP^ClLVT@%i1h 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 y$C=KlfuJJf0b literal 0 HcmV?d00001 diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/README.md b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/README.md index 606a51c..cf6c2a5 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/README.md +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/README.md @@ -14,6 +14,7 @@ The artifactory role installs the Artifactory Pro software onto the host. Per th * _server_name_: This is the server name. eg. "artifactory.54.175.51.178.xip.io" * _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. **If specified, this file will be used rather than constructing a file from the parameters above.** * _binary_store_file_: Your own [binary store file](https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore) can be used. If specified, the default cluster-file-system will not be used. +* _artifactory_upgrade_only_: Perform an software upgrade only. Default is false. ### primary vars (vars used by the primary Artifactory server) * _artifactory_is_primary_: For the primary node this must be set to **true**. @@ -29,4 +30,16 @@ The artifactory role installs the Artifactory Pro software onto the host. Per th - hosts: primary roles: - artifactory +``` + +## Upgrades +The Artifactory role supports software upgrades. To use a role to perform a software upgrade only, use the _artifactory_upgrade_only_ variable and specify the version. See the following example. + +``` +- hosts: artifactory + vars: + artifactory_version: "{{ lookup('env', 'artifactory_version_upgrade') }}" + artifactory_upgrade_only: true + roles: + - artifactory ``` \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml index 9e64a78..490b1bd 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/defaults/main.yml @@ -20,7 +20,7 @@ artifactory_ha_enabled: true artifactory_is_primary: true # The location where Artifactory should install. -artifactory_download_directory: /opt/jfrog +jfrog_home_directory: /opt/jfrog # The location where Artifactory should store data. artifactory_file_store_dir: /data @@ -31,7 +31,8 @@ artifactory_flavour: pro extra_java_opts: -server -Xms2g -Xmx14g -Xss256k -XX:+UseG1GC artifactory_tar: https://dl.bintray.com/jfrog/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/{{ artifactory_version }}/jfrog-artifactory-pro-{{ artifactory_version }}-linux.tar.gz -artifactory_home: "{{ artifactory_download_directory }}/artifactory-{{ artifactory_flavour }}-{{ artifactory_version }}" +artifactory_home: "{{ jfrog_home_directory }}/artifactory" +artifactory_untar_home: "{{ jfrog_home_directory }}/artifactory-{{ artifactory_flavour }}-{{ artifactory_version }}" artifactory_user: artifactory artifactory_group: artifactory @@ -46,3 +47,6 @@ service_list: status_pattern: artifactory user_name: "{{ artifactory_user }}" group_name: "{{ artifactory_group }}" + +# if this is an upgrade +artifactory_upgrade_only: false \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/install.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/install.yml new file mode 100644 index 0000000..a97d554 --- /dev/null +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/install.yml @@ -0,0 +1,166 @@ +--- +- debug: + msg: "Performing installation of Artifactory..." + +- name: install nginx + include_role: + name: artifactory_nginx + +- name: create group for artifactory + group: + name: "{{ artifactory_group }}" + state: present + become: yes + +- name: create user for artifactory + user: + name: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + system: yes + become: yes + +- name: ensure jfrog_home_directory exists + file: + path: "{{ jfrog_home_directory }}" + state: directory + become: yes + +- name: download artifactory + unarchive: + src: "{{ artifactory_tar }}" + dest: "{{ jfrog_home_directory }}" + remote_src: yes + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + creates: "{{ artifactory_untar_home }}" + become: yes + register: downloadartifactory + until: downloadartifactory is succeeded + retries: 3 + +- name: MV untar directory to artifactory home + command: "mv {{ artifactory_untar_home }} {{ artifactory_home }}" + become: yes + +- name: ensure artifactory_file_store_dir exists + file: + path: "{{ artifactory_file_store_dir }}" + state: directory + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + become: yes + +- name: ensure etc exists + file: + path: "{{ artifactory_home }}/var/etc" + state: directory + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + become: yes + +- name: use specified system yaml + copy: + src: "{{ system_file }}" + dest: "{{ artifactory_home }}/var/etc/system.yaml" + become: yes + when: system_file is defined + +- name: configure system yaml + template: + src: system.yaml.j2 + dest: "{{ artifactory_home }}/var/etc/system.yaml" + become: yes + when: system_file is not defined + +- name: ensure {{ artifactory_home }}/var/etc/security/ exists + file: + path: "{{ artifactory_home }}/var/etc/security/" + state: directory + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + become: yes + +- name: configure master key + template: + src: master.key.j2 + dest: "{{ artifactory_home }}/var/etc/security/master.key" + become: yes + +- name: configure join key + template: + src: join.key.j2 + dest: "{{ artifactory_home }}/var/etc/security/join.key" + become: yes + +- name: ensure {{ artifactory_home }}/var/etc/artifactory/info/ exists + file: + path: "{{ artifactory_home }}/var/etc/artifactory/info/" + state: directory + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + become: yes + +- name: configure installer info + template: + src: installer-info.json.j2 + dest: "{{ artifactory_home }}/var/etc/artifactory/info/installer-info.json" + become: yes + +- name: use specified binary store + copy: + src: "{{ binary_store_file }}" + dest: "{{ artifactory_home }}/var/etc/binarystore.xml" + become: yes + when: binary_store_file is defined + +- name: use default binary store + template: + src: binarystore.xml.j2 + dest: "{{ artifactory_home }}/var/etc/binarystore.xml" + become: yes + when: binary_store_file is not defined + +- name: use license file + copy: + src: "{{ artifactory_license_file }}" + dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.cluster.license" + become: yes + when: artifactory_license_file is defined and artifactory_is_primary == true + +- name: use license strings + template: + src: artifactory.cluster.license.j2 + dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.cluster.license" + become: yes + when: artifactory_license_file is not defined and artifactory_is_primary == true + +- name: download database driver + get_url: + url: "{{ db_download_url }}" + dest: "{{ artifactory_home }}/var/bootstrap/artifactory/tomcat/lib" + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + become: yes + +- name: create artifactory service + shell: "{{ artifactory_home }}/app/bin/installService.sh" + become: yes + +- name: start and enable the primary node + service: + name: artifactory + state: restarted + become: yes + when: artifactory_is_primary == true + +- name: random wait before restarting to prevent secondary nodes from hitting DB first + pause: + seconds: "{{ 120 | random + 10}}" + when: artifactory_is_primary == false + +- name: start and enable the secondary nodes + service: + name: artifactory + state: restarted + become: yes + when: artifactory_is_primary == false diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml index 63cfd3b..3afccb3 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/main.yml @@ -1,160 +1,6 @@ ---- -# tasks file for artifactory -- name: install nginx - include_role: - name: artifactory_nginx - -- name: create group for artifactory - group: - name: "{{ artifactory_group }}" - state: present - become: yes - -- name: create user for artifactory - user: - name: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - system: yes - become: yes - -- name: ensure artifactory_download_directory exists - file: - path: "{{ artifactory_download_directory }}" - state: directory - become: yes - -- name: download artifactory - unarchive: - src: "{{ artifactory_tar }}" - dest: "{{ artifactory_download_directory }}" - remote_src: yes - owner: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - creates: "{{ artifactory_home }}" - become: yes - register: downloadartifactory - until: downloadartifactory is succeeded - retries: 3 - -- name: ensure artifactory_file_store_dir exists - file: - path: "{{ artifactory_file_store_dir }}" - state: directory - owner: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - become: yes - -- name: ensure etc exists - file: - path: "{{ artifactory_home }}/var/etc" - state: directory - owner: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - become: yes - -- name: use specified system yaml - copy: - src: "{{ system_file }}" - dest: "{{ artifactory_home }}/var/etc/system.yaml" - become: yes - when: system_file is defined - -- name: configure system yaml - template: - src: system.yaml.j2 - dest: "{{ artifactory_home }}/var/etc/system.yaml" - become: yes - when: system_file is not defined - -- name: ensure {{ artifactory_home }}/var/etc/security/ exists - file: - path: "{{ artifactory_home }}/var/etc/security/" - state: directory - owner: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - become: yes - -- name: configure master key - template: - src: master.key.j2 - dest: "{{ artifactory_home }}/var/etc/security/master.key" - become: yes - -- name: configure join key - template: - src: join.key.j2 - dest: "{{ artifactory_home }}/var/etc/security/join.key" - become: yes - -- name: ensure {{ artifactory_home }}/var/etc/artifactory/info/ exists - file: - path: "{{ artifactory_home }}/var/etc/artifactory/info/" - state: directory - owner: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - become: yes - -- name: configure installer info - template: - src: installer-info.json.j2 - dest: "{{ artifactory_home }}/var/etc/artifactory/info/installer-info.json" - become: yes - -- name: use specified binary store - copy: - src: "{{ binary_store_file }}" - dest: "{{ artifactory_home }}/var/etc/binarystore.xml" - become: yes - when: binary_store_file is defined - -- name: use default binary store - template: - src: binarystore.xml.j2 - dest: "{{ artifactory_home }}/var/etc/binarystore.xml" - become: yes - when: binary_store_file is not defined - -- name: use license file - copy: - src: "{{ artifactory_license_file }}" - dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.cluster.license" - become: yes - when: artifactory_license_file is defined and artifactory_is_primary == true - -- name: use license strings - template: - src: artifactory.cluster.license.j2 - dest: "{{ artifactory_home }}/var/etc/artifactory/artifactory.cluster.license" - become: yes - when: artifactory_license_file is not defined and artifactory_is_primary == true - -- name: download database driver - get_url: - url: "{{ db_download_url }}" - dest: "{{ artifactory_home }}/var/bootstrap/artifactory/tomcat/lib" - owner: "{{ artifactory_user }}" - group: "{{ artifactory_group }}" - become: yes - -- name: create artifactory service - shell: "{{ artifactory_home }}/app/bin/installService.sh" - become: yes - -- name: start and enable the primary node - service: - name: artifactory - state: restarted - become: yes - when: artifactory_is_primary == true - -- name: random wait before restarting to prevent secondary nodes from hitting DB first - pause: - seconds: "{{ 120 | random + 10}}" - when: artifactory_is_primary == false - -- name: start and enable the secondary nodes - service: - name: artifactory - state: restarted - become: yes - when: artifactory_is_primary == false +- name: perform installation + include_tasks: "install.yml" + when: not artifactory_upgrade_only +- name: perform upgrade + include_tasks: "upgrade.yml" + when: artifactory_upgrade_only \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/upgrade.yml b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/upgrade.yml new file mode 100644 index 0000000..a0273dd --- /dev/null +++ b/Ansible/ansible_collections/jfrog/installers/roles/artifactory/tasks/upgrade.yml @@ -0,0 +1,63 @@ +--- +- debug: + msg: "Performing upgrade of Artifactory..." + +- name: stop artifactory + service: + name: artifactory + state: stopped + become: yes + +- name: ensure jfrog_home_directory exists + file: + path: "{{ jfrog_home_directory }}" + state: directory + become: yes + +- name: download artifactory + unarchive: + src: "{{ artifactory_tar }}" + dest: "{{ jfrog_home_directory }}" + remote_src: yes + owner: "{{ artifactory_user }}" + group: "{{ artifactory_group }}" + creates: "{{ artifactory_untar_home }}" + become: yes + register: downloadartifactory + until: downloadartifactory is succeeded + retries: 3 + +- name: Delete artifactory app + file: + path: "{{ artifactory_home }}/app" + state: absent + become: yes + +- name: CP new app to artifactory app + command: "cp -r {{ artifactory_untar_home }}/app {{ artifactory_home }}/app" + become: yes + +- name: Delete untar directory + file: + path: "{{ artifactory_untar_home }}" + state: absent + become: yes + +- name: start and enable the primary node + service: + name: artifactory + state: restarted + become: yes + when: artifactory_is_primary == true + +- name: random wait before restarting to prevent secondary nodes from hitting DB first + pause: + seconds: "{{ 120 | random + 10}}" + when: artifactory_is_primary == false + +- name: start and enable the secondary nodes + service: + name: artifactory + state: restarted + become: yes + when: artifactory_is_primary == false diff --git a/Ansible/ansible_collections/jfrog/installers/roles/xray/README.md b/Ansible/ansible_collections/jfrog/installers/roles/xray/README.md index ba758f9..eb5b304 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/xray/README.md +++ b/Ansible/ansible_collections/jfrog/installers/roles/xray/README.md @@ -12,6 +12,7 @@ The xray role will install Xray software onto the host. An Artifactory server an * _db_user_: The database user to configure. eg. "xray" * _db_password_: The database password to configure. "xray" * _system_file_: Your own [system YAML](https://www.jfrog.com/confluence/display/JFROG/System+YAML+Configuration+File) file can be specified and used. If specified, this file will be used rather than constructing a file from the parameters above. +* _xray_upgrade_only_: Perform an software upgrade only. Default is false. ## Example Playbook ``` @@ -19,4 +20,16 @@ The xray role will install Xray software onto the host. An Artifactory server an - hosts: xray roles: - xray +``` + +## Upgrades +The Xray role supports software upgrades. To use a role to perform a software upgrade only, use the _xray_upgrade_only_ variables and specify the version. See the following example. + +``` +- hosts: xray + vars: + xray_version: "{{ lookup('env', 'xray_version_upgrade') }}" + xray_upgrade_only: true + roles: + - xray ``` \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml index 3cdffa3..3478fd5 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/xray/defaults/main.yml @@ -10,14 +10,18 @@ xray_version: 3.5.2 xray_ha_enabled: true # The location where xray should install. -xray_download_directory: /opt/jfrog +jfrog_home_directory: /opt/jfrog # The remote xray download file -xray_tar: https://bintray.com/standAloneDownload/downloadArtifact?agree=true&artifactPath=/jfrog/jfrog-xray/xray-linux/{{ xray_version }}/jfrog-xray-{{ xray_version }}-linux.tar.gz&callback_id=anonymous&product=xray +xray_tar: https://dl.bintray.com/jfrog/jfrog-xray/xray-linux/{{ xray_version }}/jfrog-xray-{{ xray_version }}-linux.tar.gz #The xray install directory -xray_home: "{{ xray_download_directory }}/jfrog-xray-{{ xray_version }}-linux" +xray_untar_home: "{{ jfrog_home_directory }}/jfrog-xray-{{ xray_version }}-linux" +xray_home: "{{ jfrog_home_directory }}/xray" #xray users and groups xray_user: xray xray_group: xray + +# if this is an upgrade +xray_upgrade_only: false \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/install.yml b/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/install.yml new file mode 100644 index 0000000..e881e37 --- /dev/null +++ b/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/install.yml @@ -0,0 +1,103 @@ +--- +- debug: + msg: "Performing installation of Xray..." + +- name: create group for xray + group: + name: "{{ xray_group }}" + state: present + become: yes + +- name: create user for xray + user: + name: "{{ xray_user }}" + group: "{{ xray_group }}" + system: yes + become: yes + +- name: ensure jfrog_home_directory exists + file: + path: "{{ jfrog_home_directory }}" + state: directory + become: yes + +- name: download xray + unarchive: + src: "{{ xray_tar }}" + dest: "{{ jfrog_home_directory }}" + remote_src: yes + owner: "{{ xray_user }}" + group: "{{ xray_group }}" + creates: "{{ xray_untar_home }}" + become: yes + register: downloadxray + until: downloadxray is succeeded + retries: 3 + +- name: MV untar directory to xray home + command: "mv {{ xray_untar_home }} {{ xray_home }}" + become: yes + +- debug: + msg: "Running dependency installation for {{ ansible_os_family }}" + +- name: perform dependency installation + include_tasks: "{{ ansible_os_family }}.yml" + +- name: ensure etc exists + file: + path: "{{ xray_home }}/var/etc" + state: directory + owner: "{{ xray_user }}" + group: "{{ xray_group }}" + become: yes + +- name: configure system yaml + template: + src: system.yaml.j2 + dest: "{{ xray_home }}/var/etc/system.yaml" + become: yes + +- name: ensure {{ xray_home }}/var/etc/security/ exists + file: + path: "{{ xray_home }}/var/etc/security/" + state: directory + owner: "{{ xray_user }}" + group: "{{ xray_group }}" + become: yes + +- name: configure master key + template: + src: master.key.j2 + dest: "{{ xray_home }}/var/etc/security/master.key" + become: yes + +- name: configure join key + template: + src: join.key.j2 + dest: "{{ xray_home }}/var/etc/security/join.key" + become: yes + +- name: ensure {{ xray_home }}/var/etc/info/ exists + file: + path: "{{ xray_home }}/var/etc/info/" + state: directory + owner: "{{ xray_user }}" + group: "{{ xray_group }}" + become: yes + +- name: configure installer info + template: + src: installer-info.json.j2 + dest: "{{ xray_home }}/var/etc/info/installer-info.json" + become: yes + +- name: create xray service + shell: "{{ xray_home }}/app/bin/installService.sh" + become: yes + +- name: start and enable xray + service: + name: xray + state: restarted + become: yes \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/main.yml b/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/main.yml index 2361d9f..3b9b7e1 100644 --- a/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/main.yml +++ b/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/main.yml @@ -1,96 +1,6 @@ ---- -- name: create group for xray - group: - name: "{{ xray_group }}" - state: present - become: yes - -- name: create user for xray - user: - name: "{{ xray_user }}" - group: "{{ xray_group }}" - system: yes - become: yes - -- name: ensure xray_download_directory exists - file: - path: "{{ xray_download_directory }}" - state: directory - become: yes - -- name: download xray - unarchive: - src: "{{ xray_tar }}" - dest: "{{ xray_download_directory }}" - remote_src: yes - owner: "{{ xray_user }}" - group: "{{ xray_group }}" - creates: "{{ xray_home }}" - become: yes - register: downloadxray - until: downloadxray is succeeded - retries: 3 - -- debug: - msg: "Running dependency installation for {{ ansible_os_family }}" - -- name: perform dependency installation - include_tasks: "{{ ansible_os_family }}.yml" - -- name: ensure etc exists - file: - path: "{{ xray_home }}/var/etc" - state: directory - owner: "{{ xray_user }}" - group: "{{ xray_group }}" - become: yes - -- name: configure system yaml - template: - src: system.yaml.j2 - dest: "{{ xray_home }}/var/etc/system.yaml" - become: yes - -- name: ensure {{ xray_home }}/var/etc/security/ exists - file: - path: "{{ xray_home }}/var/etc/security/" - state: directory - owner: "{{ xray_user }}" - group: "{{ xray_group }}" - become: yes - -- name: configure master key - template: - src: master.key.j2 - dest: "{{ xray_home }}/var/etc/security/master.key" - become: yes - -- name: configure join key - template: - src: join.key.j2 - dest: "{{ xray_home }}/var/etc/security/join.key" - become: yes - -- name: ensure {{ xray_home }}/var/etc/info/ exists - file: - path: "{{ xray_home }}/var/etc/info/" - state: directory - owner: "{{ xray_user }}" - group: "{{ xray_group }}" - become: yes - -- name: configure installer info - template: - src: installer-info.json.j2 - dest: "{{ xray_home }}/var/etc/info/installer-info.json" - become: yes - -- name: create xray service - shell: "{{ xray_home }}/app/bin/installService.sh" - become: yes - -- name: start and enable xray - service: - name: xray - state: restarted - become: yes \ No newline at end of file +- name: perform installation + include_tasks: "install.yml" + when: not xray_upgrade_only +- name: perform upgrade + include_tasks: "upgrade.yml" + when: xray_upgrade_only \ No newline at end of file diff --git a/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/upgrade.yml b/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/upgrade.yml new file mode 100644 index 0000000..623661c --- /dev/null +++ b/Ansible/ansible_collections/jfrog/installers/roles/xray/tasks/upgrade.yml @@ -0,0 +1,54 @@ +--- +- debug: + msg: "Performing upgrade of Xray..." + +- name: stop xray + service: + name: xray + state: stopped + become: yes + +- name: ensure jfrog_home_directory exists + file: + path: "{{ jfrog_home_directory }}" + state: directory + become: yes + +- name: download xray + unarchive: + src: "{{ xray_tar }}" + dest: "{{ jfrog_home_directory }}" + remote_src: yes + owner: "{{ xray_user }}" + group: "{{ xray_group }}" + creates: "{{ xray_untar_home }}" + become: yes + register: downloadxray + until: downloadxray is succeeded + retries: 3 + +- name: Delete xray app + file: + path: "{{ xray_home }}/app" + state: absent + become: yes + +- name: CP new app to xray app + command: "cp -r {{ xray_untar_home }}/app {{ xray_home }}/app" + become: yes + +- name: Delete untar directory + file: + path: "{{ xray_untar_home }}" + state: absent + become: yes + +- name: create xray service + shell: "{{ xray_home }}/app/bin/installService.sh" + become: yes + +- name: start and enable xray + service: + name: xray + state: restarted + become: yes \ No newline at end of file diff --git a/Ansible/test/aws/playbook.yaml b/Ansible/test/aws/playbook-ha-install.yaml similarity index 100% rename from Ansible/test/aws/playbook.yaml rename to Ansible/test/aws/playbook-ha-install.yaml diff --git a/Ansible/test/aws/runAws.sh b/Ansible/test/aws/runAwsInstall.sh similarity index 100% rename from Ansible/test/aws/runAws.sh rename to Ansible/test/aws/runAwsInstall.sh diff --git a/Ansible/test/tests/build/classes/groovy/test/steps/RepositorySteps.class b/Ansible/test/tests/build/classes/groovy/test/steps/RepositorySteps.class deleted file mode 100644 index 0e25924ac8015e230725f9ff1bd95c3ef87d3753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8397 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 In?tTY0E(G@G5`Po diff --git a/Ansible/test/tests/build/classes/groovy/test/steps/XraySteps.class b/Ansible/test/tests/build/classes/groovy/test/steps/XraySteps.class deleted file mode 100644 index 58846009f2a30ee99be0e6cb26db3d662e5f0891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27034 zcmeI52Y6IfxA*rsCm}YwdFOaG&^d?LEerf!-^Q zX%SC^YU0KF#e$1Ud6Z)u$F!UqoF6Q%3Pvi6C(fE1Do^AX&oON(W6|jRMfUtiIZj^9 z#xp4u-R*ri)ghh;Cc@>zs)F(O=*aA-V+zMbW0l3_(TdQVU~RluHO4}-t58Zf8YxcQ zJIFCPWo6JXewbsN{TJqeUZ`x2x+dPwJ zwrPr^9UYUEm=lhprsL`~6l&kHJQl)>jE=`^LwnB;MG}rVqVu@AZ8zvYccx2y)gBzn z5DwuI9+5?46HSO5!bdbEa*1Y+*&!S)j)mYgc%@jVqIfcnhuGsBQ{%=T2!Or`hjnQI1`y&N;9fg0CW zQ~ykZ_UL1V@~sew+YAeq&j}R`i$)T$XqC_G?HFGqT2#)nJ~PrWdF8kSUo4uks0L?7 z`3fH zv?F#Vb|DIgU5NnEp6EdAMs#$HyExZp<~XKV0saewD*^)x0zNYr`6JK`SJ3qRx5$u< zm@PuHA@8*j^$D1S1(b%$Yh&TWA}Qiv* z%1~KSNp%n*FSpbt^~Xc=L!uWNMujWq$khdoX)OxMqt!Lh2%0925@z7#knD1Kh5ykE ziygCz{mW9#5e&tm0|`;L1W~lfP4jE3m{4a`h00KR9F3gRe>eg<^Hv@QX7uP@(!JNr z0LnYkG0iit&&0W-GwQSie;?KdlsYR&@eu8G2S=Kgg$z>WAf{VCma(m zh?}&=@Z5}AA{cAqp;#nXjaz&*NTUm)u?loW=}uwFoLF=LTPw$0gSW4(so10oVOVq` zIul)pLZU0tjVL0z6U9Uiq9;*8^dfo_eTcq9KcYV|fEY*&B6cVCAO;hA5_=Ith@r$V zVmPrkF@hLLj3P!8V+hG8<6w=nF^hfXS>_|@Bqv3Yf)?@4@x%mTA~A{BhnP&15>tqM ziK)aiVn1R!u|F|`IDnW*97vQA2N6MH7Ew-A5FuhVQAx}p!o*x+9#KV96A>ax)JSd$ zut}{C{^*$P;IYXx5YNmdKTB{1GCYFM#G}=rg3NP_rC*WDp(a*am2%_X)jgRD{&dXF zbXDAvEIL`zWIV!D00%bP>OD2Fa8xr-PhN6UQ5ir4C6JYZs0kE1Ss6(tP#unx)k|8q zsR@RAR`U{SLs5P$C@8~320xYMrY@kK)xmI;W(6lNqZGZ=bFa|CAo|--cO*iofAiEk zQn@@|vdK*-p`~^Wyn{K&$;Y6QfAGJ+Y!q2Gt2SK4ej^d94e^fFnRm>pik8nStB5X$ zR7Hcli`Cw4lgt#Tjl|1?kw_?0NgM4Iv>?8=0k!Pdd#)e}K*rJ}Ueom@?rh(p&zI-qdBjQAYs3qnT z3y6h;#OWbCT1*^DEFlgf4kwNvjwFsEjwX&FjwOyGjwhB9ClDtRClMzTrx2$SrxB+U zXAox+XAx&31EY~MBL~ssbH*ZcG7VeobH>AAG1^aOnRBS%T;e?9eBuJ)LgFG~8F4Xj z32`YrEvW*n#Z#9NmlIbIR}xndR}uTSyhIvG@0hE*O7vxiDU-# zIX60Hn2p=|jx_}ny#o9%SP%&`HV63JaRV-lQFR5v@^ zs)Hs;p0_z>N2vwImz>L&VS<$!y)YZyk*O;4;tX7bD{L}G;{&Ve3;{)ZvOmIfsVEkz ziN>XxYc|Prw!(qg;VSe9$yB{gt(bh9q-05VJElkS@47P81J>Aqago%33HV;DGt|91 z`FCJ`u&P#i(&0$V7;NMI`!fuXypK}M_u!T(3(X1#BUJWqBd^2U{HP?9%pz>2e!Py6 zdGC`M1L2wY`{`seVo(>ZL}yVZnH-q{oeEnDV;${{Z2_r%+vhyLNpA?xOEy-rOJ~K` z%iyV`SR9YN#f!*k@`vp#bf}mPWyeJRk98PZ+=YC~!268&ocMzHlK6`Fn)rtJmiUhN zp7??Ik@$)DnfQhHmH3VLo%nk45?zUIL=n-QC?sUH zwSQ3S0Ae69h}fOjgBVQgN$f=oA%+rI@@T=nKAhI-bBAJt7p$n*Y*EAc^xnh>Vk9w& z7)^{J#uDR*@x%mTA~A{BhnP&15>tqMiK)aiJAB8iu_7uf20nMXofrgb!e#S9GL`LF z(yMnL=3#e+43q<*2xop7<4kv^q?Ldy+AK^Ul?0OA1SYS1vdl4kVe8sh6)(<7Bx>RV zi;LsIV7&W+IT+b%UlN_2SP+cK*t&Qj)=}lzpkr>R@7~k+SgCYD1-j74MpOictLeAf<=*POrCLHRV`b+d%^f< zj1!&&CjVh$3jiz#@n zZ6BLJTccAf^5tEi0Q=s#0=s9VkU7QQAQj@1c_M$Y8#+yqV3XN zUL3DefX}VPj9^x@Vi8;b;n7e9DyS|*%qA*{IYgM4OUxsxh-xB&JOX7y!x5~SjF&cu z@qCo1Ar2!;z;5s;%MR+Xslln)|=5TKKBv?f-Z(MR^+kNavX6yv6MK0 zIFUGsIGH$wIF&e!IGs3yIFmSwIGZ?!IF~q&IG?zHxRAJrSVmk-pnfvo3xrucbpLjc zC4Ik(F;oZJ>szM!{t6l76k!q?tP&T;h)R|dlXs_v0_j^YeA+d6nKDo_uQIjjm>M;? z_h-zEIZ|>T#8UMp&n1VwGCU5K7gdDjXVe4(rNAb)XBHzLX~N|UBMh2$;(dWgG*VXY zb3g{Pv1z~ z#Qq3rQkPIi4`(*?xo;p2=u@1)4~ZqhvoRF+xo^QV8MmSfLFMFHsaxjFEyNP=UG+-;(OOg?m33Y(z{-Cph0Im9yW3ugv zhWm@{N@{|MImugpldI6-bN|3fj=Z6*d2#YheC}Ty0qA>8!o$cfcDhnpTT>H_C5F~U zDyk%_+{aqoPdq?8NIXP5Ogut7N<2n9PCP+8Njyb7O*}(9OFTzBPrN{^CpHi-5-$-i z6ViOI^5`|*fKQnv>V;NhJ#D0$0)-tD==?2`Qm#W@IDw%d2WDIDHZIX%%?B zD03DQka*yP6gT4qi!&z&7zR|NFZE147f8&(S}88oR@Z3py*7ESJc>_kD4a`tUZ2!+ zs0M0=-VAdqT8J|I4nX-?1LYOBrXVbQn+ zM=X<|cyj3AT6F%r?<3-4;uGRi;xpoN;tS$S;w$27;u|Q+c+nc@^LhAi-JIG-h7wcl z*Ad?OE%6=kJ@EtaBk>dQGw}=YEAbnFwOQ#Vtq&FJmlmIgsB0$Q3uJXAjv*jEUuS+C z)Q^>zvdc$pj&1N+AIptVewoI{nqt^FI7z=fp*8#sJe}iJqe1tZJY;&2&x^uQhfUqP zsH8{Fen5{Nz54g{c?TmDh7_P)iwZE1L-+?VBrC6tC!*C@)W8P~pNHD@+}uaeQu)|2 zbWtM24FW?df;I4|91r7{T$@2HYm?q;4RGc=6e`m;2Ur} zF(o<$pWhtQZ}XGZ#=i=Ci@igsa0%94;goVC%!Tjy>8~sH={)an?+EMy@Qy@k<$i?J zM}Eh2ZJ_u@cLaDxd&jWIWApGSxG8o7c*i@YbAvW)U<*Z#cLGv$vZ{6i#vYl)C*O5T z6~d?|c_-(3Cwiw?#i{qo^G?Iw1zfqg_TTU_VK5DP|;-L$gD%P^3JBa<}VXeP|fB10)|S zL-N~h6L(5|OGhJPEesz_{-EhxZLMm2S==lg+kT%pg12&G2F=FT*2pIaFJb!b5MB;RaVu; zecp2PRyDQIeLD`&h(2!x^xDb0&s&LZxuG}0Yz+?CV1qWcO+pMfh)L#;JnsVULTo|t z)?pva)+@>J?#8}{`W}{O(&^{L@_7$=6L(=IXty0P+k#v&0D|*EEAXiu;8ib7@GdT?KF-_94Lv zFW|4f=W@l{L*?{9F zIMb5X%`T<@cR`ys*c764%T2Vys(BhiWIOmra%iLOMqlKk## zOmEk$G5r3chgfl_6^B`IgcV0waf}tmS+UfL z6Roh%rR&fwS%;JB)Zx?yl%yXkNs}MwA|baZ}q$vL3s0D?%8zS9DF2u2?u=mjTh#QHUh?|L9h+B!}#BIdw#2v(n ze=C;mWN9mjRm5sy4Y8J3N8Cl+P25A=OWa4?Pdq?8NIXP5Ogut7N<2n9PCP+8Njyb7 zO+14z`u{<)6+w~?%T&&Jj!`D*bc^C=Y5n-=g{YW@Xqk%m*%$FM1@SWge%v4N(+}~} z7xB{vN4*h0y%0YGGU8`xDt?xlWc(~m#m`ccjGv{c_*rU_@v{`VZ2UZLhT6W!z0`D) z*xHuylhrmW|Ai7@J+Xm!k$8!CnRtbGm3WPKop^(Ib93>N%9RauMX8LKzSvk#l$HM$ z%X*vGNW4S5OT0(CPkcapNPI+mOngFoN_<9qPJBUpNqj|oO?*RqOMFLsPyEnu*Yi`I znOGDl@omCaOcqq2p{Rx14}w^g~l%C;(Z6q#=mzu#%6 zr*~1gtG!&eC-6J%)S85CD8l*H~&xw7Bs0LNrk;1_3QSKt?C_3-U*H>aZxoU-ApO>pgCI%{^@ zY`=rC5s1MNh|v*<;Sq@O5!g*wBbVf*b)PL`}s7x;@uD7s{ zu&=P6u)lDCaG-FIaChMz!ok8lg?kBy2!{%X35N^!7LE{(6pj*(7LM5(k50dDGK&4q zxH`W7U*+xT7fPmdzcXR$a(c9WARLL&&XxEL!xi`i!sT%6%Mb*|n=a-!jFgT=Hb2G; zGDn*s<|s4L9BGzgXBEdpy(RZXQ-Kgo1wvHvHv=ImA;B?GR6+tX7-wQKe>)+RnGH?v zY5w**7@cSN9SqMwjL*SRAx7vp#t z%m2O+%sZKl&>iN_HrIm7VUSzV2)DqfH=_}5LL=OWMz{fua6KB~IyAzy=_~{_GFgMN zcap}(Id+*aK91OBG7HTx5u1ga-Y5YBQ*#$gKB36(98dzxBn~9Xh=YhAF^ecCDu@s< zdvj(^dS!!VZlDb|XXY);>}G9UTV|ORm>%Da;rw03Z`PSMxTPKDnE|sJId~O@{44Pb zk2^6`Ss}J8km)h+!NeE;trZI*qvMDcbYa2D%{c8Galf!|u5g~PN?0w72&2Lp;laY# z=B(L(!P36>|Af=t52t+sF7-H^_AwanQ8?`*aN39Av=6~)AB59B0H?kGA2@A1W%3Hm z6Yr+-L_&;LE1WM}AY3S1Bs@g8Sa_&#iSV%hdnV7{y79N!2p>$%Uu~Lr1{QxA_IL>v ze-Ren0E@4O#b1EMpNGYtgTp6`mkGQFzkk?B0Mkr(Jz32P-E_ai<7R6`m$MU3iA@ zOyOC=vxVmf&lR30JYRT$@Iv85!ezpXg_j5~6<#L1TzG}>O5s()tA*DHuN7X0p^V?T zL58pCmrbTnzjM>3BNe}Miw=dCtGr$13Y9BWu2#8L=L9k71m6^5Qix;B3PDT@LCgz5 zObkKH3_(l{!4EbUKW$SBZ|U)T+NT;?Pi>^@Wl5NTf*%P#7JeecBoyZ{3k5L^1u+i= zF%bnZ69vB(ej~(W6lX9S1-}>mApBAIlkjKZFT!7izX^XA{vrHR_!sFKp(Av+E`ZYZ zNOr7#H><8k{+Gp8GH?FV*hE;Pgau3`BDbKy&m*bM!-V^hI;@L38v*bM!)Ul%P3!W{ep!rxu$1 z8k$;QsY6%e>d)rf)?&PEh1&_Y7q$_$749J1QMi+^op9&>Zj%p&$w$KEBVh8qVe;WH z`7oG#C`>*CCf^Gt-xDSu{0~gNOLCZo_{e9>IKz^|G`D~w3wKvxK-gZ`LAaZ+qp*{( zv#^V>P}p^IhHt=~(;1{~1AR~<&dy49lj4em-G#->=Wb8w?9*z~iK!P8Q^q%np!{CX?yTh_>E(Rv{?7a?>gLTE8U=nypUB7{&4LMVz5 ziXeol5kgf6p?L_Qx#m{vBxhsGiaXRLLujUi3x?x3$8cc?&2%dzgdBHHs@eBPc0{wA z4XI`ii=pNUWsSzIlH+P&L>Lvy8jX9f9LI!lVd7tC_9C&n29(_g@HgoSv;PcR^8f|Z&hfDIaj^BVu=O#p_0h2PQLy!qu=NpXJ401+9qfgqopDa>Y+i5| zsGS!!nxGaj=Nv*TCJrT*5Qh#Dtp#nQ*=&6f;tZg>RcqKbC960 z8NfLU3F=HFs56kDPDg?|4GHShElyC!G-|~(nS@0Khl9)|7i;ykxWx&0hM!ABxlDLYvnz)9zmbi|%p16Uyk+|t! zFe8e&nPuHV+)6AbZX<3d?jTkWcM>a!Rm5sy4Y5|nns#MOSFHT5E|9spK<4TKnQIrw zQn%^4Sn4*rKBix;^X=9vziU^^8t6W^sQH}*nJJwk&@5*qn*SLz|I=vxr_lUQqWSMa z^RGkmuSN5(LG!Oh^RGf`Uumwu??O^zC8$ewp9_*{9p`LXcibmao#wf=({%Duo#s>0 z@jWekM)<7oIpOod7liAD8-y3$`KjHQDD6ur?JFVH3UTHeA=V0UjI~1Wdx^~-r7`^O&nkaa z`Mb#U93?%{{d3a>_B)O38S(Hn5L+(O-IpBI?ZYsutJlyUprL<6L;rw={vHke9UA&G zH1wxv=ugnlAETi^LPLLuhW-E}*v~Q=dSa@fC#D*DVydAhdX8;q&rL2PyVqjlEtip- zvZ1+*?0H=H^sY-+7O7fArNarAl8OJtPO!!8v?O51nyko_X-+t054Eys^fLAKI3&% z*;!?w%5EyL6&e1JR@pYWl;QV!Y^pQkp5!KFzgJS%@pMm=*IV`XRoUOlvG$>`KF!Q%CyJ)sEhL#9Q02(=pS&<-{GLY!9jmD z%ds__eS}?l%}F{a6mvxaQ!E^5CUSGUJ;XtA4!gkZ{?;6CPaI+C)!QpIkm!T2liXr( zw;f1$L(tuNLy2L;aAI#_1Tm5rMT{oK5M%!h7Zuz3z42ROXn013p}DA<<+e3V-GFKC z?rQvQfobFJ0%PxN0&Y9g$=%6xb9Xd7-5pF{w{5x;hMMHuYF*O6IA;y)coP~m;Y3;@Bdg$WB`!Y(jjXPB@P zOxSUYO?W_~CgdI$k9%A^?s4(B$Hn6w7ms^fJnnJvxW~og9v5#mfo=Op3yu6j;eWSk zmQIxFh2ei{!d@`p?l9pXm~bFWH~=Q>4-@u-3H!o?ePF`gFk!DPHsM@vp8jxTKKdTy z4$~KbJTB{QFEZWBk)LPyy&5DuzZWZ=p6&M%rPGm<6Q!%YL;PN3wRhNkUZk{cUy9vg z84<*PL@|@YeaD~}v`XeT5`Lx36_<;<59K$o|=dpEvbdGnn)Q z75i8**@{vtrdYAB6;rL4X2pJ1Ot)fxD`r@6fE6>XIM9kRD-N%I#iWjUU)>}(#u$Fkyy2eY^5-(dzykbr8suizUOT2C^@rJd;o7NIlhr<@e(z46pQ85JSM7nIM)tt|S+xto8i@mYXw@zVY@`ls3{|~| zX(S|U4^_R0YSD|ZMoz*$QPqdQ7QKjUxtRlW24-YVW# zrFyGXUqoe8_137~gH>-#^(Itrt?HexdKYMY7pmSxs_zh$i&gKTs&|R%Jxui;p?Z&0 zy+^6uqb2_Q&M~U@SoOc-RPXUBm#Y2~RR4*p|0LCavbN(XDo<5;n#$8vo}uzgm1n6u zTje<_&sBMz%JWrTpz=bM7pYvP@?w>jsJv9=WhyUMd47cKlGw`AFr*DnC*AsY;uj zuzyMaw)qKrnDlR(p|Foh|Nchhw<>Lx!hRI@bE~y}5v^ZT>s6!jV69(F>lfGhCA5BvRR1BWf3fO6 zRPDM%^&h7C4p(`E>OE5R9;JGbPucId$Ex1rRPXVscd6<c2_#->mIl=FJ5{b!xk}|~ zm1|V4Rr!>@&(r!o&*=L+tA72QzR&aeJ}>BdtXH`~-{(brpO^G~Ue@<{P0M**<-1xQ z@;dtk7kORm_kou8p_ccNmiMui^NGq&wY<-?ywA0~FSNWbwVbb1ey#EwmEWrTPUZJj zdY-M9mu2haW!rjrO>Diq99u8XXY1uPwe|6GRW`Hr^73rGylrf~yymuEUJEU!rOH++ z^Hus)wpO{V%I#Ecud7HCo?mjK0@ceXohCcarMeNA*rty``#mit5`}P4yy=aop%lSG_Y; z?}4hfO!Xe5dV{KWmg*~4S)qDEs&}^Pt)yO=p<_mle=|gv7XsXTg=ss?ycYig#aJvZ z+_lcTXL`O{xXQbqs{#0DHn6~%ulEnLGkDYacJIMQOe=7u_t<@SVCd)eL0 z43bHjUXIfwJ#)0F-5icxSH0pmvTQ*dAH8fRb`s~l+a_t7wn^JKahoP_?fl++3oNiA z%^&l=`M&wy@xAkVyPtUFqfZb~Cyz1Jd$#Mji9@!P^(ML}?9tl?v7iy-lk3?9H!)xr z@@~eH3f}%{&lbtL(pJH<9gUjA%9iU5<_D(> zu=2HK*p_hhEwrbs9L=;PM4M@=K~$d&`%NaF5I@o=&a|mL;X0!U@n@Ld z%}+U_w(C#r+}U>VK%Lr{cCRc;(Fw~6vw;$#lpO}?R4u|JMVNp9#DuTy9@{(Sb&5czK_NxpdVKOGGA?Z2S2hsgca^T~9WOAgZ7CxZQ?u`Xf{YNd za=E+&2yC9%Z^MP{)D*lARI07)IcwS-n97N`K>?Kp)hID;WZJfpnR`;6lgW+uP8PBn z9YPo`4O)$ETC}S6YlM*1COogunMmk#1XfFwM6^!Fm|9y-m3Tr?`=v{Y)SlK85-tNF z>ZKIZl`uSP>>&$GId&R3%JsU`yGF;s^o-@&#|L_K8e*z}0_TjvbkoZASH8Ghq>_~q ziH7Nx{VNEpUs8#i^BP{pBnsnHQ$g3r;5QWIW^-UF>?qnnVn3 zR4F$)Dmgj|(?;P^(Ops3cFtzt=}2ctUsDBn8O={l=6yp~;rMvmx^69NY>AN8)Lh;$Z7EElg@qz{IB~ ztjSSvl|;YgL3a)c*e`+np@Ut0gNKH7`sJVN62F*suA^TS?fja^Ug30{MsEYvOwK!=JCnZyXD;L3t-S{Q zCjC~3-cG;G)V>naxl}G%c2Ifk-5UKavPZ@}>SV^T>KDtC2EBvc8KU2#cR`iv8`geb zt^I*PwX|CD;~(NCkj}Ug3+a@Hvsg~L-}Wp&$PBti?f)au%^D=|CEir9yotnZE=u@K z0LL)X=>4*{PJk&O4AJH^dP=AJ;R?637Z*k{X`LQm>Rjo(i|oHJ(VvItPw6j2&b0#S1vEh7TiSD|mcD!s$(mpP*U4K%0E)eaQz&14 zR8|@VprD84D8*DS*D}YiwjY(R>ji8Ouu%XCccd*^nljp>DU~UrO*%b=w9pjI=b|Er zEc`Xj*%ZyVQI)Nxb^6;yp}9Yw&)QZ_qo*YxPnHH`@sl5r&xYt3`nU+NNkEf;%>tSQ zY!R?kz%~JXDQ}gxn1Hx|?E=~avRaM4bD!qZk0jGG`Sf%u z^9E#4?!|+wRVO|r?sQOcjOAa9HZP^M-1(%47G10Nz~Y;0(dNj!qEGp{;}^XaYV;il zTR^N!6+o08!)vsqHy1tB6;1Bg0b^ySqvs~dj8yO{z<59{>bGPw@*w=L?+C%(AgSa2WN z^uKUaxho^$aaEs>cX%XjFvTmjUwr02iJjzfEw_3gFS_Wcf^5*s^nW2bOs_Dll3V*c zE>pZ*%DW6B11`WQ*&Hy)pjAjx9As)Kntxa>^5n2R>=`c+OSnX zES;CFBEYMj$Mb`sh=Y*Ade@R(tqwGot~I(-xEnVoo6GozK|jHPDaegz{F>#`QqpLx zFS(nbw@ak*W8Q#0h5$e$ziq)VxpUO$efF z-b(AdS+3>w9iGlxkSOtDJ2@*mk}2rC4GX1rSVrhI;Pfih`VI8l|kE!Yq0DhdFhNMLcE|a<6<`= zP@hX;I!j{0CzXVB-V2;UcFNWHH7M5E{J73tSjze5>DKAHIKhPF4(8_&ZbWZUPJK)r zMQ{6mx1D}lyhoBmr@b`?93dH~1F%PBj?Z3QdXy z;Xi$uoPA_!@{H{a$^}O%LLOdw!g4Y)FD^#VamgNq)Xw6VVU+faCi<^<8**Hs^0@T0VY@DHOPf=rR|s(hUKhbzpZso|jc+SDZ)JkrMI3G?QssDFlD*Y*%S3Az=W281lH(txnm z=vH51`B?@($DpHIS0e2|iL^D4b3dN$lN7@+GN<2QEsk1?lYdKzJeG`!IJ0zH1({i2 zx!HbE>?F>T!;{BTNN%4cM|22KN6*gC9lkovH^j|1Ce1gQzv544>DPk<)H{LlW;}P{ zc}pp(`PSk-keQ+1*|&aZhTeTQt(&3u+)d^My89k7X6U{5P}OJ`ry2Te^TTKY@7T5=Cio^ZBKU3PnOV#wU}JP~7|!MEJCbU%i5&Y9cj2c)>^b3=lrM7-6}h zjEDh*&tdE5=N0t@%)Yo7aZXWRTCS)s`-=JsaK4J?Yk0mcimF+pDC07UsvhoG6+AuM z0bQ(uYF?B8R{?Z@La)%h8vUzAS$>%+x%vkFDX;wr1ztt22_bbAzX3x6obdfsuA*S+ z7eDY$QUd~S1FoPO=^#bvW@@6l5QZ0#Jf5R1xcqJ9HrmE}sD(2WugCAII|z zYUY<{OJECa4V<8Dfi$%Q-bt~*3lzt**$?Cbe(9pXH&q~0W8i7}2K_yP{m#Ix^bhop zNL2UpX8I=Hg7hp_zD3{034Tlu(m&BZQx(VPP4q8#)A)I=_xDxvi^YARKvQvFO(0d= zXZWdY9nO3jw5?u>&>5FTDSe9AB^&GiHkUc*0dSIvX{*ffy<}{b{wuIJYkVIjdlAnM z@cgjo1WU6<+1c){%#va^Y!2I*=@mP9VziA1=|S5*VlLXI&*ts`3xixNxAD9O&QWKmnJ&i!-eW%KZ(u>(fBr4|$o%9HI`Ms^MJmGib*P{Jj?$|s8}1nzFilzcy&6RPL;#LP&Tn^G||riNW%ZpQ4I zFmJ_hAj~Zo4u&~~VJytsF-(TJ9YZe6J22$KoWxKF^DYc;408vDJHxyi!<)n0iQ%p= zUytD}3h#Ytc5j&XVex}uz5&C1YWR>^d{E6ktcD8;?_tH^qFQ`J4Ks@0Y?$|h%E#2= z<7#+94Nt1!xiBBVmgg1sPbx;AQr|wUh8NW0XVmPoYWSSu{&~gy3u^I;YWR}k{$<7e zD{AqpYWSKOzOIJvh4~=3e_s)MQK{|+N_9U}q+bei54QYBi21gK!Ekpi#$FS`T4JRk z%s1gObQqD>_ZS};HUqIs{Mw>{PF`QNH;pARK;%%o#p;_%S{{ e4Aj>>%&FK#9uW%j!MgTks@3=i7HljBsPbpmofLEc diff --git a/Ansible/test/tests/build/classes/groovy/test/tests/RepositoryTest.class b/Ansible/test/tests/build/classes/groovy/test/tests/RepositoryTest.class deleted file mode 100644 index bd1747bfca5bdcdf56ad81f27a233946d08f0c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16086 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 diff --git a/Ansible/test/tests/build/classes/groovy/test/tests/SecurityTest.class b/Ansible/test/tests/build/classes/groovy/test/tests/SecurityTest.class deleted file mode 100644 index 95b97710c869e75da1d3c9f3eb19a0a67434f723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13805 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 RBQ(WpECS*bzAvft{{TP8w8#Je diff --git a/Ansible/test/tests/build/classes/groovy/test/tests/XrayTest.class b/Ansible/test/tests/build/classes/groovy/test/tests/XrayTest.class deleted file mode 100644 index 889fd079668da9c657ec48a3c94ce74f10d22566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21909 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 diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure2.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure2.class deleted file mode 100644 index d87ab79016eebc971d659e7d736ef47133968a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2705 zcmcIm-%}e^6#i}!*syGY1gO@wN^30n0ZoHi+fuBMQbYn(7O4R>E}NUM5O#61p~HhS zzWRswPFn|1rs|WO@o(y==Vq5Al!Yk|KIHD*yXWV3zH@H={^z&f0o=i3hHEv)s8rMU z)m*Gl&?|;%IO1tlYc|is4tFCG7(;K_wydq~bVW1E>8vXwA;>Uf+2you75S=GtEN3E zyJkAZ22W3MliQlZiw%u72ALdQcLf*R}eu| zMhI^(gq&5Q$`H?;R+uI^D4(u^RdcvKZ4xY|&KaV|p=0PQ2*YmK7;e2@vVMjJeW5-i zoa)$yS)Sh5tVno=YV|5(BwRUi>dH%amjPkCM>QD>V~`;cUq0@<^~hBmO)LuV5;6vm zB;|GbZBe&0-7c)!)?;m@!X;cMbVV70)PP_ZJ}r@B<&rQ$Ad2H`&9=GeFwDnutz9`) z@6atg{)Qnl^!X_<+@vb{;&aka zsZXO(L2#zv3(Sl0@`$F>*^NlZzcLeDd{6AbWf@EOTERnnE=v0?!^I{6j{zm&JBA=t zlX5>oRj+>(tU#Bcp{QU1Uy3|R4E?S3_9Wd2uqtE?hBnQe$2ZPCjn`4>pcFP3IvRH` zO^htHfS9Qk@nBK24KYg=#6sOb-Knq7YMb7Bcg`^RTy0~8+un&XZPE=~M~+ihc2An( zey0gZTwAq@bQ!Bw&DQw?qr#D)BttZq+7axLMT-DEKcO2v^ppjzR95;kATA49H|cE* zLDB#^_i=tMnHt)|n@>dT@ja~r^bvGrUcg)Q6uXPKMBl{jGVKDim+>~O!qg9BT9_IZ zrVcQWZ+nib`Cv-ThlbSl=ZNKl(QEV)jjQ=K+U+5=gFi?i2%A;~>|dm4!z83prA<2- z4w0K?D5*v$DGYg`q%iD-a-$K-BhnM0^omf1qnQ!P>{omgg6lBQbQn2w*mM$UIEgfz zL|i95A>6`kFW(8uKS1h($z6;^13x32+(&ljDJFBN7w8tJ`)DGxMd2?*Xx#<>lN4rNAi9t8%mK7KsjfXkA^8i;BLVikM3+Qd4#FY3 WGMN;qTEv_hJwxcAdTr4z0O>#7deW%? diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure3.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure3.class deleted file mode 100644 index 9fb36e4bd75555223ac2b85b0a382d730fd1d8ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2705 zcmcIm-%}e^6#i}!*syGY1gO@wmeyGE1Db|vZA(!hrHBNoEK&n%TsAjhA?)I2Lx%@v zeDx3U9a{%brs|WO@o(y==Vq5Al!Yk|KIHD*yXWV3zH@H={^z&f0o=nAhU+!Qs8rJr z)Lg7k&?|;%IO1tlYc|is4tKXCFoxc;ZCP8}>568S(^*$WLXcs|vdd}RD)LpWR!w_S zcFlB*4W6FjCbu<*7aJOF3^F;q;R-TbIxPkXVTSgimDMU0h9Ba&HEm0CLwK~Z#&u`( z|2s(>H?2TMCqqxH>S&IkXDeE@I&GFLhGfnc1zxI9kcMRvVxH_MgH$Mxh1o0vTcY&t z3*0|s7<{et5{nFxSeZKl6V-6|xNU3O3?uQxvVRa>DRh#rl6?A5aa2Js`eX#quONb` zj1b;n2sx`pl_8!xtuRe;P(ED+tLAWf+9X&^oijv_L&wlr5Qg2dG2D5*Wc>^c`a*q3 zIMuNYvpl`AS&?vsYV|5(BwRgm>dH%ahXG-{OEnn_V~`;cUq0@<^~hBmO)LuV5;6vm zB;|GbZBe&0-7c)!))Q@|!X?}wbVV70)PP_ZJ}r@B<&rQ$Ad2H`&9=GeFwDnutz9`) z@6a7-0zO%UpbM7Vnx zm2nOC88W9Ouj;n3=}c@pTnv`+qP9u=l0Z#zPBcryB}2-GM<>On;A4!-_y`jU&Y`P= znE!x??i+|t=Sq0Upd4oC_Wf9^dpF61e;4`~Bs@OBw2Ucy>Kbn3r67m9;=?R;S4`Br zrPD9B;A-tg{)Qnl^!X_<+@>n};&aka zsZXO(L2#zvbIgnJ@|dR6*^NlZzcLeDd{6AbWf@EOO2H$1CQADa!^I{6j{zm&TZSN2 zlX5>oRj+>(tU#Bcp{QU1Ux++P4E?S3_9Wd2uqtE?hBnQe$2ZSDjn`4>pcFP3IvRH` zO^htHfS9Qk@nBK24KYg=#6sOb-Knq7YMb7Bcg`^RTy0~8+un&XZPE=~M~+ihc2An( zey0gZTwAq@bQ!Bw&DQxtqr#D)BttZq+7axLMT-DEKcX8w^ppjzR95;kATA49H|cE* zLDB#^_i=tMnHt)|n?H-%<2zah=p*RLynwgpDRvieiN1;5W!eR3FXL@mg{kk!v@kU+ zOdVh#-}W5W^1+mv4-Kj9&k@T9qu1#r8dvjewA({!2Y--45H_s}*uO~8hDk`HN}F~v z9Kw~BP*ROhQW)|=NnzLv8Xo*{}E@1lM7p=`eEWu$gb9;Uv;< z5^~av#~9rF6MTGr@CVz zch^hwN|>UeP>Xr?dI<=Dt(1&rqN*y&AgV^(^#ra`PC}qRx=3iwkhd=nu#}Gml6&}C zm>1&okH8bpdiLT^QTPiHT6e+!B!!t5i0-32a{w(*s%y_sNd5xzNPvAW(IpX=gK)^M WOeRID7BQzr&k#DOUR$&aK>82&;nJ@F diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure4.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL$__clinit__closure1$_closure4.class deleted file mode 100644 index 242ce9dd58a8f900f813efc42e4fcd415def9407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3489 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 diff --git a/Ansible/test/tests/build/classes/groovy/test/utils/DSL.class b/Ansible/test/tests/build/classes/groovy/test/utils/DSL.class deleted file mode 100644 index 85ddc1028c4f6fe4bd7bd37b87f84082e18b0a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2223 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 diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html deleted file mode 100644 index 09a0b8a..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.html +++ /dev/null @@ -1,106 +0,0 @@ - - -TestNG: tests.HealthCheckTest - - - - - - - - -

tests.HealthCheckTest

- - - - - - - - - - - -
Tests passed/Failed/Skipped:2/0/0
Started on:Thu Jun 18 15:54:18 PDT 2020
Total time:1 seconds (1490 ms)
Included groups:common xray pro
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
healthCheckTest
Test class: tests.HealthCheckTest
-Show output - -Show all outputs -
-- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-
-
1tests.HealthCheckTest@483dde3c
pingTest
Test class: tests.HealthCheckTest
-Show output - -Show all outputs -
-- Ping test. Service is OK
-
-
0tests.HealthCheckTest@483dde3c

- - \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml deleted file mode 100644 index d7a4746..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.HealthCheckTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html deleted file mode 100644 index 340e707..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.html +++ /dev/null @@ -1,151 +0,0 @@ - - -TestNG: tests.RepositoryTest - - - - - - - - -

tests.RepositoryTest

- - - - - - - - - - - -
Tests passed/Failed/Skipped:6/0/0
Started on:Thu Jun 18 15:54:19 PDT 2020
Total time:52 seconds (52678 ms)
Included groups:common xray pro
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
checkDefaultHAReposTest
Test class: tests.RepositoryTest
-Show output - -Show all outputs -
-- Verify HA repos were created. 84 repositories were created
-
-
0tests.RepositoryTest@4f17d179
checkReposAreDeleted
Test class: tests.RepositoryTest
-Show output - -Show all outputs -
-- Verify repo were deleted. 0 repositories remain
-
-
0tests.RepositoryTest@4f17d179
createDefaultHAReposTest
Test class: tests.RepositoryTest
-Show output - -Show all outputs -
-- Create repositories for HA distribution. Successfully created
-
-
3tests.RepositoryTest@4f17d179
deleteDefaultReposTest
Test class: tests.RepositoryTest
-Show output - -Show all outputs -
-- Delete HA repositories. All repositories were successfully deleted
-
-
44tests.RepositoryTest@4f17d179
deleteReposTest
Test class: tests.RepositoryTest
-Show output - -Show all outputs -
-- Delete sample HA repositories. All repositories were successfully deleted
-
-
1tests.RepositoryTest@4f17d179
reCreateDefaultHAReposTest
Test class: tests.RepositoryTest
-Show output - -Show all outputs -
-- Re-create repositories for HA distribution. Successfully created
-
-
2tests.RepositoryTest@4f17d179

- - \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml deleted file mode 100644 index d1a75bc..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.RepositoryTest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html deleted file mode 100644 index 755187a..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.html +++ /dev/null @@ -1,943 +0,0 @@ - - -TestNG: tests.SecurityTest - - - - - - - - -

tests.SecurityTest

- - - - - - - - - - - -
Tests passed/Failed/Skipped:72/0/0
Started on:Thu Jun 18 15:55:12 PDT 2020
Total time:31 seconds (31896 ms)
Included groups:common xray pro
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-0
-Show output - -Show all outputs -
-- Create group. Group test-group-0 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-1
-Show output - -Show all outputs -
-- Create group. Group test-group-1 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-2
-Show output - -Show all outputs -
-- Create group. Group test-group-2 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-3
-Show output - -Show all outputs -
-- Create group. Group test-group-3 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-4
-Show output - -Show all outputs -
-- Create group. Group test-group-4 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-5
-Show output - -Show all outputs -
-- Create group. Group test-group-5 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-6
-Show output - -Show all outputs -
-- Create group. Group test-group-6 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-7
-Show output - -Show all outputs -
-- Create group. Group test-group-7 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-8
-Show output - -Show all outputs -
-- Create group. Group test-group-8 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createGroupTest
Test class: tests.SecurityTest
Parameters: test-group-9
-Show output - -Show all outputs -
-- Create group. Group test-group-9 was successfully created
-
-
0tests.SecurityTest@285aa2f9
createPermissionsTest
Test class: tests.SecurityTest
-Show output - -Show all outputs -
-- Create permissions. Permissions successfully created and verified
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser0 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser1 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser2 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser3 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser4 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser5 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser6 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser7 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser8 created successfully
-
-
0tests.SecurityTest@285aa2f9
createUsersTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
-Show output - -Show all outputs -
-- Create users. User testuser9 created successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-0
-Show output - -Show all outputs -
-- Delete group. Group test-group-0 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-1
-Show output - -Show all outputs -
-- Delete group. Group test-group-1 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-2
-Show output - -Show all outputs -
-- Delete group. Group test-group-2 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-3
-Show output - -Show all outputs -
-- Delete group. Group test-group-3 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-4
-Show output - -Show all outputs -
-- Delete group. Group test-group-4 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-5
-Show output - -Show all outputs -
-- Delete group. Group test-group-5 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-6
-Show output - -Show all outputs -
-- Delete group. Group test-group-6 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-7
-Show output - -Show all outputs -
-- Delete group. Group test-group-7 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-8
-Show output - -Show all outputs -
-- Delete group. Group test-group-8 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteGroupTest
Test class: tests.SecurityTest
Parameters: test-group-9
-Show output - -Show all outputs -
-- Delete group. Group test-group-9 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deletePermissionsTest
Test class: tests.SecurityTest
-Show output - -Show all outputs -
-- Delete permissions. User testPermission has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser0 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser1 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser2 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser3 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser4 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser5 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser6 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser7 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser8 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
deleteUserTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
-Show output - -Show all outputs -
-- Delete user. User testuser9 has been removed successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser0 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser1 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser2 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser3 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser4 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser5 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser6 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser7 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser8 created successfully
-
-
0tests.SecurityTest@285aa2f9
generateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
-Show output - -Show all outputs -
-- Generate API keys. Key for testuser9 created successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser0 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser1 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser2 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser3 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser4 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser5 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser6 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser7 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser8 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
regenerateAPIKeysTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
-Show output - -Show all outputs -
-- Re-generate API keys. Key for testuser9 re-generated successfully
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser0, email0@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser0 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser1, email1@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser1 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser2, email2@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser2 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser3, email3@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser3 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser4, email4@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser4 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser5, email5@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser5 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser6, email6@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser6 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser7, email7@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser7 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser8, email8@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser8 was successfully verified
-
-
0tests.SecurityTest@285aa2f9
verifyUsersTest
Test class: tests.SecurityTest
Parameters: testuser9, email9@jfrog.com, password123
-Show output - -Show all outputs -
-- Verify created users. User testuser9 was successfully verified
-
-
0tests.SecurityTest@285aa2f9

- - \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml deleted file mode 100644 index f936834..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.SecurityTest.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html deleted file mode 100644 index cfbada1..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.html +++ /dev/null @@ -1,307 +0,0 @@ - - -TestNG: tests.XrayTest - - - - - - - - -

tests.XrayTest

- - - - - - - - - - - -
Tests passed/Failed/Skipped:19/0/0
Started on:Thu Jun 18 15:55:44 PDT 2020
Total time:10 seconds (10620 ms)
Included groups:common xray pro
Excluded groups:

-(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PASSED TESTS
Test methodExceptionTime (seconds)Instance
assignPolicyToWatchTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Assign policy to watch. Policy assigned successfully to Watch
-
-
0tests.XrayTest@53d7d172
createIssueEventTest
Test class: tests.XrayTest
Parameters: XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue
-Show output - -Show all outputs -
-- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully
-
-
0tests.XrayTest@53d7d172
createPolicyTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Create policy. Policy with name security_policy_4206031 created and verified successfully
-
-
0tests.XrayTest@53d7d172
createSupportBundleTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Create support bundle. Created with a bug, localhost instead of the hostname
-
-
4tests.XrayTest@53d7d172
createWatchTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully
-
-
0tests.XrayTest@53d7d172
deletePolicyTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Delete policy. Policy security_policy_4206031 has been successfully deleted
-
-
0tests.XrayTest@53d7d172
deleteWatchTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Delete watch. Watch all-repositories_4206031 has been successfully deleted
-
-
0tests.XrayTest@53d7d172
enableTLSRabbitMQTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified
-
-
0tests.XrayTest@53d7d172
getBinaryManagerTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Get binary manager. Binary manager is verified, connected RT version: 7.4.1
-
-
0tests.XrayTest@53d7d172
getIndexingConfigurationTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Get repo indexing configuration.
-
-
0tests.XrayTest@53d7d172
getPoliciesTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]
-
-
0tests.XrayTest@53d7d172
getSystemMonitoringTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Get system monitoring status. Data returned successfully
-
-
0tests.XrayTest@53d7d172
integrationConfigurationTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified
-
-
0tests.XrayTest@53d7d172
updateIndexingConfigurationTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Update repo indexing configuration. Successfully updated
-
-
0tests.XrayTest@53d7d172
updateIssueEventTest
Test class: tests.XrayTest
Parameters: XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue
-Show output - -Show all outputs -
-- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully
-
-
0tests.XrayTest@53d7d172
updatePolicyTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Update policy. Policy with name security_policy_4206031 updated and verified successfully
-
-
0tests.XrayTest@53d7d172
updateWatchTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully
-
-
0tests.XrayTest@53d7d172
xrayGetVersionTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Get X-ray version. Version: 3.3.0, revision: 3980dcb
-
-
0tests.XrayTest@53d7d172
xrayPingRequestTest
Test class: tests.XrayTest
-Show output - -Show all outputs -
-- Get system monitoring status. Data returned successfully
-
-
0tests.XrayTest@53d7d172

- - \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml deleted file mode 100644 index 8112a1c..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/All API tests/tests.XrayTest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/bullet_point.png b/Ansible/test/tests/build/reports/tests/unified_test/bullet_point.png deleted file mode 100644 index 176e6d5b3d64d032e76c493e5811a1cf839220b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hVR@^o z&n}1RKn7{ - - - - -Test results - Class tests.HealthCheckTest - - - - - -

-

Class tests.HealthCheckTest

- -
- - - - - -
-
- - - - - - - -
-
-
2
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
1.481s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - - - - - - -
TestDurationResult
healthCheckTest1.254spassed
pingTest0.227spassed
-
-
-

Standard output

- -
- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
-- Ping test. Service is OK
-
-
-
-
- -
- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html deleted file mode 100644 index 7565312..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.RepositoryTest.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - -Test results - Class tests.RepositoryTest - - - - - -
-

Class tests.RepositoryTest

- -
- - - - - -
-
- - - - - - - -
-
-
6
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
52.675s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestDurationResult
checkDefaultHAReposTest0.488spassed
checkReposAreDeleted0.239spassed
createDefaultHAReposTest3.271spassed
deleteDefaultReposTest44.317spassed
deleteReposTest1.476spassed
reCreateDefaultHAReposTest2.884spassed
-
-
-

Standard output

- -
- Delete sample HA repositories. All repositories were successfully deleted
-383 changes to config merged successfully
-- Create repositories for HA distribution. Successfully created
-Number of created repositories is 84
-- Verify HA repos were created. 84 repositories were created
-- Delete HA repositories. All repositories were successfully deleted
-- Verify repo were deleted. 0 repositories remain
-383 changes to config merged successfully
-- Re-create repositories for HA distribution. Successfully created
-
-
-
-
- -
- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html deleted file mode 100644 index 629ef66..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.SecurityTest.html +++ /dev/null @@ -1,532 +0,0 @@ - - - - - -Test results - Class tests.SecurityTest - - - - - -
-

Class tests.SecurityTest

- -
- - - - - -
-
- - - - - - - -
-
-
72
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
31.877s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestDurationResult
createGroupTest[0](test-group-0)0.599spassed
createGroupTest[1](test-group-1)0.620spassed
createGroupTest[2](test-group-2)0.629spassed
createGroupTest[3](test-group-3)0.617spassed
createGroupTest[4](test-group-4)0.634spassed
createGroupTest[5](test-group-5)0.614spassed
createGroupTest[6](test-group-6)0.654spassed
createGroupTest[7](test-group-7)0.656spassed
createGroupTest[8](test-group-8)0.647spassed
createGroupTest[9](test-group-9)0.629spassed
createPermissionsTest0.912spassed
createUsersTest[0](testuser0, email0@jfrog.com, password123)0.480spassed
createUsersTest[1](testuser1, email1@jfrog.com, password123)0.467spassed
createUsersTest[2](testuser2, email2@jfrog.com, password123)0.498spassed
createUsersTest[3](testuser3, email3@jfrog.com, password123)0.385spassed
createUsersTest[4](testuser4, email4@jfrog.com, password123)0.409spassed
createUsersTest[5](testuser5, email5@jfrog.com, password123)0.422spassed
createUsersTest[6](testuser6, email6@jfrog.com, password123)0.419spassed
createUsersTest[7](testuser7, email7@jfrog.com, password123)0.405spassed
createUsersTest[8](testuser8, email8@jfrog.com, password123)0.417spassed
createUsersTest[9](testuser9, email9@jfrog.com, password123)0.402spassed
deleteGroupTest[0](test-group-0)0.335spassed
deleteGroupTest[1](test-group-1)0.324spassed
deleteGroupTest[2](test-group-2)0.327spassed
deleteGroupTest[3](test-group-3)0.319spassed
deleteGroupTest[4](test-group-4)0.407spassed
deleteGroupTest[5](test-group-5)0.333spassed
deleteGroupTest[6](test-group-6)0.338spassed
deleteGroupTest[7](test-group-7)0.326spassed
deleteGroupTest[8](test-group-8)0.322spassed
deleteGroupTest[9](test-group-9)0.313spassed
deletePermissionsTest0.375spassed
deleteUserTest[0](testuser0, email0@jfrog.com, password123)0.403spassed
deleteUserTest[1](testuser1, email1@jfrog.com, password123)0.347spassed
deleteUserTest[2](testuser2, email2@jfrog.com, password123)0.412spassed
deleteUserTest[3](testuser3, email3@jfrog.com, password123)0.337spassed
deleteUserTest[4](testuser4, email4@jfrog.com, password123)0.400spassed
deleteUserTest[5](testuser5, email5@jfrog.com, password123)0.350spassed
deleteUserTest[6](testuser6, email6@jfrog.com, password123)0.350spassed
deleteUserTest[7](testuser7, email7@jfrog.com, password123)0.350spassed
deleteUserTest[8](testuser8, email8@jfrog.com, password123)0.379spassed
deleteUserTest[9](testuser9, email9@jfrog.com, password123)0.334spassed
generateAPIKeysTest[0](testuser0, email0@jfrog.com, password123)0.816spassed
generateAPIKeysTest[1](testuser1, email1@jfrog.com, password123)0.543spassed
generateAPIKeysTest[2](testuser2, email2@jfrog.com, password123)0.499spassed
generateAPIKeysTest[3](testuser3, email3@jfrog.com, password123)0.463spassed
generateAPIKeysTest[4](testuser4, email4@jfrog.com, password123)0.448spassed
generateAPIKeysTest[5](testuser5, email5@jfrog.com, password123)0.457spassed
generateAPIKeysTest[6](testuser6, email6@jfrog.com, password123)0.442spassed
generateAPIKeysTest[7](testuser7, email7@jfrog.com, password123)0.472spassed
generateAPIKeysTest[8](testuser8, email8@jfrog.com, password123)0.467spassed
generateAPIKeysTest[9](testuser9, email9@jfrog.com, password123)0.479spassed
regenerateAPIKeysTest[0](testuser0, email0@jfrog.com, password123)0.473spassed
regenerateAPIKeysTest[1](testuser1, email1@jfrog.com, password123)0.447spassed
regenerateAPIKeysTest[2](testuser2, email2@jfrog.com, password123)0.476spassed
regenerateAPIKeysTest[3](testuser3, email3@jfrog.com, password123)0.474spassed
regenerateAPIKeysTest[4](testuser4, email4@jfrog.com, password123)0.450spassed
regenerateAPIKeysTest[5](testuser5, email5@jfrog.com, password123)0.422spassed
regenerateAPIKeysTest[6](testuser6, email6@jfrog.com, password123)0.479spassed
regenerateAPIKeysTest[7](testuser7, email7@jfrog.com, password123)0.450spassed
regenerateAPIKeysTest[8](testuser8, email8@jfrog.com, password123)0.448spassed
regenerateAPIKeysTest[9](testuser9, email9@jfrog.com, password123)0.457spassed
verifyUsersTest[0](testuser0, email0@jfrog.com, password123)0.338spassed
verifyUsersTest[1](testuser1, email1@jfrog.com, password123)0.331spassed
verifyUsersTest[2](testuser2, email2@jfrog.com, password123)0.313spassed
verifyUsersTest[3](testuser3, email3@jfrog.com, password123)0.322spassed
verifyUsersTest[4](testuser4, email4@jfrog.com, password123)0.324spassed
verifyUsersTest[5](testuser5, email5@jfrog.com, password123)0.337spassed
verifyUsersTest[6](testuser6, email6@jfrog.com, password123)0.311spassed
verifyUsersTest[7](testuser7, email7@jfrog.com, password123)0.394spassed
verifyUsersTest[8](testuser8, email8@jfrog.com, password123)0.337spassed
verifyUsersTest[9](testuser9, email9@jfrog.com, password123)0.312spassed
-
-
-

Standard output

- -
- Create users. User testuser0 created successfully
-- Create users. User testuser1 created successfully
-- Create users. User testuser2 created successfully
-- Create users. User testuser3 created successfully
-- Create users. User testuser4 created successfully
-- Create users. User testuser5 created successfully
-- Create users. User testuser6 created successfully
-- Create users. User testuser7 created successfully
-- Create users. User testuser8 created successfully
-- Create users. User testuser9 created successfully
-- Verify created users. User testuser0 was successfully verified
-- Verify created users. User testuser1 was successfully verified
-- Verify created users. User testuser2 was successfully verified
-- Verify created users. User testuser3 was successfully verified
-- Verify created users. User testuser4 was successfully verified
-- Verify created users. User testuser5 was successfully verified
-- Verify created users. User testuser6 was successfully verified
-- Verify created users. User testuser7 was successfully verified
-- Verify created users. User testuser8 was successfully verified
-- Verify created users. User testuser9 was successfully verified
-- Generate API keys. Key for testuser0 created successfully
-- Generate API keys. Key for testuser1 created successfully
-- Generate API keys. Key for testuser2 created successfully
-- Generate API keys. Key for testuser3 created successfully
-- Generate API keys. Key for testuser4 created successfully
-- Generate API keys. Key for testuser5 created successfully
-- Generate API keys. Key for testuser6 created successfully
-- Generate API keys. Key for testuser7 created successfully
-- Generate API keys. Key for testuser8 created successfully
-- Generate API keys. Key for testuser9 created successfully
-- Re-generate API keys. Key for testuser0 re-generated successfully
-- Re-generate API keys. Key for testuser1 re-generated successfully
-- Re-generate API keys. Key for testuser2 re-generated successfully
-- Re-generate API keys. Key for testuser3 re-generated successfully
-- Re-generate API keys. Key for testuser4 re-generated successfully
-- Re-generate API keys. Key for testuser5 re-generated successfully
-- Re-generate API keys. Key for testuser6 re-generated successfully
-- Re-generate API keys. Key for testuser7 re-generated successfully
-- Re-generate API keys. Key for testuser8 re-generated successfully
-- Re-generate API keys. Key for testuser9 re-generated successfully
-- Create group. Group test-group-0 was successfully created
-- Create group. Group test-group-1 was successfully created
-- Create group. Group test-group-2 was successfully created
-- Create group. Group test-group-3 was successfully created
-- Create group. Group test-group-4 was successfully created
-- Create group. Group test-group-5 was successfully created
-- Create group. Group test-group-6 was successfully created
-- Create group. Group test-group-7 was successfully created
-- Create group. Group test-group-8 was successfully created
-- Create group. Group test-group-9 was successfully created
-- Create permissions. Permissions successfully created and verified
-- Delete permissions. User testPermission has been removed successfully
-- Delete user. User testuser0 has been removed successfully
-- Delete user. User testuser1 has been removed successfully
-- Delete user. User testuser2 has been removed successfully
-- Delete user. User testuser3 has been removed successfully
-- Delete user. User testuser4 has been removed successfully
-- Delete user. User testuser5 has been removed successfully
-- Delete user. User testuser6 has been removed successfully
-- Delete user. User testuser7 has been removed successfully
-- Delete user. User testuser8 has been removed successfully
-- Delete user. User testuser9 has been removed successfully
-- Delete group. Group test-group-0 has been removed successfully
-- Delete group. Group test-group-1 has been removed successfully
-- Delete group. Group test-group-2 has been removed successfully
-- Delete group. Group test-group-3 has been removed successfully
-- Delete group. Group test-group-4 has been removed successfully
-- Delete group. Group test-group-5 has been removed successfully
-- Delete group. Group test-group-6 has been removed successfully
-- Delete group. Group test-group-7 has been removed successfully
-- Delete group. Group test-group-8 has been removed successfully
-- Delete group. Group test-group-9 has been removed successfully
-
-
-
-
- -
- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html b/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html deleted file mode 100644 index 502a936..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/classes/tests.XrayTest.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - -Test results - Class tests.XrayTest - - - - - -
-

Class tests.XrayTest

- -
- - - - - -
-
- - - - - - - -
-
-
19
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
10.615s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestDurationResult
assignPolicyToWatchTest0.240spassed
createIssueEventTest[0](XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue)0.622spassed
createPolicyTest0.389spassed
createSupportBundleTest4.665spassed
createWatchTest0.455spassed
deletePolicyTest0.228spassed
deleteWatchTest0.253spassed
enableTLSRabbitMQTest0.422spassed
getBinaryManagerTest0.241spassed
getIndexingConfigurationTest0.270spassed
getPoliciesTest0.243spassed
getSystemMonitoringTest0.179spassed
integrationConfigurationTest0.403spassed
updateIndexingConfigurationTest0.463spassed
updateIssueEventTest[0](XRAY-, CVE-2017-2000386, A very important custom issue, A very important custom issue)0.429spassed
updatePolicyTest0.398spassed
updateWatchTest0.465spassed
xrayGetVersionTest0.135spassed
xrayPingRequestTest0.115spassed
-
-
-

Standard output

- -
- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully
-- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully
-- Create policy. Policy with name security_policy_4206031 created and verified successfully
-- Update policy. Policy with name security_policy_4206031 updated and verified successfully
-- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]
-- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully
-- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully
-- Assign policy to watch. Policy assigned successfully to Watch
-- Delete watch. Watch all-repositories_4206031 has been successfully deleted
-- Delete policy. Policy security_policy_4206031 has been successfully deleted
-- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified
-- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified
-- Get binary manager. Binary manager is verified, connected RT version: 7.4.1
-- Get repo indexing configuration.
-- Update repo indexing configuration. Successfully updated
-- Create support bundle. Created with a bug, localhost instead of the hostname
-- Get system monitoring status. Data returned successfully
-- Get system monitoring status. Data returned successfully
-- Get X-ray version. Version: 3.3.0, revision: 3980dcb
-
-
-
-
- -
- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/collapseall.gif b/Ansible/test/tests/build/reports/tests/unified_test/collapseall.gif deleted file mode 100644 index a2d80a9044f38833cb728a69c88294ce3fd007c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmZ?wbhEHb6krfw*v!DtJ#F>UjfWZCs($|cfA#bKkH7!F`St(Z@BiQa{{Qv=|DXRL zz<>l4f3h$#FmN;IfW$y%FtB(Pob+71*X+evXI>YLE;&}Fj8#mRE%&W?B30shyu13% zpT6C#3k-fJGjKF52@24V6I?%GvcZa|)%y<^9(-F=IB9W`k6g3(YLhfsMh0sDZC^x! diff --git a/Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css b/Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css deleted file mode 100644 index 4afa73e..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/css/base-style.css +++ /dev/null @@ -1,179 +0,0 @@ - -body { - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 12pt; -} - -body, a, a:visited { - color: #303030; -} - -#content { - padding-left: 50px; - padding-right: 50px; - padding-top: 30px; - padding-bottom: 30px; -} - -#content h1 { - font-size: 160%; - margin-bottom: 10px; -} - -#footer { - margin-top: 100px; - font-size: 80%; - white-space: nowrap; -} - -#footer, #footer a { - color: #a0a0a0; -} - -#line-wrapping-toggle { - vertical-align: middle; -} - -#label-for-line-wrapping-toggle { - vertical-align: middle; -} - -ul { - margin-left: 0; -} - -h1, h2, h3 { - white-space: nowrap; -} - -h2 { - font-size: 120%; -} - -ul.tabLinks { - padding-left: 0; - padding-top: 10px; - padding-bottom: 10px; - overflow: auto; - min-width: 800px; - width: auto !important; - width: 800px; -} - -ul.tabLinks li { - float: left; - height: 100%; - list-style: none; - padding-left: 10px; - padding-right: 10px; - padding-top: 5px; - padding-bottom: 5px; - margin-bottom: 0; - -moz-border-radius: 7px; - border-radius: 7px; - margin-right: 25px; - border: solid 1px #d4d4d4; - background-color: #f0f0f0; -} - -ul.tabLinks li:hover { - background-color: #fafafa; -} - -ul.tabLinks li.selected { - background-color: #c5f0f5; - border-color: #c5f0f5; -} - -ul.tabLinks a { - font-size: 120%; - display: block; - outline: none; - text-decoration: none; - margin: 0; - padding: 0; -} - -ul.tabLinks li h2 { - margin: 0; - padding: 0; -} - -div.tab { -} - -div.selected { - display: block; -} - -div.deselected { - display: none; -} - -div.tab table { - min-width: 350px; - width: auto !important; - width: 350px; - border-collapse: collapse; -} - -div.tab th, div.tab table { - border-bottom: solid #d0d0d0 1px; -} - -div.tab th { - text-align: left; - white-space: nowrap; - padding-left: 6em; -} - -div.tab th:first-child { - padding-left: 0; -} - -div.tab td { - white-space: nowrap; - padding-left: 6em; - padding-top: 5px; - padding-bottom: 5px; -} - -div.tab td:first-child { - padding-left: 0; -} - -div.tab td.numeric, div.tab th.numeric { - text-align: right; -} - -span.code { - display: inline-block; - margin-top: 0em; - margin-bottom: 1em; -} - -span.code pre { - font-size: 11pt; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 10px; - padding-right: 10px; - margin: 0; - background-color: #f7f7f7; - border: solid 1px #d0d0d0; - min-width: 700px; - width: auto !important; - width: 700px; -} - -span.wrapped pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-all; -} - -label.hidden { - display: none; -} \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/css/style.css b/Ansible/test/tests/build/reports/tests/unified_test/css/style.css deleted file mode 100644 index 3dc4913..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/css/style.css +++ /dev/null @@ -1,84 +0,0 @@ - -#summary { - margin-top: 30px; - margin-bottom: 40px; -} - -#summary table { - border-collapse: collapse; -} - -#summary td { - vertical-align: top; -} - -.breadcrumbs, .breadcrumbs a { - color: #606060; -} - -.infoBox { - width: 110px; - padding-top: 15px; - padding-bottom: 15px; - text-align: center; -} - -.infoBox p { - margin: 0; -} - -.counter, .percent { - font-size: 120%; - font-weight: bold; - margin-bottom: 8px; -} - -#duration { - width: 125px; -} - -#successRate, .summaryGroup { - border: solid 2px #d0d0d0; - -moz-border-radius: 10px; - border-radius: 10px; -} - -#successRate { - width: 140px; - margin-left: 35px; -} - -#successRate .percent { - font-size: 180%; -} - -.success, .success a { - color: #008000; -} - -div.success, #successRate.success { - background-color: #bbd9bb; - border-color: #008000; -} - -.failures, .failures a { - color: #b60808; -} - -.skipped, .skipped a { - color: #c09853; -} - -div.failures, #successRate.failures { - background-color: #ecdada; - border-color: #b60808; -} - -ul.linkList { - padding-left: 0; -} - -ul.linkList li { - list-style: none; - margin-bottom: 5px; -} diff --git a/Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html b/Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html deleted file mode 100644 index ad69c48..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/emailable-report.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -TestNG Report - - - - - - - - - - - -
Test# Passed# Skipped# FailedTime (ms)Included GroupsExcluded Groups
All API tests
tests.HealthCheckTest2001,490common, xray, pro
tests.RepositoryTest60052,678common, xray, pro
tests.SecurityTest720031,896common, xray, pro
tests.XrayTest190010,620common, xray, pro
Total990096,684
- - - - -
ClassMethodStartTime (ms)
All API tests
tests.HealthCheckTest — passed
tests.HealthCheckTesthealthCheckTest15925208584951254
pingTest1592520859750227
tests.RepositoryTest — passed
tests.RepositoryTestcheckDefaultHAReposTest1592520864746488
checkReposAreDeleted1592520909553239
createDefaultHAReposTest15925208614753271
deleteDefaultReposTest159252086523544317
deleteReposTest15925208599991476
reCreateDefaultHAReposTest15925209097922884
tests.SecurityTest — passed
tests.SecurityTestcreateGroupTest1592520933083614
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createGroupTest
createPermissionsTest1592520936283912
createUsersTest1592520916593402
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
createUsersTest
deleteGroupTest1592520941236335
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deleteGroupTest
deletePermissionsTest1592520937196375
deleteUserTest1592520939471350
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
deleteUserTest
generateAPIKeysTest1592520924460467
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
generateAPIKeysTest
regenerateAPIKeysTest1592520928628450
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
regenerateAPIKeysTest
verifyUsersTest1592520918301324
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
verifyUsersTest
tests.XrayTest — passed
tests.XrayTestassignPolicyToWatchTest1592520947606240
createIssueEventTest1592520944603622
createPolicyTest1592520945655389
createSupportBundleTest15925209501274665
createWatchTest1592520946685455
deletePolicyTest1592520948099228
deleteWatchTest1592520947846253
enableTLSRabbitMQTest1592520948730422
getBinaryManagerTest1592520949152241
getIndexingConfigurationTest1592520949393270
getPoliciesTest1592520946442243
getSystemMonitoringTest1592520954792179
integrationConfigurationTest1592520948327403
updateIndexingConfigurationTest1592520949664463
updateIssueEventTest1592520945226429
updatePolicyTest1592520946044398
updateWatchTest1592520947140465
xrayGetVersionTest1592520955087135
xrayPingRequestTest1592520954971115
-

tests.HealthCheckTest

tests.HealthCheckTest#healthCheckTest

Messages
- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy

back to summary

-

tests.HealthCheckTest#pingTest

Messages
- Ping test. Service is OK

back to summary

-

tests.RepositoryTest

tests.RepositoryTest#checkDefaultHAReposTest

Messages
- Verify HA repos were created. 84 repositories were created

back to summary

-

tests.RepositoryTest#checkReposAreDeleted

Messages
- Verify repo were deleted. 0 repositories remain

back to summary

-

tests.RepositoryTest#createDefaultHAReposTest

Messages
- Create repositories for HA distribution. Successfully created

back to summary

-

tests.RepositoryTest#deleteDefaultReposTest

Messages
- Delete HA repositories. All repositories were successfully deleted

back to summary

-

tests.RepositoryTest#deleteReposTest

Messages
- Delete sample HA repositories. All repositories were successfully deleted

back to summary

-

tests.RepositoryTest#reCreateDefaultHAReposTest

Messages
- Re-create repositories for HA distribution. Successfully created

back to summary

-

tests.SecurityTest

tests.SecurityTest#createGroupTest

Parameter #1
test-group-5
Messages
- Create group. Group test-group-5 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-6
Messages
- Create group. Group test-group-6 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-0
Messages
- Create group. Group test-group-0 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-8
Messages
- Create group. Group test-group-8 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-1
Messages
- Create group. Group test-group-1 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-2
Messages
- Create group. Group test-group-2 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-3
Messages
- Create group. Group test-group-3 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-4
Messages
- Create group. Group test-group-4 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-9
Messages
- Create group. Group test-group-9 was successfully created

back to summary

-

tests.SecurityTest#createGroupTest

Parameter #1
test-group-7
Messages
- Create group. Group test-group-7 was successfully created

back to summary

-

tests.SecurityTest#createPermissionsTest

Messages
- Create permissions. Permissions successfully created and verified

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Create users. User testuser9 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Create users. User testuser7 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Create users. User testuser1 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Create users. User testuser5 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Create users. User testuser0 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Create users. User testuser4 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Create users. User testuser3 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Create users. User testuser6 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Create users. User testuser8 created successfully

back to summary

-

tests.SecurityTest#createUsersTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Create users. User testuser2 created successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-0
Messages
- Delete group. Group test-group-0 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-6
Messages
- Delete group. Group test-group-6 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-1
Messages
- Delete group. Group test-group-1 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-5
Messages
- Delete group. Group test-group-5 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-4
Messages
- Delete group. Group test-group-4 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-7
Messages
- Delete group. Group test-group-7 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-3
Messages
- Delete group. Group test-group-3 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-8
Messages
- Delete group. Group test-group-8 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-2
Messages
- Delete group. Group test-group-2 has been removed successfully

back to summary

-

tests.SecurityTest#deleteGroupTest

Parameter #1
test-group-9
Messages
- Delete group. Group test-group-9 has been removed successfully

back to summary

-

tests.SecurityTest#deletePermissionsTest

Messages
- Delete permissions. User testPermission has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Delete user. User testuser5 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Delete user. User testuser9 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Delete user. User testuser3 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Delete user. User testuser0 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Delete user. User testuser7 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Delete user. User testuser2 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Delete user. User testuser1 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Delete user. User testuser6 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Delete user. User testuser4 has been removed successfully

back to summary

-

tests.SecurityTest#deleteUserTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Delete user. User testuser8 has been removed successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Generate API keys. Key for testuser8 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Generate API keys. Key for testuser7 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Generate API keys. Key for testuser6 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Generate API keys. Key for testuser3 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Generate API keys. Key for testuser9 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Generate API keys. Key for testuser0 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Generate API keys. Key for testuser5 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Generate API keys. Key for testuser2 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Generate API keys. Key for testuser4 created successfully

back to summary

-

tests.SecurityTest#generateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Generate API keys. Key for testuser1 created successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser7 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser3 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser0 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser9 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser8 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser4 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser6 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser2 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser1 re-generated successfully

back to summary

-

tests.SecurityTest#regenerateAPIKeysTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Re-generate API keys. Key for testuser5 re-generated successfully

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser4email4@jfrog.compassword123
Messages
- Verify created users. User testuser4 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser7email7@jfrog.compassword123
Messages
- Verify created users. User testuser7 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser6email6@jfrog.compassword123
Messages
- Verify created users. User testuser6 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser9email9@jfrog.compassword123
Messages
- Verify created users. User testuser9 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser8email8@jfrog.compassword123
Messages
- Verify created users. User testuser8 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser2email2@jfrog.compassword123
Messages
- Verify created users. User testuser2 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser5email5@jfrog.compassword123
Messages
- Verify created users. User testuser5 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser3email3@jfrog.compassword123
Messages
- Verify created users. User testuser3 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser0email0@jfrog.compassword123
Messages
- Verify created users. User testuser0 was successfully verified

back to summary

-

tests.SecurityTest#verifyUsersTest

Parameter #1Parameter #2Parameter #3
testuser1email1@jfrog.compassword123
Messages
- Verify created users. User testuser1 was successfully verified

back to summary

-

tests.XrayTest

tests.XrayTest#assignPolicyToWatchTest

Messages
- Assign policy to watch. Policy assigned successfully to Watch

back to summary

-

tests.XrayTest#createIssueEventTest

Parameter #1Parameter #2Parameter #3Parameter #4
XRAY-CVE-2017-2000386A very important custom issueA very important custom issue
Messages
- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully

back to summary

-

tests.XrayTest#createPolicyTest

Messages
- Create policy. Policy with name security_policy_4206031 created and verified successfully

back to summary

-

tests.XrayTest#createSupportBundleTest

Messages
- Create support bundle. Created with a bug, localhost instead of the hostname

back to summary

-

tests.XrayTest#createWatchTest

Messages
- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully

back to summary

-

tests.XrayTest#deletePolicyTest

Messages
- Delete policy. Policy security_policy_4206031 has been successfully deleted

back to summary

-

tests.XrayTest#deleteWatchTest

Messages
- Delete watch. Watch all-repositories_4206031 has been successfully deleted

back to summary

-

tests.XrayTest#enableTLSRabbitMQTest

Messages
- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified

back to summary

-

tests.XrayTest#getBinaryManagerTest

Messages
- Get binary manager. Binary manager is verified, connected RT version: 7.4.1

back to summary

-

tests.XrayTest#getIndexingConfigurationTest

Messages
- Get repo indexing configuration.

back to summary

-

tests.XrayTest#getPoliciesTest

Messages
- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]

back to summary

-

tests.XrayTest#getSystemMonitoringTest

Messages
- Get system monitoring status. Data returned successfully

back to summary

-

tests.XrayTest#integrationConfigurationTest

Messages
- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified

back to summary

-

tests.XrayTest#updateIndexingConfigurationTest

Messages
- Update repo indexing configuration. Successfully updated

back to summary

-

tests.XrayTest#updateIssueEventTest

Parameter #1Parameter #2Parameter #3Parameter #4
XRAY-CVE-2017-2000386A very important custom issueA very important custom issue
Messages
- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully

back to summary

-

tests.XrayTest#updatePolicyTest

Messages
- Update policy. Policy with name security_policy_4206031 updated and verified successfully

back to summary

-

tests.XrayTest#updateWatchTest

Messages
- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully

back to summary

-

tests.XrayTest#xrayGetVersionTest

Messages
- Get X-ray version. Version: 3.3.0, revision: 3980dcb

back to summary

-

tests.XrayTest#xrayPingRequestTest

Messages
- Get system monitoring status. Data returned successfully

back to summary

- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/failed.png b/Ansible/test/tests/build/reports/tests/unified_test/failed.png deleted file mode 100644 index c117be59a9ecd1da15ebf48f6b7f53496302a7cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 977 zcmV;?11|iDP)4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0B%V{K~yLeW4y>F|DS;bz(j&tuu`}Ny`K+o>P41= zYq-R&z$-w|z14sZ}6S`uM8b)lMhS`K{GDtB9px6Kr!cSsofH?!*c`##8 zG{6+YB(Z6NYd}|wOA}U4!xUqq;Wl8C#3lv+hIuOk>aOmJ00000NkvXXu0mjfn+D0# diff --git a/Ansible/test/tests/build/reports/tests/unified_test/index.html b/Ansible/test/tests/build/reports/tests/unified_test/index.html deleted file mode 100644 index 9e3d48b..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/index.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Test results - Test Summary - - - - - -
-

Test Summary

-
- - - - - -
-
- - - - - - - -
-
-
99
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
1m36.65s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Packages

- - - - - - - - - - - - - - - - - - - - - -
PackageTestsFailuresIgnoredDurationSuccess rate
-tests -99001m36.65s100%
-
-
-

Classes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-tests.HealthCheckTest -2001.481s100%
-tests.RepositoryTest -60052.675s100%
-tests.SecurityTest -720031.877s100%
-tests.XrayTest -190010.615s100%
-
-
- -
- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js b/Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js deleted file mode 100644 index 979ed08..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/jquery-1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/js/report.js b/Ansible/test/tests/build/reports/tests/unified_test/js/report.js deleted file mode 100644 index 83bab4a..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/js/report.js +++ /dev/null @@ -1,194 +0,0 @@ -(function (window, document) { - "use strict"; - - var tabs = {}; - - function changeElementClass(element, classValue) { - if (element.getAttribute("className")) { - element.setAttribute("className", classValue); - } else { - element.setAttribute("class", classValue); - } - } - - function getClassAttribute(element) { - if (element.getAttribute("className")) { - return element.getAttribute("className"); - } else { - return element.getAttribute("class"); - } - } - - function addClass(element, classValue) { - changeElementClass(element, getClassAttribute(element) + " " + classValue); - } - - function removeClass(element, classValue) { - changeElementClass(element, getClassAttribute(element).replace(classValue, "")); - } - - function initTabs() { - var container = document.getElementById("tabs"); - - tabs.tabs = findTabs(container); - tabs.titles = findTitles(tabs.tabs); - tabs.headers = findHeaders(container); - tabs.select = select; - tabs.deselectAll = deselectAll; - tabs.select(0); - - return true; - } - - function getCheckBox() { - return document.getElementById("line-wrapping-toggle"); - } - - function getLabelForCheckBox() { - return document.getElementById("label-for-line-wrapping-toggle"); - } - - function findCodeBlocks() { - var spans = document.getElementById("tabs").getElementsByTagName("span"); - var codeBlocks = []; - for (var i = 0; i < spans.length; ++i) { - if (spans[i].className.indexOf("code") >= 0) { - codeBlocks.push(spans[i]); - } - } - return codeBlocks; - } - - function forAllCodeBlocks(operation) { - var codeBlocks = findCodeBlocks(); - - for (var i = 0; i < codeBlocks.length; ++i) { - operation(codeBlocks[i], "wrapped"); - } - } - - function toggleLineWrapping() { - var checkBox = getCheckBox(); - - if (checkBox.checked) { - forAllCodeBlocks(addClass); - } else { - forAllCodeBlocks(removeClass); - } - } - - function initControls() { - if (findCodeBlocks().length > 0) { - var checkBox = getCheckBox(); - var label = getLabelForCheckBox(); - - checkBox.onclick = toggleLineWrapping; - checkBox.checked = false; - - removeClass(label, "hidden"); - } - } - - function switchTab() { - var id = this.id.substr(1); - - for (var i = 0; i < tabs.tabs.length; i++) { - if (tabs.tabs[i].id === id) { - tabs.select(i); - break; - } - } - - return false; - } - - function select(i) { - this.deselectAll(); - - changeElementClass(this.tabs[i], "tab selected"); - changeElementClass(this.headers[i], "selected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var h2 = document.createElement("H2"); - - h2.appendChild(document.createTextNode(this.titles[i])); - this.headers[i].appendChild(h2); - } - - function deselectAll() { - for (var i = 0; i < this.tabs.length; i++) { - changeElementClass(this.tabs[i], "tab deselected"); - changeElementClass(this.headers[i], "deselected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var a = document.createElement("A"); - - a.setAttribute("id", "ltab" + i); - a.setAttribute("href", "#tab" + i); - a.onclick = switchTab; - a.appendChild(document.createTextNode(this.titles[i])); - - this.headers[i].appendChild(a); - } - } - - function findTabs(container) { - return findChildElements(container, "DIV", "tab"); - } - - function findHeaders(container) { - var owner = findChildElements(container, "UL", "tabLinks"); - return findChildElements(owner[0], "LI", null); - } - - function findTitles(tabs) { - var titles = []; - - for (var i = 0; i < tabs.length; i++) { - var tab = tabs[i]; - var header = findChildElements(tab, "H2", null)[0]; - - header.parentNode.removeChild(header); - - if (header.innerText) { - titles.push(header.innerText); - } else { - titles.push(header.textContent); - } - } - - return titles; - } - - function findChildElements(container, name, targetClass) { - var elements = []; - var children = container.childNodes; - - for (var i = 0; i < children.length; i++) { - var child = children.item(i); - - if (child.nodeType === 1 && child.nodeName === name) { - if (targetClass && child.className.indexOf(targetClass) < 0) { - continue; - } - - elements.push(child); - } - } - - return elements; - } - - // Entry point. - - window.onload = function() { - initTabs(); - initControls(); - }; -} (window, window.document)); \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml deleted file mode 100644 index ee4875a..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.HealthCheckTest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml deleted file mode 100644 index 3058f31..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.RepositoryTest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml deleted file mode 100644 index 0bf143d..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.SecurityTest.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml b/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml deleted file mode 100644 index 1c11671..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/junitreports/TEST-tests.XrayTest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/navigator-bullet.png b/Ansible/test/tests/build/reports/tests/unified_test/navigator-bullet.png deleted file mode 100644 index 36d90d395c51912e718b89dd88b4a3fb53aa1d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)G5@hw44>$jtc^drBsEhr7 z^X9?-KzfCWMC0vWtek#CBxB+XG+nX0$0e)!py)g%*!C9F3xb^$q9zV zJJ-RS;)J3Q3>X<0IJnsvq?E-OUUR%-Sh{}$*!>`a1>MbzjEoGd?5qriD%uRz5+)#_ z=~xvqF)}e2@@p|@3aYFDDdOf=+lQf0fP;_0P2842gi~-LkXsB?^cOvN)>U@o{(tlO y5-4a&(SrsYdr*b0AjKdWn<5ZqBsQ)A0t^5xc9&6bK}yU30000 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class nameMethod nameGroups
tests.SecurityTest  
@Test
 deleteUserTestpro
 deleteGroupTestpro
 generateAPIKeysTestpro
 verifyUsersTestpro
 createUsersTestpro
 regenerateAPIKeysTestpro
 createGroupTestpro
 createPermissionsTestpro
 deletePermissionsTestpro
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
tests.HealthCheckTest  
@Test
 healthCheckTestcommon
 pingTestcommon ping
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
tests.RepositoryTest  
@Test
 deleteDefaultReposTestpro
 createDefaultJCRReposTestjcr
 createSupportBundleJCATestjcr
 checkDefaultJCRReposTestjcr
 reCreateDefaultHAReposTestpro
 checkReposAreDeletedpro
 reCreateDefaultJCRReposTestjcr
 deleteReposTestpro
 checkDefaultHAReposTestpro
 deleteDefaultJCRReposTestjcr
 createDefaultHAReposTestpro
 deleteJCRReposTestjcr
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
tests.XrayTest  
@Test
 getPoliciesTestxray
 createSupportBundleTestxray
 getSystemMonitoringTestxray
 enableTLSRabbitMQTestxray
 createPolicyTestxray
 getIndexingConfigurationTestxray
 assignPolicyToWatchTestxray
 createIssueEventTestxray
 updateIssueEventTestxray
 deleteWatchTestxray
 createWatchTestxray
 xrayPingRequestTestxray
 xrayGetVersionTestxray
 updateWatchTestxray
 getBinaryManagerTestxray
 updatePolicyTestxray
 deletePolicyTestxray
 integrationConfigurationTestxray
 updateIndexingConfigurationTestxray
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html deleted file mode 100644 index 74162f7..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/groups.html +++ /dev/null @@ -1,6 +0,0 @@ -

Groups used for this test run

- - - - -
Group nameMethods
commonHealthCheckTest.pingTest()[pri:1, instance:tests.HealthCheckTest@483dde3c]
HealthCheckTest.healthCheckTest()[pri:0, instance:tests.HealthCheckTest@483dde3c]
pingHealthCheckTest.pingTest()[pri:1, instance:tests.HealthCheckTest@483dde3c]
proSecurityTest.verifyUsersTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:2, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.createDefaultHAReposTest()[pri:2, instance:tests.RepositoryTest@4f17d179]
SecurityTest.regenerateAPIKeysTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:4, instance:tests.SecurityTest@285aa2f9]
SecurityTest.createPermissionsTest()[pri:6, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.checkReposAreDeleted()[pri:10, instance:tests.RepositoryTest@4f17d179]
SecurityTest.deletePermissionsTest()[pri:7, instance:tests.SecurityTest@285aa2f9]
SecurityTest.generateAPIKeysTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:3, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.checkDefaultHAReposTest()[pri:3, instance:tests.RepositoryTest@4f17d179]
SecurityTest.createUsersTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:1, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.deleteDefaultReposTest()[pri:9, instance:tests.RepositoryTest@4f17d179]
SecurityTest.deleteUserTest(java.lang.Object, java.lang.Object, java.lang.Object)[pri:8, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.deleteReposTest()[pri:1, instance:tests.RepositoryTest@4f17d179]
SecurityTest.deleteGroupTest(java.lang.Object)[pri:9, instance:tests.SecurityTest@285aa2f9]
SecurityTest.createGroupTest(java.lang.Object)[pri:5, instance:tests.SecurityTest@285aa2f9]
RepositoryTest.reCreateDefaultHAReposTest()[pri:11, instance:tests.RepositoryTest@4f17d179]
xrayXrayTest.deleteWatchTest()[pri:8, instance:tests.XrayTest@53d7d172]
XrayTest.integrationConfigurationTest()[pri:11, instance:tests.XrayTest@53d7d172]
XrayTest.updateIndexingConfigurationTest()[pri:15, instance:tests.XrayTest@53d7d172]
XrayTest.xrayGetVersionTest()[pri:20, instance:tests.XrayTest@53d7d172]
XrayTest.deletePolicyTest()[pri:9, instance:tests.XrayTest@53d7d172]
XrayTest.getBinaryManagerTest()[pri:13, instance:tests.XrayTest@53d7d172]
XrayTest.updatePolicyTest()[pri:4, instance:tests.XrayTest@53d7d172]
XrayTest.updateWatchTest()[pri:6, instance:tests.XrayTest@53d7d172]
XrayTest.createWatchTest()[pri:5, instance:tests.XrayTest@53d7d172]
XrayTest.xrayPingRequestTest()[pri:19, instance:tests.XrayTest@53d7d172]
XrayTest.createIssueEventTest(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)[pri:1, instance:tests.XrayTest@53d7d172]
XrayTest.assignPolicyToWatchTest()[pri:7, instance:tests.XrayTest@53d7d172]
XrayTest.createPolicyTest()[pri:3, instance:tests.XrayTest@53d7d172]
XrayTest.enableTLSRabbitMQTest()[pri:12, instance:tests.XrayTest@53d7d172]
XrayTest.getIndexingConfigurationTest()[pri:14, instance:tests.XrayTest@53d7d172]
XrayTest.createSupportBundleTest()[pri:17, instance:tests.XrayTest@53d7d172]
XrayTest.getSystemMonitoringTest()[pri:18, instance:tests.XrayTest@53d7d172]
XrayTest.getPoliciesTest()[pri:4, instance:tests.XrayTest@53d7d172]
XrayTest.updateIssueEventTest(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)[pri:2, instance:tests.XrayTest@53d7d172]
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html deleted file mode 100644 index 706e7d0..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/index.html +++ /dev/null @@ -1,6 +0,0 @@ -Results for All API tests - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html deleted file mode 100644 index 432da36..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/main.html +++ /dev/null @@ -1,2 +0,0 @@ -Results for All API tests -Select a result on the left-hand pane. diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html deleted file mode 100644 index 81c0477..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-alphabetical.html +++ /dev/null @@ -1,212 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


All API tests

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/06/18 15:55:47 0      assignPolicyToWatchTestTest worker@545376742
20/06/18 15:54:24 -82860      checkDefaultHAReposTestTest worker@545376742
20/06/18 15:55:09 -38053      checkReposAreDeletedTest worker@545376742
20/06/18 15:54:21 -86131      createDefaultHAReposTestTest worker@545376742
20/06/18 15:55:29 -17622      createGroupTestTest worker@545376742
20/06/18 15:55:30 -17023      createGroupTestTest worker@545376742
20/06/18 15:55:31 -16403      createGroupTestTest worker@545376742
20/06/18 15:55:31 -15774      createGroupTestTest worker@545376742
20/06/18 15:55:32 -15157      createGroupTestTest worker@545376742
20/06/18 15:55:33 -14523      createGroupTestTest worker@545376742
20/06/18 15:55:33 -13909      createGroupTestTest worker@545376742
20/06/18 15:55:34 -13255      createGroupTestTest worker@545376742
20/06/18 15:55:35 -12599      createGroupTestTest worker@545376742
20/06/18 15:55:35 -11952      createGroupTestTest worker@545376742
20/06/18 15:55:44 -3003      createIssueEventTestTest worker@545376742
20/06/18 15:55:36 -11323      createPermissionsTestTest worker@545376742
20/06/18 15:55:45 -1951      createPolicyTestTest worker@545376742
20/06/18 15:55:50 2521      createSupportBundleTestTest worker@545376742
20/06/18 15:55:12 -34915      createUsersTestTest worker@545376742
20/06/18 15:55:13 -34435      createUsersTestTest worker@545376742
20/06/18 15:55:13 -33968      createUsersTestTest worker@545376742
20/06/18 15:55:14 -33470      createUsersTestTest worker@545376742
20/06/18 15:55:14 -33085      createUsersTestTest worker@545376742
20/06/18 15:55:14 -32676      createUsersTestTest worker@545376742
20/06/18 15:55:15 -32254      createUsersTestTest worker@545376742
20/06/18 15:55:15 -31835      createUsersTestTest worker@545376742
20/06/18 15:55:16 -31430      createUsersTestTest worker@545376742
20/06/18 15:55:16 -31013      createUsersTestTest worker@545376742
20/06/18 15:55:46 -921      createWatchTestTest worker@545376742
20/06/18 15:54:25 -82371      deleteDefaultReposTestTest worker@545376742
20/06/18 15:55:41 -6370      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 -6035      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 -5711      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 -5384      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 -5065      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 -4657      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 -4323      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 -3984      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 -3657      deleteGroupTestTest worker@545376742
20/06/18 15:55:44 -3335      deleteGroupTestTest worker@545376742
20/06/18 15:55:37 -10410      deletePermissionsTestTest worker@545376742
20/06/18 15:55:48 493      deletePolicyTestTest worker@545376742
20/06/18 15:54:19 -87607      deleteReposTestTest worker@545376742
20/06/18 15:55:37 -10034      deleteUserTestTest worker@545376742
20/06/18 15:55:37 -9631      deleteUserTestTest worker@545376742
20/06/18 15:55:38 -9284      deleteUserTestTest worker@545376742
20/06/18 15:55:38 -8872      deleteUserTestTest worker@545376742
20/06/18 15:55:39 -8535      deleteUserTestTest worker@545376742
20/06/18 15:55:39 -8135      deleteUserTestTest worker@545376742
20/06/18 15:55:39 -7785      deleteUserTestTest worker@545376742
20/06/18 15:55:40 -7434      deleteUserTestTest worker@545376742
20/06/18 15:55:40 -7084      deleteUserTestTest worker@545376742
20/06/18 15:55:40 -6705      deleteUserTestTest worker@545376742
20/06/18 15:55:47 240      deleteWatchTestTest worker@545376742
20/06/18 15:55:48 1124      enableTLSRabbitMQTestTest worker@545376742
20/06/18 15:55:20 -27289      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 -26472      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 -25929      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 -25429      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 -24965      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 -24517      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 -24060      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 -23618      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 -23146      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 -22678      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:49 1546      getBinaryManagerTestTest worker@545376742
20/06/18 15:55:49 1787      getIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:46 -1164      getPoliciesTestTest worker@545376742
20/06/18 15:55:54 7186      getSystemMonitoringTestTest worker@545376742
20/06/18 15:54:18 -89111      healthCheckTestTest worker@545376742
20/06/18 15:55:48 721      integrationConfigurationTestTest worker@545376742
20/06/18 15:54:19 -87856      pingTestTest worker@545376742
20/06/18 15:55:09 -37814      reCreateDefaultHAReposTestTest worker@545376742
20/06/18 15:55:25 -22199      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:25 -21726      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 -21279      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 -20803      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 -20329      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 -19879      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 -19457      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 -18978      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 -18528      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 -18079      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:54:18 -89294 >>setUp      Test worker@545376742
20/06/18 15:54:18 -89205 >>setUp      Test worker@545376742
20/06/18 15:54:18 -89121 >>setUp      Test worker@545376742
20/06/18 15:54:19 -87608  >>setUp     Test worker@545376742
20/06/18 15:55:44 -3004  >>testSetUp     Test worker@545376742
20/06/18 15:55:49 2058      updateIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:45 -2380      updateIssueEventTestTest worker@545376742
20/06/18 15:55:46 -1562      updatePolicyTestTest worker@545376742
20/06/18 15:55:47 -466      updateWatchTestTest worker@545376742
20/06/18 15:55:16 -30610      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 -30272      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 -29941      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 -29627      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 -29305      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 -28981      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 -28644      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 -28333      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 -27938      verifyUsersTestTest worker@545376742
20/06/18 15:55:20 -27601      verifyUsersTestTest worker@545376742
20/06/18 15:55:55 7481      xrayGetVersionTestTest worker@545376742
20/06/18 15:55:54 7365      xrayPingRequestTestTest worker@545376742
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html deleted file mode 100644 index 04743c3..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods-not-run.html +++ /dev/null @@ -1,8 +0,0 @@ -

Methods that were not run

- - - - - - -
tests.RepositoryTest.deleteJCRReposTest
tests.RepositoryTest.deleteDefaultJCRReposTest
tests.RepositoryTest.reCreateDefaultJCRReposTest
tests.RepositoryTest.createSupportBundleJCATest
tests.RepositoryTest.checkDefaultJCRReposTest
tests.RepositoryTest.createDefaultJCRReposTest
\ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html deleted file mode 100644 index 1101d8f..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/methods.html +++ /dev/null @@ -1,212 +0,0 @@ -

Methods run, sorted chronologically

>> means before, << means after


All API tests

(Hover the method name to see the test class name)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
20/06/18 15:54:18 0 >>setUp      Test worker@545376742
20/06/18 15:54:18 89 >>setUp      Test worker@545376742
20/06/18 15:54:18 173 >>setUp      Test worker@545376742
20/06/18 15:54:18 183      healthCheckTestTest worker@545376742
20/06/18 15:54:19 1438      pingTestTest worker@545376742
20/06/18 15:54:19 1686  >>setUp     Test worker@545376742
20/06/18 15:54:19 1687      deleteReposTestTest worker@545376742
20/06/18 15:54:21 3163      createDefaultHAReposTestTest worker@545376742
20/06/18 15:54:24 6434      checkDefaultHAReposTestTest worker@545376742
20/06/18 15:54:25 6923      deleteDefaultReposTestTest worker@545376742
20/06/18 15:55:09 51241      checkReposAreDeletedTest worker@545376742
20/06/18 15:55:09 51480      reCreateDefaultHAReposTestTest worker@545376742
20/06/18 15:55:12 54379      createUsersTestTest worker@545376742
20/06/18 15:55:13 54859      createUsersTestTest worker@545376742
20/06/18 15:55:13 55326      createUsersTestTest worker@545376742
20/06/18 15:55:14 55824      createUsersTestTest worker@545376742
20/06/18 15:55:14 56209      createUsersTestTest worker@545376742
20/06/18 15:55:14 56618      createUsersTestTest worker@545376742
20/06/18 15:55:15 57040      createUsersTestTest worker@545376742
20/06/18 15:55:15 57459      createUsersTestTest worker@545376742
20/06/18 15:55:16 57864      createUsersTestTest worker@545376742
20/06/18 15:55:16 58281      createUsersTestTest worker@545376742
20/06/18 15:55:16 58684      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 59022      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 59353      verifyUsersTestTest worker@545376742
20/06/18 15:55:17 59667      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 59989      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 60313      verifyUsersTestTest worker@545376742
20/06/18 15:55:18 60650      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 60961      verifyUsersTestTest worker@545376742
20/06/18 15:55:19 61356      verifyUsersTestTest worker@545376742
20/06/18 15:55:20 61693      verifyUsersTestTest worker@545376742
20/06/18 15:55:20 62005      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 62822      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:21 63365      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 63865      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:22 64329      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 64777      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 65234      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:23 65676      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 66148      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:24 66616      generateAPIKeysTestTest worker@545376742
20/06/18 15:55:25 67095      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:25 67568      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 68015      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:26 68491      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 68965      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:27 69415      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 69837      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:28 70316      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 70766      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 71215      regenerateAPIKeysTestTest worker@545376742
20/06/18 15:55:29 71672      createGroupTestTest worker@545376742
20/06/18 15:55:30 72271      createGroupTestTest worker@545376742
20/06/18 15:55:31 72891      createGroupTestTest worker@545376742
20/06/18 15:55:31 73520      createGroupTestTest worker@545376742
20/06/18 15:55:32 74137      createGroupTestTest worker@545376742
20/06/18 15:55:33 74771      createGroupTestTest worker@545376742
20/06/18 15:55:33 75385      createGroupTestTest worker@545376742
20/06/18 15:55:34 76039      createGroupTestTest worker@545376742
20/06/18 15:55:35 76695      createGroupTestTest worker@545376742
20/06/18 15:55:35 77342      createGroupTestTest worker@545376742
20/06/18 15:55:36 77971      createPermissionsTestTest worker@545376742
20/06/18 15:55:37 78884      deletePermissionsTestTest worker@545376742
20/06/18 15:55:37 79260      deleteUserTestTest worker@545376742
20/06/18 15:55:37 79663      deleteUserTestTest worker@545376742
20/06/18 15:55:38 80010      deleteUserTestTest worker@545376742
20/06/18 15:55:38 80422      deleteUserTestTest worker@545376742
20/06/18 15:55:39 80759      deleteUserTestTest worker@545376742
20/06/18 15:55:39 81159      deleteUserTestTest worker@545376742
20/06/18 15:55:39 81509      deleteUserTestTest worker@545376742
20/06/18 15:55:40 81860      deleteUserTestTest worker@545376742
20/06/18 15:55:40 82210      deleteUserTestTest worker@545376742
20/06/18 15:55:40 82589      deleteUserTestTest worker@545376742
20/06/18 15:55:41 82924      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 83259      deleteGroupTestTest worker@545376742
20/06/18 15:55:41 83583      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 83910      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 84229      deleteGroupTestTest worker@545376742
20/06/18 15:55:42 84637      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 84971      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 85310      deleteGroupTestTest worker@545376742
20/06/18 15:55:43 85637      deleteGroupTestTest worker@545376742
20/06/18 15:55:44 85959      deleteGroupTestTest worker@545376742
20/06/18 15:55:44 86290  >>testSetUp     Test worker@545376742
20/06/18 15:55:44 86291      createIssueEventTestTest worker@545376742
20/06/18 15:55:45 86914      updateIssueEventTestTest worker@545376742
20/06/18 15:55:45 87343      createPolicyTestTest worker@545376742
20/06/18 15:55:46 87732      updatePolicyTestTest worker@545376742
20/06/18 15:55:46 88130      getPoliciesTestTest worker@545376742
20/06/18 15:55:46 88373      createWatchTestTest worker@545376742
20/06/18 15:55:47 88828      updateWatchTestTest worker@545376742
20/06/18 15:55:47 89294      assignPolicyToWatchTestTest worker@545376742
20/06/18 15:55:47 89534      deleteWatchTestTest worker@545376742
20/06/18 15:55:48 89787      deletePolicyTestTest worker@545376742
20/06/18 15:55:48 90015      integrationConfigurationTestTest worker@545376742
20/06/18 15:55:48 90418      enableTLSRabbitMQTestTest worker@545376742
20/06/18 15:55:49 90840      getBinaryManagerTestTest worker@545376742
20/06/18 15:55:49 91081      getIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:49 91352      updateIndexingConfigurationTestTest worker@545376742
20/06/18 15:55:50 91815      createSupportBundleTestTest worker@545376742
20/06/18 15:55:54 96480      getSystemMonitoringTestTest worker@545376742
20/06/18 15:55:54 96659      xrayPingRequestTestTest worker@545376742
20/06/18 15:55:55 96775      xrayGetVersionTestTest worker@545376742
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html deleted file mode 100644 index 4f0038f..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/reporter-output.html +++ /dev/null @@ -1,103 +0,0 @@ -

Reporter output

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy
- Ping test. Service is OK
- Delete sample HA repositories. All repositories were successfully deleted
- Create repositories for HA distribution. Successfully created
- Verify HA repos were created. 84 repositories were created
- Delete HA repositories. All repositories were successfully deleted
- Verify repo were deleted. 0 repositories remain
- Re-create repositories for HA distribution. Successfully created
- Create users. User testuser0 created successfully
- Create users. User testuser1 created successfully
- Create users. User testuser2 created successfully
- Create users. User testuser3 created successfully
- Create users. User testuser4 created successfully
- Create users. User testuser5 created successfully
- Create users. User testuser6 created successfully
- Create users. User testuser7 created successfully
- Create users. User testuser8 created successfully
- Create users. User testuser9 created successfully
- Verify created users. User testuser0 was successfully verified
- Verify created users. User testuser1 was successfully verified
- Verify created users. User testuser2 was successfully verified
- Verify created users. User testuser3 was successfully verified
- Verify created users. User testuser4 was successfully verified
- Verify created users. User testuser5 was successfully verified
- Verify created users. User testuser6 was successfully verified
- Verify created users. User testuser7 was successfully verified
- Verify created users. User testuser8 was successfully verified
- Verify created users. User testuser9 was successfully verified
- Generate API keys. Key for testuser0 created successfully
- Generate API keys. Key for testuser1 created successfully
- Generate API keys. Key for testuser2 created successfully
- Generate API keys. Key for testuser3 created successfully
- Generate API keys. Key for testuser4 created successfully
- Generate API keys. Key for testuser5 created successfully
- Generate API keys. Key for testuser6 created successfully
- Generate API keys. Key for testuser7 created successfully
- Generate API keys. Key for testuser8 created successfully
- Generate API keys. Key for testuser9 created successfully
- Re-generate API keys. Key for testuser0 re-generated successfully
- Re-generate API keys. Key for testuser1 re-generated successfully
- Re-generate API keys. Key for testuser2 re-generated successfully
- Re-generate API keys. Key for testuser3 re-generated successfully
- Re-generate API keys. Key for testuser4 re-generated successfully
- Re-generate API keys. Key for testuser5 re-generated successfully
- Re-generate API keys. Key for testuser6 re-generated successfully
- Re-generate API keys. Key for testuser7 re-generated successfully
- Re-generate API keys. Key for testuser8 re-generated successfully
- Re-generate API keys. Key for testuser9 re-generated successfully
- Create group. Group test-group-0 was successfully created
- Create group. Group test-group-1 was successfully created
- Create group. Group test-group-2 was successfully created
- Create group. Group test-group-3 was successfully created
- Create group. Group test-group-4 was successfully created
- Create group. Group test-group-5 was successfully created
- Create group. Group test-group-6 was successfully created
- Create group. Group test-group-7 was successfully created
- Create group. Group test-group-8 was successfully created
- Create group. Group test-group-9 was successfully created
- Create permissions. Permissions successfully created and verified
- Delete permissions. User testPermission has been removed successfully
- Delete user. User testuser0 has been removed successfully
- Delete user. User testuser1 has been removed successfully
- Delete user. User testuser2 has been removed successfully
- Delete user. User testuser3 has been removed successfully
- Delete user. User testuser4 has been removed successfully
- Delete user. User testuser5 has been removed successfully
- Delete user. User testuser6 has been removed successfully
- Delete user. User testuser7 has been removed successfully
- Delete user. User testuser8 has been removed successfully
- Delete user. User testuser9 has been removed successfully
- Delete group. Group test-group-0 has been removed successfully
- Delete group. Group test-group-1 has been removed successfully
- Delete group. Group test-group-2 has been removed successfully
- Delete group. Group test-group-3 has been removed successfully
- Delete group. Group test-group-4 has been removed successfully
- Delete group. Group test-group-5 has been removed successfully
- Delete group. Group test-group-6 has been removed successfully
- Delete group. Group test-group-7 has been removed successfully
- Delete group. Group test-group-8 has been removed successfully
- Delete group. Group test-group-9 has been removed successfully
- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully
- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully
- Create policy. Policy with name security_policy_4206031 created and verified successfully
- Update policy. Policy with name security_policy_4206031 updated and verified successfully
- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031]
- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully
- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully
- Assign policy to watch. Policy assigned successfully to Watch
- Delete watch. Watch all-repositories_4206031 has been successfully deleted
- Delete policy. Policy security_policy_4206031 has been successfully deleted
- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified
- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified
- Get binary manager. Binary manager is verified, connected RT version: 7.4.1
- Get repo indexing configuration.
- Update repo indexing configuration. Successfully updated
- Create support bundle. Created with a bug, localhost instead of the hostname
- Get system monitoring status. Data returned successfully
- Get system monitoring status. Data returned successfully
- Get X-ray version. Version: 3.3.0, revision: 3980dcb
\ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html deleted file mode 100644 index 6fbff4b..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/testng.xml.html +++ /dev/null @@ -1 +0,0 @@ -testng.xml for All API tests<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All API tests" guice-stage="DEVELOPMENT" verbose="0">
  <groups>
    <run>
      <include name="common"/>
      <include name="pro"/>
      <include name="xray"/>
    </run>
  </groups>
  <test thread-count="5" name="tests.HealthCheckTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.HealthCheckTest"/>
    </classes>
  </test> <!-- tests.HealthCheckTest -->
  <test thread-count="5" name="tests.RepositoryTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.RepositoryTest"/>
    </classes>
  </test> <!-- tests.RepositoryTest -->
  <test thread-count="5" name="tests.SecurityTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.SecurityTest"/>
    </classes>
  </test> <!-- tests.SecurityTest -->
  <test thread-count="5" name="tests.XrayTest" verbose="0">
    <groups>
      <run>
        <include name="common"/>
        <include name="pro"/>
        <include name="xray"/>
      </run>
    </groups>
    <classes>
      <class name="tests.XrayTest"/>
    </classes>
  </test> <!-- tests.XrayTest -->
</suite> <!-- All API tests -->
\ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties deleted file mode 100644 index eca880c..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.HealthCheckTest.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties deleted file mode 100644 index eca880c..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.RepositoryTest.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties deleted file mode 100644 index eca880c..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.SecurityTest.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties deleted file mode 100644 index eca880c..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/tests.XrayTest.properties +++ /dev/null @@ -1 +0,0 @@ -[SuiteResult context=tests.HealthCheckTest][SuiteResult context=tests.RepositoryTest][SuiteResult context=tests.SecurityTest][SuiteResult context=tests.XrayTest] \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html b/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html deleted file mode 100644 index 71ef1bf..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/All API tests/toc.html +++ /dev/null @@ -1,54 +0,0 @@ - - -Results for All API tests - - - - -

Results for
All API tests

- - - - - - - - - - -
4 tests4 classes36 methods:
-  chronological
-  alphabetical
-  not run (6)
4 groupsreporter outputtestng.xml
- -

-

-
tests.HealthCheckTest (2/0/0) - Results -
-
- - -

-

-
tests.RepositoryTest (6/0/0) - Results -
-
- - -

-

-
tests.SecurityTest (72/0/0) - Results -
-
- - -

-

-
tests.XrayTest (19/0/0) - Results -
-
- \ No newline at end of file diff --git a/Ansible/test/tests/build/reports/tests/unified_test/old/index.html b/Ansible/test/tests/build/reports/tests/unified_test/old/index.html deleted file mode 100644 index 5845aa4..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/old/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - -

Test results

- - - -
SuitePassedFailedSkippedtestng.xml
Total9900 
All API tests9900Link
diff --git a/Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html b/Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html deleted file mode 100644 index 4c1808b..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/packages/tests.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Test results - Package tests - - - - - -
-

Package tests

- -
- - - - - -
-
- - - - - - - -
-
-
99
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
1m36.65s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-HealthCheckTest -2001.481s100%
-RepositoryTest -60052.675s100%
-SecurityTest -720031.877s100%
-XrayTest -190010.615s100%
-
-
- -
- - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/passed.png b/Ansible/test/tests/build/reports/tests/unified_test/passed.png deleted file mode 100644 index 45e85bbfd0f5e85def14b896cfd4331675be2759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmV4Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0GLTcK~yLeW0ahz`=5aXz(j&tuu_sWu%O#uE8~VD zl&lrR;HF{4AT>#kuni$fu3*LaYg^!kpg8GS-X(?~-@n6gsDV2}@4opAtDmldYd~=l z$fS+YQyErY*vatm`)9DCL(k8^6@wTk8o(y4Wnh>XTmx2AyLA%7m+#+DG@v*MBy;8c pT?UXs5IFYyJeWo%7zba(0RWt9G$oT4y{G^H002ovPDHLkV1nS74Tx0C)j~RNrgUP!#^!Wu36$i#lf!2|j3%Ze&w*L!7p2SGvtw>Nd9_NSmf@ zT$;ut?S8Na*^6&F#dq-sKKTa>*@JI;k`2ZbVfd_wB24xov!0tYO(#d#()tZ$I5%3%!zLYh@BH>w}XODA7?mkV}ap}jU$$3 zG&Mk)3Bm`(LOM&hKscCb;PVaG&Vdx+MpZJHTQ(R_;DA31$+jOGBoLXk_De?ey1m!ik&_4G zH9n^))_*|$z4!HUisgBd@awc5jn(v9k~&t~+vLrrBg4dZQ9lDnLV}JQWGLW~LJVP= zW5lZXOcog;N~F?hbX0k=IMzETla}oqM|jC!4!B+x^;@#I_Tc-T-6hwKycLDTx1-om z?X`jFy0R0R8-I0SrK4`)H@W4T8*Qr#2vPou<*`U!Wy(*2QP*`g=8#jD{B;Y@GL-Hm zb`n?&x~%YC_$q7)PlXr4m%r4=&fcvN%Ybn#KC7Nn&Bp8{(oE9pWVpYI^+LuN`H(R~ zTAjWmO`M83^4d@fCkA(d>*nHIFV_d2yUbnT`nd?LE^;G|!WZ>Ld?E0@Grm4ww{M7H zr`x{MWb30bTI;*hk-DO>dX$gbC-yy#suLNqvA(f>RtPJ!qGM`Gvvf}Y10`)vm-7Xa z?-7Ixe2A_siI1ydSCCID3U8SVUY86>uSnT0use_K1GZDvUFKY)t}F* z)!pahe+zh{{06Bb3f97*Uorpy0Axu-K~yLeV|;sz;XeZjfQbaPV5M*kLYBBKLY9MT zcz2wU0a*fOGe`_12Lo^oAOUnu=!!vVSU?0aK-Pq8GE5DM4KP7`G=>J4GmvdUHULEf pOfgIWHcfC1=!$V^Vx)OY0{~v*D#slo71{s*002ovPDHLkV1jLYy!8M8 diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css b/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css deleted file mode 100644 index 6c65926..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.css +++ /dev/null @@ -1,309 +0,0 @@ -body { - margin: 0px 0px 5px 5px; -} - -ul { - margin: 0px; -} - -li { - list-style-type: none; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.navigator-selected { - background: #ffa500; -} - -.wrapper { - position: absolute; - top: 60px; - bottom: 0; - left: 400px; - right: 0; - overflow: auto; -} - -.navigator-root { - position: absolute; - top: 60px; - bottom: 0; - left: 0; - width: 400px; - overflow-y: auto; -} - -.suite { - margin: 0px 10px 10px 0px; - background-color: #fff8dc; -} - -.suite-name { - padding-left: 10px; - font-size: 25px; - font-family: Times; -} - -.main-panel-header { - padding: 5px; - background-color: #9FB4D9; //afeeee; - font-family: monospace; - font-size: 18px; -} - -.main-panel-content { - padding: 5px; - margin-bottom: 10px; - background-color: #DEE8FC; //d0ffff; -} - -.rounded-window { - border-radius: 10px; - border-style: solid; - border-width: 1px; -} - -.rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; - border-style: solid; - border-width: 1px; - overflow: auto; -} - -.light-rounded-window-top { - border-top-right-radius: 10px 10px; - border-top-left-radius: 10px 10px; -} - -.rounded-window-bottom { - border-style: solid; - border-width: 0px 1px 1px 1px; - border-bottom-right-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - overflow: auto; -} - -.method-name { - font-size: 12px; - font-family: monospace; -} - -.method-content { - border-style: solid; - border-width: 0px 0px 1px 0px; - margin-bottom: 10; - padding-bottom: 5px; - width: 80%; -} - -.parameters { - font-size: 14px; - font-family: monospace; -} - -.stack-trace { - white-space: pre; - font-family: monospace; - font-size: 12px; - font-weight: bold; - margin-top: 0px; - margin-left: 20px; -} - -.testng-xml { - font-family: monospace; -} - -.method-list-content { - margin-left: 10px; -} - -.navigator-suite-content { - margin-left: 10px; - font: 12px 'Lucida Grande'; -} - -.suite-section-title { - margin-top: 10px; - width: 80%; - border-style: solid; - border-width: 1px 0px 0px 0px; - font-family: Times; - font-size: 18px; - font-weight: bold; -} - -.suite-section-content { - list-style-image: url(bullet_point.png); -} - -.top-banner-root { - position: absolute; - top: 0; - height: 45px; - left: 0; - right: 0; - padding: 5px; - margin: 0px 0px 5px 0px; - background-color: #0066ff; - font-family: Times; - color: #fff; - text-align: center; -} - -.top-banner-title-font { - font-size: 25px; -} - -.test-name { - font-family: 'Lucida Grande'; - font-size: 16px; -} - -.suite-icon { - padding: 5px; - float: right; - height: 20; -} - -.test-group { - font: 20px 'Lucida Grande'; - margin: 5px 5px 10px 5px; - border-width: 0px 0px 1px 0px; - border-style: solid; - padding: 5px; -} - -.test-group-name { - font-weight: bold; -} - -.method-in-group { - font-size: 16px; - margin-left: 80px; -} - -table.google-visualization-table-table { - width: 100%; -} - -.reporter-method-name { - font-size: 14px; - font-family: monospace; -} - -.reporter-method-output-div { - padding: 5px; - margin: 0px 0px 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0px 0px 0px 1px; - border-style: solid; -} - -.ignored-class-div { - font-size: 14px; - font-family: monospace; -} - -.ignored-methods-div { - padding: 5px; - margin: 0px 0px 5px 20px; - font-size: 12px; - font-family: monospace; - border-width: 0px 0px 0px 1px; - border-style: solid; -} - -.border-failed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0px 0px 0px 10px; - border-color: #f00; -} - -.border-skipped { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0px 0px 0px 10px; - border-color: #edc600; -} - -.border-passed { - border-top-left-radius: 10px 10px; - border-bottom-left-radius: 10px 10px; - border-style: solid; - border-width: 0px 0px 0px 10px; - border-color: #19f52d; -} - -.times-div { - text-align: center; - padding: 5px; -} - -.suite-total-time { - font: 16px 'Lucida Grande'; -} - -.configuration-suite { - margin-left: 20px; -} - -.configuration-test { - margin-left: 40px; -} - -.configuration-class { - margin-left: 60px; -} - -.configuration-method { - margin-left: 80px; -} - -.test-method { - margin-left: 100px; -} - -.chronological-class { - background-color: #0ccff; - border-style: solid; - border-width: 0px 0px 1px 1px; -} - -.method-start { - float: right; -} - -.chronological-class-name { - padding: 0px 0px 0px 5px; - color: #008; -} - -.after, .before, .test-method { - font-family: monospace; - font-size: 14px; -} - -.navigator-suite-header { - font-size: 22px; - margin: 0px 10px 5px 0px; - background-color: #deb887; - text-align: center; -} - -.collapse-all-icon { - padding: 5px; - float: right; -} diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js b/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js deleted file mode 100644 index b147043..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/testng-reports.js +++ /dev/null @@ -1,122 +0,0 @@ -$(document).ready(function() { - $('a.navigator-link').click(function() { - // Extract the panel for this link - var panel = getPanelName($(this)); - - // Mark this link as currently selected - $('.navigator-link').parent().removeClass('navigator-selected'); - $(this).parent().addClass('navigator-selected'); - - showPanel(panel); - }); - - installMethodHandlers('failed'); - installMethodHandlers('skipped'); - installMethodHandlers('passed', true); // hide passed methods by default - - $('a.method').click(function() { - showMethod($(this)); - return false; - }); - - // Hide all the panels and display the first one (do this last - // to make sure the click() will invoke the listeners) - $('.panel').hide(); - $('.navigator-link').first().click(); - - // Collapse/expand the suites - $('a.collapse-all-link').click(function() { - var contents = $('.navigator-suite-content'); - if (contents.css('display') == 'none') { - contents.show(); - } else { - contents.hide(); - } - }); -}); - -// The handlers that take care of showing/hiding the methods -function installMethodHandlers(name, hide) { - function getContent(t) { - return $('.method-list-content.' + name + "." + t.attr('panel-name')); - } - - function getHideLink(t, name) { - var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); - return $(s); - } - - function getShowLink(t, name) { - return $('a.show-methods.' + name + "." + t.attr('panel-name')); - } - - function getMethodPanelClassSel(element, name) { - var panelName = getPanelName(element); - var sel = '.' + panelName + "-class-" + name; - return $(sel); - } - - $('a.hide-methods.' + name).click(function() { - var w = getContent($(this)); - w.hide(); - getHideLink($(this), name).hide(); - getShowLink($(this), name).show(); - getMethodPanelClassSel($(this), name).hide(); - }); - - $('a.show-methods.' + name).click(function() { - var w = getContent($(this)); - w.show(); - getHideLink($(this), name).show(); - getShowLink($(this), name).hide(); - showPanel(getPanelName($(this))); - getMethodPanelClassSel($(this), name).show(); - }); - - if (hide) { - $('a.hide-methods.' + name).click(); - } else { - $('a.show-methods.' + name).click(); - } -} - -function getHashForMethod(element) { - return element.attr('hash-for-method'); -} - -function getPanelName(element) { - return element.attr('panel-name'); -} - -function showPanel(panelName) { - $('.panel').hide(); - var panel = $('.panel[panel-name="' + panelName + '"]'); - panel.show(); -} - -function showMethod(element) { - var hashTag = getHashForMethod(element); - var panelName = getPanelName(element); - showPanel(panelName); - var current = document.location.href; - var base = current.substring(0, current.indexOf('#')) - document.location.href = base + '#' + hashTag; - var newPosition = $(document).scrollTop() - 65; - $(document).scrollTop(newPosition); -} - -function drawTable() { - for (var i = 0; i < suiteTableInitFunctions.length; i++) { - window[suiteTableInitFunctions[i]](); - } - - for (var k in window.suiteTableData) { - var v = window.suiteTableData[k]; - var div = v.tableDiv; - var data = v.tableData - var table = new google.visualization.Table(document.getElementById(div)); - table.draw(data, { - showRowNumber : false - }); - } -} diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml b/Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml deleted file mode 100644 index 5d158a9..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/testng-results.xml +++ /dev/null @@ -1,2134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/reports/tests/unified_test/testng.css b/Ansible/test/tests/build/reports/tests/unified_test/testng.css deleted file mode 100644 index 3904800..0000000 --- a/Ansible/test/tests/build/reports/tests/unified_test/testng.css +++ /dev/null @@ -1,9 +0,0 @@ -.invocation-failed, .test-failed { background-color: #DD0000; } -.invocation-percent, .test-percent { background-color: #006600; } -.invocation-passed, .test-passed { background-color: #00AA00; } -.invocation-skipped, .test-skipped { background-color: #CCCC00; } - -.main-page { - font-size: x-large; -} - diff --git a/Ansible/test/tests/build/resources/test/enableRabbitMQ.json b/Ansible/test/tests/build/resources/test/enableRabbitMQ.json deleted file mode 100644 index c6e54d4..0000000 --- a/Ansible/test/tests/build/resources/test/enableRabbitMQ.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "sslInsecure": false, - "maxDiskDataUsage": 80, - "monitorSamplingInterval": 300, - "mailNoSsl": false, - "messageMaxTTL": 7, - "jobInterval": 86400, - "allowSendingAnalytics": true, - "httpsPort": 443, - "enableTlsConnectionToRabbitMQ": true -} \ No newline at end of file diff --git a/Ansible/test/tests/build/resources/test/integration.json b/Ansible/test/tests/build/resources/test/integration.json deleted file mode 100644 index 08ba303..0000000 --- a/Ansible/test/tests/build/resources/test/integration.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "vendor": "whitesource5", - "api_key": "12345", - "enabled": true, - "context": "project_id", - "url": "https://saas.whitesourcesoftware.com/xray", - "description": "WhiteSource provides a simple yet powerful open source security and licenses management solution. More details at http://www.whitesourcesoftware.com.", - "test_url": "https://saas.whitesourcesoftware.com/xray/api/checkauth" -} \ No newline at end of file diff --git a/Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml b/Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml deleted file mode 100644 index ef1f5fd..0000000 --- a/Ansible/test/tests/build/resources/test/repositories/CreateDefault.yaml +++ /dev/null @@ -1,554 +0,0 @@ -localRepositories: - libs-release-local: - type: maven - description: "production deployment" - repoLayout: maven-2-default - xray: - enabled: true - libs-snapshot-local: - type: maven - description: "snapshot deployment" - repoLayout: maven-2-default - xray: - enabled: true - maven-prod-local: - type: maven - description: "production release deployment" - repoLayout: maven-2-default - xray: - enabled: true - maven-dev-local: - type: maven - description: "development release deployment" - repoLayout: maven-2-default - xray: - enabled: true - maven-release-local: - type: maven - description: "development release deployment" - repoLayout: maven-2-default - xray: - enabled: true - maven-snapshot-local: - type: maven - description: "development release deployment" - repoLayout: maven-2-default - xray: - enabled: true - gradle-prod-local: - type: gradle - description: "production deployment" - repoLayout: gradle-default - xray: - enabled: true - gradle-dev-local: - type: gradle - description: "development deployment" - repoLayout: gradle-default - xray: - enabled: true - tomcat-local: - type: generic - description: "used by demo" - repoLayout: simple-default - xray: - enabled: true - generic-prod-local: - type: generic - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - generic-dev-local: - type: generic - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - ivy-prod-local: - type: ivy - description: "production deployment" - repoLayout: "ivy-default" - xray: - enabled: true - ivy-dev-local: - type: ivy - description: "development deployment" - repoLayout: ivy-default - xray: - enabled: true - helm-prod-local: - type: helm - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - helm-dev-local: - type: helm - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - sbt-prod-local: - type: sbt - description: "production deployment" - repoLayout: sbt-default - xray: - enabled: true - sbt-dev-local: - type: sbt - description: "development deployment" - repoLayout: sbt-default - xray: - enabled: true - nuget-prod-local: - type: nuget - description: "production deployment" - repoLayout: nuget-default - xray: - enabled: true - nuget-dev-local: - type: nuget - description: "development deployment" - repoLayout: nuget-default - xray: - enabled: true - gems-prod-local: - type: gems - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - gems-dev-local: - type: gems - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - npm-prod-local: - type: npm - description: "production deployment" - repoLayout: npm-default - xray: - enabled: true - npm-dev-local: - type: npm - description: "development deployment" - repoLayout: npm-default - xray: - enabled: true - bower-prod-local: - type: bower - description: "production deployment" - repoLayout: bower-default - xray: - enabled: true - bower-dev-local: - type: bower - description: "development deployment" - repoLayout: bower-default - xray: - enabled: true - debian-prod-local: - type: debian - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - debian-dev-local: - type: debian - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - php-prod-local: - type: composer - description: "production deployment" - repoLayout: composer-default - xray: - enabled: true - php-dev-local: - type: composer - description: "development deployment" - repoLayout: composer-default - xray: - enabled: true - pypi-prod-local: - type: pypi - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - pypi-dev-local: - type: pypi - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - docker-prod-local: - type: docker - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - docker-stage-local: - type: docker - description: "stage deployment" - repoLayout: simple-default - xray: - enabled: true - docker-dev-local: - type: docker - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - docker-local: - type: docker - description: "docker deployment" - repoLayout: simple-default - xray: - enabled: true - docker-push: - type: docker - description: "docker push repo for push replication testing" - repoLayout: simple-default - xray: - enabled: true - vagrant-prod-local: - type: vagrant - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - vagrant-dev-local: - type: vagrant - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - gitlfs-prod-local: - type: gitlfs - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - gitlfs-dev-local: - type: gitlfs - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - rpm-prod-local: - type: yum - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - rpm-dev-local: - type: yum - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - conan-prod-local: - type: conan - description: "production deployment" - repoLayout: conan-default - xray: - enabled: true - conan-dev-local: - type: conan - description: "development deployment" - repoLayout: conan-default - xray: - enabled: true - chef-prod-local: - type: chef - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - chef-dev-local: - type: chef - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - puppet-prod-local: - type: puppet - description: "production deployment" - repoLayout: puppet-default - xray: - enabled: true - puppet-dev-local: - type: puppet - description: "development deployment" - repoLayout: puppet-default - xray: - enabled: true - go-prod-local: - type: go - description: "production deployment" - repoLayout: go-default - xray: - enabled: true - go-staging-local: - type: go - description: "production deployment" - repoLayout: go-default - xray: - enabled: true -remoteRepositories: - docker-remote: - type: docker - url: https://registry-1.docker.io - repoLayout: simple-default - enableTokenAuthentication: true - xray: - enabled: true - helm-remote: - type: helm - url: https://storage.googleapis.com/kubernetes-charts - repoLayout: simple-default - xray: - enabled: true - jcenter: - type: maven - url: https://jcenter.bintray.com - repoLayout: maven-2-default - xray: - enabled: true - npm-remote: - type: npm - url: https://registry.npmjs.org - repoLayout: npm-default - xray: - enabled: true - nuget-remote: - type: nuget - url: https://www.nuget.org/ - repoLayout: nuget-default - xray: - enabled: true - bower-remote: - type: bower - url: https://github.com/ - repoLayout: bower-default - xray: - enabled: true - gems-remote: - type: gems - url: https://rubygems.org/ - repoLayout: simple-default - xray: - enabled: true - debian-remote: - type: debian - url: http://archive.ubuntu.com/ubuntu/ - repoLayout: simple-default - xray: - enabled: true - php-remote: - type: composer - url: https://github.com/ - repoLayout: composer-default - xray: - enabled: true - pypi-remote: - type: pypi - url: https://files.pythonhosted.org - repoLayout: simple-default - xray: - enabled: true - rpm-remote: - type: yum - url: http://mirror.centos.org/centos/ - repoLayout: simple-default - xray: - enabled: true - chef-remote: - type: chef - url: https://supermarket.chef.io - repoLayout: simple-default - xray: - enabled: true - puppet-remote: - type: puppet - url: https://forgeapi.puppetlabs.com/ - repoLayout: puppet-default - xray: - enabled: true -virtualRepositories: - maven-release-virtual: - type: maven - repositories: - - maven-prod-local - - jcenter - - maven-release-local - - libs-release-local - description: "maven release virtual repositories" - defaultDeploymentRepo: maven-release-local - maven-snapshot-virtual: - type: maven - repositories: - - maven-snapshot-local - - jcenter - - maven-dev-local - - libs-snapshot-local - description: "maven snapshot virtual repositories" - defaultDeploymentRepo: maven-snapshot-local - gradle-virtual: - type: gradle - repositories: - - gradle-dev-local - - jcenter - - gradle-prod-local - - libs-release-local - description: "gradle virtual repositories" - defaultDeploymentRepo: gradle-dev-local - docker-PLACEHOLDERFORBUILDSTEP: - type: docker - repositories: - - docker-local - - docker-remote - - docker-dev-local - - docker-prod-local - - docker-stage-local - - docker-push - description: "docker virtual" - defaultDeploymentRepo: docker-stage-local - docker-virtual: - type: docker - repositories: - - docker-local - - docker-remote - - docker-dev-local - - docker-prod-local - - docker-stage-local - - docker-push - description: "docker virtual" - defaultDeploymentRepo: docker-stage-local - libs-release: - type: maven - repositories: - - libs-release-local - - jcenter - description: "maven libraries virtual" - defaultDeploymentRepo: libs-release-local - libs-snapshot: - type: maven - repositories: - - libs-snapshot-local - - jcenter - description: "maven libraries virtual" - defaultDeploymentRepo: libs-snapshot-local - ivy-virtual: - type: ivy - repositories: - - ivy-prod-local - - ivy-dev-local - - jcenter - description: "ivy virtual" - defaultDeploymentRepo: ivy-dev-local - generic-virtual: - type: generic - repositories: - - generic-prod-local - - generic-dev-local - description: "generic virtual" - defaultDeploymentRepo: generic-dev-local - helm-virtual: - type: helm - repositories: - - helm-prod-local - - helm-dev-local - - helm-remote - description: "helm virtual" - defaultDeploymentRepo: helm-dev-local - nuget-virtual: - type: nuget - repositories: - - nuget-prod-local - - nuget-dev-local - - nuget-remote - description: "nuget virtual" - defaultDeploymentRepo: nuget-dev-local - npm-virtual: - type: npm - repositories: - - npm-dev-local - - npm-remote - - npm-prod-local - description: "npm virtual" - defaultDeploymentRepo: npm-dev-local - chef-virtual: - type: chef - repositories: - - chef-dev-local - - chef-remote - - chef-prod-local - description: "chef virtual" - defaultDeploymentRepo: chef-dev-local - puppet-virtual: - type: puppet - repositories: - - puppet-dev-local - - puppet-remote - - puppet-prod-local - description: "puppet virtual" - defaultDeploymentRepo: puppet-dev-local - rpm-virtual: - type: yum - repositories: - - rpm-dev-local - - rpm-remote - - rpm-prod-local - description: "rpm virtual" - defaultDeploymentRepo: rpm-dev-local - gitlfs-virtual: - type: gitlfs - repositories: - - gitlfs-dev-local - - gitlfs-prod-local - description: "gitlfs virtual" - defaultDeploymentRepo: gitlfs-dev-local - pypi-virtual: - type: pypi - repositories: - - pypi-dev-local - - pypi-prod-local - - pypi-remote - description: "pypi virtual" - defaultDeploymentRepo: pypi-dev-local - bower-virtual: - type: bower - repositories: - - bower-dev-local - - bower-prod-local - - bower-remote - description: "bower virtual" - defaultDeploymentRepo: bower-dev-local - gems-virtual: - type: gems - repositories: - - gems-dev-local - - gems-prod-local - - gems-remote - description: "gems virtual" - defaultDeploymentRepo: gems-dev-local - sbt-virtual: - type: sbt - repositories: - - sbt-dev-local - - sbt-prod-local - - jcenter - description: "sbt virtual" - defaultDeploymentRepo: sbt-dev-local - go-staging: - type: go - repositories: - - go-staging-local - - go-prod-local - description: "go virtual" - defaultDeploymentRepo: go-staging-local diff --git a/Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml b/Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml deleted file mode 100644 index 38a5feb..0000000 --- a/Ansible/test/tests/build/resources/test/repositories/CreateJCR.yaml +++ /dev/null @@ -1,119 +0,0 @@ -localRepositories: - tomcat-local: - type: generic - description: "used by demo" - repoLayout: simple-default - xray: - enabled: true - generic-prod-local: - type: generic - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - generic-dev-local: - type: generic - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - helm-prod-local: - type: helm - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - helm-dev-local: - type: helm - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - docker-generator: - type: docker - description: "docker generator repo for generation testing" - repoLayout: simple-default - xray: - enabled: true - docker-prod-local: - type: docker - description: "production deployment" - repoLayout: simple-default - xray: - enabled: true - docker-stage-local: - type: docker - description: "stage deployment" - repoLayout: simple-default - xray: - enabled: true - docker-dev-local: - type: docker - description: "development deployment" - repoLayout: simple-default - xray: - enabled: true - docker-local: - type: docker - description: "docker deployment" - repoLayout: simple-default - xray: - enabled: true - docker-push: - type: docker - description: "docker push repo for push replication testing" - repoLayout: simple-default - xray: - enabled: true -virtualRepositories: - generic-virtual: - type: generic - repositories: - - generic-prod-local - - generic-dev-local - description: "generic virtual" - defaultDeploymentRepo: generic-dev-local - helm-virtual: - type: helm - repositories: - - helm-prod-local - - helm-dev-local - - helm-remote - description: "helm virtual" - defaultDeploymentRepo: helm-dev-local - docker-PLACEHOLDERFORBUILDSTEP: - type: docker - repositories: - - docker-local - - docker-remote - - docker-dev-local - - docker-prod-local - - docker-stage-local - - docker-push - description: "docker virtual" - defaultDeploymentRepo: docker-stage-local - docker-virtual: - type: docker - repositories: - - docker-local - - docker-remote - - docker-dev-local - - docker-prod-local - - docker-stage-local - - docker-push - description: "docker virtual" - defaultDeploymentRepo: docker-stage-local -remoteRepositories: - helm-remote: - type: helm - url: https://storage.googleapis.com/kubernetes-charts - repoLayout: simple-default - xray: - enabled: true - docker-remote: - type: docker - url: https://registry-1.docker.io - repoLayout: simple-default - enableTokenAuthentication: true - xray: - enabled: true \ No newline at end of file diff --git a/Ansible/test/tests/build/resources/test/repositories/artifact.zip b/Ansible/test/tests/build/resources/test/repositories/artifact.zip deleted file mode 100644 index 0e86cb54fe2c3d52b3946278043f30b86a274eaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmWIWW@Zs#-~d9!MSTGbP@o8;IT;ifN>YnU^ePi`b3#LS8Q9m?Op62Itw3B_!Og(P z@|BT+0jQmU!COb`q>s0c-bwvcTOI`kc&yd%)IH^Wrt`ech9DqQ?;#UIfHymbnd!_w z%0T5H^8>Kjya6a90<<|k-q+FDKR7~PFCM!ic40aqIYBfzJs~OKgRf862mY{*fCi=s z63prX(u{?&0?j|9B|4b;6crr<)I5$eDTp})ALiYS5 zdg^$F@^P?f#zYwF^0|D^y|;#A5hKX;*BWA4Vu0=gxiP?-kx7IZ5pu{r1BDz6ENKL> puzLYZIHDViY$YgIU|>mO6_80zAO(1{vVlxt0>Yg@+JX_p0|0lTf`|YB diff --git a/Ansible/test/tests/build/resources/test/testenv.yaml b/Ansible/test/tests/build/resources/test/testenv.yaml deleted file mode 100644 index 08e7b33..0000000 --- a/Ansible/test/tests/build/resources/test/testenv.yaml +++ /dev/null @@ -1,6 +0,0 @@ -artifactory: - url: http://Ansib-Appli-M90CVY19FRF6-334171479.us-east-1.elb.amazonaws.com - external_ip: Ansib-Appli-M90CVY19FRF6-334171479.us-east-1.elb.amazonaws.com - distribution: artifactory_ha - rt_username: admin - rt_password: password \ No newline at end of file diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml deleted file mode 100644 index 00e9581..0000000 --- a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.HealthCheckTest.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml deleted file mode 100644 index 5d25dcf..0000000 --- a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.RepositoryTest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml deleted file mode 100644 index 4c0f655..0000000 --- a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.SecurityTest.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml b/Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml deleted file mode 100644 index 688a145..0000000 --- a/Ansible/test/tests/build/test-results/unified_test/TEST-tests.XrayTest.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ansible/test/tests/build/test-results/unified_test/binary/output.bin b/Ansible/test/tests/build/test-results/unified_test/binary/output.bin deleted file mode 100644 index 462e50c..0000000 --- a/Ansible/test/tests/build/test-results/unified_test/binary/output.bin +++ /dev/null @@ -1,107 +0,0 @@ -p- Health check. Service "jfac@01eb4sc7vmyn3y1958z2jp16t6" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy -Y- Health check. Service "jffe@000" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy -p- Health check. Service "jfmd@01eb4scm5ggcgsx207xjtr181p" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy -p- Health check. Service "jfrt@01eb4scnq0vk430wzk9v2f1syf" on node "79bb5ca64ee44569aaac94846a7258d2" is healthy -- Ping test. Service is OK -L- Delete sample HA repositories. All repositories were successfully deleted -*383 changes to config merged successfully -@- Create repositories for HA distribution. Successfully created -%Number of created repositories is 84 -=- Verify HA repos were created. 84 repositories were created -E- Delete HA repositories. All repositories were successfully deleted - 2- Verify repo were deleted. 0 repositories remain - -*383 changes to config merged successfully - -C- Re-create repositories for HA distribution. Successfully created - 4- Create users. User testuser0 created successfully - 4- Create users. User testuser1 created successfully - 4- Create users. User testuser2 created successfully - 4- Create users. User testuser3 created successfully - 4- Create users. User testuser4 created successfully - 4- Create users. User testuser5 created successfully - 4- Create users. User testuser6 created successfully - 4- Create users. User testuser7 created successfully - 4- Create users. User testuser8 created successfully - 4- Create users. User testuser9 created successfully - A- Verify created users. User testuser0 was successfully verified - A- Verify created users. User testuser1 was successfully verified - A- Verify created users. User testuser2 was successfully verified - A- Verify created users. User testuser3 was successfully verified - A- Verify created users. User testuser4 was successfully verified - A- Verify created users. User testuser5 was successfully verified - A- Verify created users. User testuser6 was successfully verified - A- Verify created users. User testuser7 was successfully verified - A- Verify created users. User testuser8 was successfully verified - A- Verify created users. User testuser9 was successfully verified - <- Generate API keys. Key for testuser0 created successfully - !<- Generate API keys. Key for testuser1 created successfully - "<- Generate API keys. Key for testuser2 created successfully - #<- Generate API keys. Key for testuser3 created successfully - $<- Generate API keys. Key for testuser4 created successfully - %<- Generate API keys. Key for testuser5 created successfully - &<- Generate API keys. Key for testuser6 created successfully - '<- Generate API keys. Key for testuser7 created successfully - (<- Generate API keys. Key for testuser8 created successfully - )<- Generate API keys. Key for testuser9 created successfully - *D- Re-generate API keys. Key for testuser0 re-generated successfully - +D- Re-generate API keys. Key for testuser1 re-generated successfully - ,D- Re-generate API keys. Key for testuser2 re-generated successfully - -D- Re-generate API keys. Key for testuser3 re-generated successfully - .D- Re-generate API keys. Key for testuser4 re-generated successfully - /D- Re-generate API keys. Key for testuser5 re-generated successfully - 0D- Re-generate API keys. Key for testuser6 re-generated successfully - 1D- Re-generate API keys. Key for testuser7 re-generated successfully - 2D- Re-generate API keys. Key for testuser8 re-generated successfully - 3D- Re-generate API keys. Key for testuser9 re-generated successfully - 4<- Create group. Group test-group-0 was successfully created - 5<- Create group. Group test-group-1 was successfully created - 6<- Create group. Group test-group-2 was successfully created - 7<- Create group. Group test-group-3 was successfully created - 8<- Create group. Group test-group-4 was successfully created - 9<- Create group. Group test-group-5 was successfully created - :<- Create group. Group test-group-6 was successfully created - ;<- Create group. Group test-group-7 was successfully created - <<- Create group. Group test-group-8 was successfully created - =<- Create group. Group test-group-9 was successfully created - >D- Create permissions. Permissions successfully created and verified - ?H- Delete permissions. User testPermission has been removed successfully - @<- Delete user. User testuser0 has been removed successfully - A<- Delete user. User testuser1 has been removed successfully - B<- Delete user. User testuser2 has been removed successfully - C<- Delete user. User testuser3 has been removed successfully - D<- Delete user. User testuser4 has been removed successfully - E<- Delete user. User testuser5 has been removed successfully - F<- Delete user. User testuser6 has been removed successfully - G<- Delete user. User testuser7 has been removed successfully - H<- Delete user. User testuser8 has been removed successfully - I<- Delete user. User testuser9 has been removed successfully - JA- Delete group. Group test-group-0 has been removed successfully - KA- Delete group. Group test-group-1 has been removed successfully - LA- Delete group. Group test-group-2 has been removed successfully - MA- Delete group. Group test-group-3 has been removed successfully - NA- Delete group. Group test-group-4 has been removed successfully - OA- Delete group. Group test-group-5 has been removed successfully - PA- Delete group. Group test-group-6 has been removed successfully - QA- Delete group. Group test-group-7 has been removed successfully - RA- Delete group. Group test-group-8 has been removed successfully - SA- Delete group. Group test-group-9 has been removed successfully -UTY- Create issue event. Issue event with ID XRAY-4206031 created and verified successfully -UVY- Update issue event. Issue event with ID XRAY-4206031 updated and verified successfully -UW\- Create policy. Policy with name security_policy_4206031 created and verified successfully -UX\- Update policy. Policy with name security_policy_4206031 updated and verified successfully -UYe- Get policies. Policies list is returned successfully. Policies returned: [security_policy_4206031] -UZd- Create watch. Watch with name all-repositories_4206031 has been created and verified successfully -U[d- Update watch. Watch with name all-repositories_4206031 has been updated and verified successfully -U\@- Assign policy to watch. Policy assigned successfully to Watch -U]M- Delete watch. Watch all-repositories_4206031 has been successfully deleted -U^N- Delete policy. Policy security_policy_4206031 has been successfully deleted -U_n- Integration configuration. Configuration for vendor vendor_4206031 has been successfully added and verified -U`W- Enable TLS for RabbitMQ. TLS for RabbitMQ has been successfully enabled and verified -UaN- Get binary manager. Binary manager is verified, connected RT version: 7.4.1 -Ub#- Get repo indexing configuration. -Uc;- Update repo indexing configuration. Successfully updated -UdO- Create support bundle. Created with a bug, localhost instead of the hostname -Ue;- Get system monitoring status. Data returned successfully -Uf;- Get system monitoring status. Data returned successfully -Ug7- Get X-ray version. Version: 3.3.0, revision: 3980dcb diff --git a/Ansible/test/tests/build/test-results/unified_test/binary/output.bin.idx b/Ansible/test/tests/build/test-results/unified_test/binary/output.bin.idx deleted file mode 100644 index b5acf17888d9f99808142e3da8c61d53eebffa75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3276 zcmZYBIZTsr9L8~>rO>yOmcA`*X+01R4iCIcCuUaHJumdn|sbD9?l%;}Q6g5i)yIqlDL(1E* z2f&8ZxSp^Vz=qV6f_(rsq-qNIW=XRl?QJ;VPDryM?QQ4>up#YjI0*P{sT&TtqLq_c z`xP7pOjs&7LNQ~h;3&nSrGjIw$gm;fZ5RNsAv2*T90#x=Go#=HfDM^N1>EgIHiX`W zlkS9&4WYN;6o3t(x8bw{S$+{^Bf8-XfGydI0)CuiCxMd+&QbiZRB+xEIqsjiyaMht zxl!P#f(sPyEEVv@ky`*PC>U}@8{e00y$UXemmp6pl?+pSw^VS&6?r~edGE7z74XVZ zPq;==vsA#1pup=X3@Nzoo>};8sep@I7+z_f~08!9BohO9l5SxTTcl6+CdD%&(bphXSr(c?>wF F;2*`ktrGwM diff --git a/Ansible/test/tests/build/test-results/unified_test/binary/results.bin b/Ansible/test/tests/build/test-results/unified_test/binary/results.bin deleted file mode 100644 index 61f24b12b03a3ddba41229db56b6609c764910ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10699 zcmchddu$X{7{yO14-p?A2%@6PL#5D`w%aEtPzpkYYHdpeQE}PcF01Wsot;&im>5Hp zs0kFYP*kD_Yy8KkXap2g5XBcDXhf+GR8qlL5rQa+Iy3j{F5WxK?sYc&Lzp|?`OWE_ znX})Wne^^wE!9~_4`o*~Z&>r|%{9iB%@B~Ly|?Ch_q0Bnyc+Z9Y-WgQA+vZ+&dnoD zMA#U}$#k(skG~;j;%)U>(3kBEHfFk-JfYBCL9H$~&z<2&jD6|c#*6)NwnWN}*~ldu zxk=kl5#wXBv9<%}NH+3fHuA_uUeY#H#5hbgUj7W{N;cdv8*Z}UPTGcw826ElS7xKH zWFtRjBcE*KCv8JTj1^>K-C^{TY!t+76p)RAq;05(@eJA6(1!CQ8-+0&g=C{JX&WkH ztR@?;jYEIQMp4X05!on8+J=f4tz={4M;IX4D2~}ECL6^`+fWf>71?15S`3nGs05)SF+Lz0TUOx$iKG&Q zj>OnNHs0Ec!4gR&2px&Bg>1Y%1Q$vql^}E^##XZNjt3V>B$Xg^B*reXv286bmPjf= z=tzupWaHg~7$T8Wg3yr|4^eKsAHpRPNhJs!iK8dwgST<1L{bStM`Em}lk(vSxHhNx zSb%9pJ6c*A!9c%diH(~q(+)E=i2s?G^`vO71ly8^@PaVqiZoPZ;A0e>

Ea&mY6(_BfRoc22;n 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 M$fN%#-U_JfHyBYQy8r+H diff --git a/Ansible/test/tests/build/tmp/unified_test/jar_extract_15312985063730868442_tmp b/Ansible/test/tests/build/tmp/unified_test/jar_extract_15312985063730868442_tmp deleted file mode 100644 index 51559244012cc3f12c38f7961e835eb7afa5d2bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmZ`%O>fgc5Pj=7I5BS1CNyozM;cndb`h2kw;(ta@gXH}2+Dn9mej3dM~)qdD?bLV zAn_#*`~ZFwFdG{uf#k3=JF_$Iy`9~kzrOzfa1Rzka~Or;^o`^5VCX!V?OzPegd6vg z@i>fP4UA#yj8A!5k{)U(Fzl^s)lj6<6<~KH4nuh)Vt(TD$%J9Ivxw6Dd(dXMaNi5O z_yI$~wE6~gT-2e$V5kj6{7Ag!i67_n3=Pv-17%~&a+?|o{Q+I@W&$3&}6X9|IpUYrjC}516-$xoDc&;rQ-$Sc`_P^ z=p`Tcl&N+?m-~Glc{0wD8@-sj=UqO|V!an8kt-g1zEE25n ziXKu0BfnvPrA21@Gio0xq2LDDO%%vBsp$X)TDVD(kv8BGb|_+~qmqF+=CS@mQZC(;Dxm!VBx}q1 diff --git a/Ansible/test/tests/build/tmp/unified_test/jar_extract_4590906891718676027_tmp b/Ansible/test/tests/build/tmp/unified_test/jar_extract_4590906891718676027_tmp deleted file mode 100644 index e69de29..0000000 From 38e43bc99bd155c102194f473a717b2fa07ff1cf Mon Sep 17 00:00:00 2001 From: danielmkn Date: Mon, 24 Aug 2020 10:48:07 -0700 Subject: [PATCH 16/20] Azure, Artifactory and Xray templates. Major ARM template refactoring --- AzureResourceManager/LICENSE | 201 ---- .../MP_submission_7/createUiDefinition.json | 448 --------- .../MP_submission_7/mainTemplate.json | 924 ----------------- .../MP_submission_7/nested/azureDBDeploy.json | 96 -- .../scripts/install_artifactory.sh | 214 ---- .../scripts/install_artifactory7.sh | 202 ---- .../scripts/version_selector.sh | 13 - AzureResourceManager/README.md | 81 -- AzureResourceManager/azuredeploy.json | 937 ------------------ .../azuredeploy.parameters.json | 39 - AzureResourceManager/images/HA_Diagram.png | Bin 107764 -> 0 bytes AzureResourceManager/images/Parameters.png | Bin 103748 -> 0 bytes AzureResourceManager/images/add_licenses.png | Bin 295712 -> 0 bytes .../nested/azureDBDeploy.json | 101 -- .../scripts/install_artifactory.sh | 214 ---- .../scripts/install_artifactory7.sh | 199 ---- .../scripts/version_selector.sh | 13 - .../AzureResourceManager/LICENSE | 201 ---- .../MP_submission_6/createUiDefinition.json | 332 ------- .../MP_submission_6/mainTemplate.json | 766 -------------- .../MP_submission_6/nested/azureDBDeploy.json | 96 -- .../scripts/install_artifactory.sh | 206 ---- .../MP_submission_7/createUiDefinition.json | 340 ------- .../MP_submission_7/mainTemplate.json | 619 ------------ .../MP_submission_7/nested/azureDBDeploy.json | 96 -- .../scripts/install_artifactory7.sh | 178 ---- .../AzureResourceManager/README.md | 58 -- .../AzureResourceManager/azuredeploy.json | 622 ------------ .../azuredeploy.parameters.json | 27 - .../images/HA_Diagram.png | Bin 107764 -> 0 bytes .../images/add_licenses.png | Bin 295712 -> 0 bytes .../nested/azureDBDeploy.json | 96 -- .../scripts/install_artifactory.sh | 206 ---- .../scripts/install_artifactory7.sh | 178 ---- 34 files changed, 7703 deletions(-) delete mode 100644 AzureResourceManager/LICENSE delete mode 100644 AzureResourceManager/MP_submission_7/createUiDefinition.json delete mode 100644 AzureResourceManager/MP_submission_7/mainTemplate.json delete mode 100644 AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json delete mode 100644 AzureResourceManager/MP_submission_7/scripts/install_artifactory.sh delete mode 100644 AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh delete mode 100644 AzureResourceManager/MP_submission_7/scripts/version_selector.sh delete mode 100644 AzureResourceManager/README.md delete mode 100644 AzureResourceManager/azuredeploy.json delete mode 100644 AzureResourceManager/azuredeploy.parameters.json delete mode 100644 AzureResourceManager/images/HA_Diagram.png delete mode 100644 AzureResourceManager/images/Parameters.png delete mode 100644 AzureResourceManager/images/add_licenses.png delete mode 100644 AzureResourceManager/nested/azureDBDeploy.json delete mode 100644 AzureResourceManager/scripts/install_artifactory.sh delete mode 100644 AzureResourceManager/scripts/install_artifactory7.sh delete mode 100644 AzureResourceManager/scripts/version_selector.sh delete mode 100644 JFrogContainerRegistry/AzureResourceManager/LICENSE delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_6/createUiDefinition.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_6/mainTemplate.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_6/nested/azureDBDeploy.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_6/scripts/install_artifactory.sh delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_7/createUiDefinition.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_7/mainTemplate.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh delete mode 100644 JFrogContainerRegistry/AzureResourceManager/README.md delete mode 100644 JFrogContainerRegistry/AzureResourceManager/azuredeploy.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/azuredeploy.parameters.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/images/HA_Diagram.png delete mode 100644 JFrogContainerRegistry/AzureResourceManager/images/add_licenses.png delete mode 100644 JFrogContainerRegistry/AzureResourceManager/nested/azureDBDeploy.json delete mode 100644 JFrogContainerRegistry/AzureResourceManager/scripts/install_artifactory.sh delete mode 100644 JFrogContainerRegistry/AzureResourceManager/scripts/install_artifactory7.sh diff --git a/AzureResourceManager/LICENSE b/AzureResourceManager/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/AzureResourceManager/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/AzureResourceManager/MP_submission_7/createUiDefinition.json b/AzureResourceManager/MP_submission_7/createUiDefinition.json deleted file mode 100644 index b935f73..0000000 --- a/AzureResourceManager/MP_submission_7/createUiDefinition.json +++ /dev/null @@ -1,448 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", - "handler": "Microsoft.Azure.CreateUIDef", - "version": "0.1.2-preview", - "parameters": { - "basics": [ - {} - ], - "steps": [ - { - "name": "vmCredentials", - "label": "VM Credential", - "bladeTitle": "VM Credential", - "subLabel": { - "preValidation": "Provide VM credentials", - "postValidation": "Great - let's move on!" - }, - "elements": [ - { - "name": "adminUsername", - "type": "Microsoft.Compute.UserNameTextBox", - "label": "Admin username", - "osPlatform": "Linux", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - }, - "toolTip": "Provide admin username for the virtual machine" - }, - { - "name": "adminPassword", - "type": "Microsoft.Compute.CredentialsCombo", - "label": { - "password": "Password", - "confirmPassword": "Confirm password" - }, - "osPlatform": "Linux", - "constraints": { - "required": true, - "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", - "customValidationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." - }, - "options": { - "hideConfirmation": false - }, - "toolTip": { - "password": "Provide admin password for the virtual machine" - }, - "visible": true - } - ] - }, - { - "name": "clusterConfig", - "label": "Artifactory Cluster settings", - "subLabel": { - "preValidation": "Configure Artifactory Cluster settings", - "postValidation": "Done!" - }, - "bladeTitle": "Artifactory Cluster Settings", - "elements": [ - { - "name": "clusterName", - "type": "Microsoft.Common.TextBox", - "label": "Cluster name", - "toolTip": "Cluster name", - "defaultValue": "", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - } - }, - { - "name": "vmSku", - "type": "Microsoft.Compute.SizeSelector", - "label": "Virtual machine size", - "toolTip": "The size of the virtual machine for Artifactory", - "recommendedSizes": [ - "Standard_D4s_v3" - ], - "constraints": { - "allowedSizes": [ - "Standard_A4_v2", - "Standard_A4", - "Standard_D2s_v3", - "Standard_D4s_v3", - "Standard_D8s_v3", - "Standard_D16s_v3", - "Standard_D32s_v3", - "Standard_DS3_v2", - "Standard_D2_v2", - "Standard_D3_v2", - "Standard_DC2s", - "Standard_DC4s" - ] - }, - "osPlatform": "Linux", - "count": 1 - }, - { - "name": "nodeCount", - "type": "Microsoft.Common.DropDown", - "label": "Number of additional VM instances for member Artifactory nodes. Minimum 1 node.(+1 primary = 2 node cluster)", - "defaultValue": "2", - "toolTip": "Number of Artifactory member nodes in cluster", - "constraints": { - "allowedValues": [ - { - "label": "1", - "value": 1 - }, - { - "label": "2", - "value": 2 - }, - { - "label": "3", - "value": 3 - }, - { - "label": "4", - "value": 4 - } - ], - "required": true - }, - "visible": "true" - }, - { - "name": "artifactoryVersion", - "type": "Microsoft.Common.DropDown", - "label": "Artifactory-vm image version to deploy.", - "defaultValue": "7.4.3", - "toolTip": "Version of Artifactory to deploy", - "constraints": { - "allowedValues": [ - { - "label": "6.8.0", - "value": "6.8.0" - }, - { - "label": "6.16.0", - "value": "0.16.0" - }, - { - "label": "6.17.0", - "value": "0.17.0" - }, - { - "label": "6.18.0", - "value": "6.18.0" - }, - { - "label": "7.2.1", - "value": "7.2.1" - }, - { - "label": "7.3.2", - "value": "0.3.2" - }, - { - "label": "7.4.3", - "value": "7.4.3" - } - ], - "required": true - }, - "visible": true - }, - { - "name": "masterKey", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Artifactory master Key", - "confirmPassword": "Confirm master Key" - }, - "toolTip": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,32}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "artifactoryLicense1", - "type": "Microsoft.Common.TextBox", - "label": "Artifactory Enterprise License.", - "toolTip": "Artifactory Enterprise License. Providing one license is mandatory", - "constraints": { - "required": true, - "regex": "^.{1,10000}", - "validationMessage": "Only Enterprise licenses are allowed." - } - }, - { - "name": "artifactoryLicense2", - "type": "Microsoft.Common.TextBox", - "label": "Artifactory Enterprise License.", - "toolTip": "Artifactory Enterprise License. Providing one license is mandatory", - "constraints": { - "required": true, - "regex": "^.{1,10000}", - "validationMessage": "Only Enterprise licenses are allowed." - } - }, - { - "name": "artifactoryLicense3", - "type": "Microsoft.Common.TextBox", - "label": "Artifactory Enterprise License.", - "toolTip": "Artifactory Enterprise License. Providing one license is mandatory", - "constraints": { - "required": false, - "regex": "^.{1,10000}", - "validationMessage": "Only Enterprise licenses are allowed." - } - }, - { - "name": "artifactoryLicense4", - "type": "Microsoft.Common.TextBox", - "label": "Artifactory Enterprise License.", - "toolTip": "Artifactory Enterprise License. Providing one license is mandatory", - "constraints": { - "required": false, - "regex": "^.{1,10000}", - "validationMessage": "Only Enterprise licenses are allowed." - } - }, - { - "name": "artifactoryLicense5", - "type": "Microsoft.Common.TextBox", - "label": "Artifactory Enterprise License.", - "toolTip": "Artifactory Enterprise License. Providing one license is mandatory", - "constraints": { - "required": false, - "regex": "^.{1,10000}", - "validationMessage": "Only Enterprise licenses are allowed." - } - }, - { - "name": "certificate", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Provide your SSL Certificate.", - "confirmPassword": "Confirm SSL Certificate." - }, - "toolTip": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate.", - "constraints": { - "required": true, - "regex": "^(-----BEGIN CERTIFICATE-----)(.+)(-----END CERTIFICATE-----)$", - "validationMessage": "Provide SSL Certificate." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificateKey", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Provide your SSL Certificate key.", - "confirmPassword": "Confirm SSL Certificate key." - }, - "toolTip": "Provide your SSL Certificate key", - "constraints": { - "required": true, - "regex": "^(-----BEGIN)(.+)(PRIVATE KEY-----)(.+)(-----END)(.+)(PRIVATE KEY-----)$", - "validationMessage": "Provide SSL Certificate Key." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificateDomain", - "type": "Microsoft.Common.TextBox", - "label": "Provide your Certificate Domain Name.", - "defaultValue": "artifactory", - "toolTip": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team", - "constraints": { - "required": true, - "regex": "^(\\*)*([\\w-\\.])+$", - "validationMessage": "Must be a valid fully-qualified domain name." - } - }, - { - "name": "artifactoryServerName", - "type": "Microsoft.Common.TextBox", - "label": "Provide artifactory server name to be used in Nginx.", - "defaultValue": "artifactory", - "toolTip": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,20}$", - "validationMessage": "Only letters and numbers are allowed, and the value must be 1-20 characters long." - } - }, - { - "name": "extraJavaOptions", - "type": "Microsoft.Common.TextBox", - "label": "Setting Java Memory Parameters for Artifactory", - "defaultValue": "-server -Xms2g -Xmx8g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "toolTip": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware.", - "constraints": { - "required": false, - "regex": "[^a-zA-Z0-9]+\\S+\\D", - "validationMessage": "Example: -server -Xms2g -Xmx12g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"" - } - } - ] - }, - { - "name": "databaseConfig", - "label": "Database Configuration", - "subLabel": { - "preValidation": "Configure the Database", - "postValidation": "Done" - }, - "bladeTitle": "Database Credential", - "elements": [ - { - "name": "dbAdminUsername", - "type": "Microsoft.Compute.UserNameTextBox", - "label": "User name", - "toolTip": "Admin username for the database", - "osPlatform": "Linux", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - } - }, - { - "name": "dbAdminPassword", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Password", - "confirmPassword": "Confirm password" - }, - "toolTip": "Admin password for the database", - "constraints": { - "required": true, - "regex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", - "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." - }, - "options": { - "hideConfirmation": false - }, - "visible": true - }, - { - "name": "dbName", - "type": "Microsoft.Common.TextBox", - "label": "Database name", - "toolTip": "Database name", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,15}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-15 characters long." - } - }, - { - "name": "dbEdition", - "type": "Microsoft.Common.DropDown", - "label": "Database Edition", - "defaultValue": "Basic", - "toolTip": "Edition of Database to use", - "constraints": { - "allowedValues": [ - { - "label": "Basic", - "value": "Basic" - }, - { - "label": "Standard", - "value": "Standard" - }, - { - "label": "Premium", - "value": "Premium" - } - ], - "required": true - }, - "visible": true - } - ] - }, - { - "name": "storageConfig", - "label": "Storage settings", - "subLabel": { - "preValidation": "Configure the infrastructure settings", - "postValidation": "Done" - }, - "bladeTitle": "Storage settings", - "elements": [ - { - "name": "storageAccountsType", - "type": "Microsoft.Common.DropDown", - "label": "Storage account type", - "defaultValue": "Standard_LRS", - "toolTip": "Storage account type", - "constraints": { - "allowedValues": [ - { - "label": "Standard_LRS", - "value": "Standard_LRS" - } - ], - "required": true - }, - "visible": true - } - ] - } - ], - "outputs": { - "clusterName": "[steps('clusterConfig').clusterName]", - "vmSku": "[steps('clusterConfig').vmSku]", - "location": "[location()]", - "nodeCount": "[steps('clusterConfig').nodeCount]", - "artifactoryVersion": "[steps('clusterConfig').artifactoryVersion]", - "masterKey": "[steps('clusterConfig').masterKey]", - "artifactoryLicense1": "[steps('clusterConfig').artifactoryLicense1]", - "artifactoryLicense2": "[steps('clusterConfig').artifactoryLicense2]", - "artifactoryLicense3": "[steps('clusterConfig').artifactoryLicense3]", - "artifactoryLicense4": "[steps('clusterConfig').artifactoryLicense4]", - "artifactoryLicense5": "[steps('clusterConfig').artifactoryLicense5]", - "certificate": "[steps('clusterConfig').certificate]", - "certificateKey": "[steps('clusterConfig').certificateKey]", - "certificateDomain": "[steps('clusterConfig').certificateDomain]", - "artifactoryServerName": "[steps('clusterConfig').artifactoryServerName]", - "extraJavaOptions": "[steps('clusterConfig').extraJavaOptions]", - "adminUsername": "[steps('vmCredentials').adminUsername]", - "adminPassword": "[steps('vmCredentials').adminPassword.password]", - "DB_Admin_User": "[steps('databaseConfig').dbAdminUsername]", - "DB_Admin_Password": "[steps('databaseConfig').dbAdminPassword]", - "DB_Name": "[steps('databaseConfig').dbName]", - "DB_Edition": "[steps('databaseConfig').dbEdition]", - "storageAccountType": "[steps('storageConfig').storageAccountsType]" - } - } -} \ No newline at end of file diff --git a/AzureResourceManager/MP_submission_7/mainTemplate.json b/AzureResourceManager/MP_submission_7/mainTemplate.json deleted file mode 100644 index 0aaab5d..0000000 --- a/AzureResourceManager/MP_submission_7/mainTemplate.json +++ /dev/null @@ -1,924 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "vmSku": { - "type": "string", - "defaultValue": "Standard_D4s_v3", - "metadata": { - "description": "Size of VMs in the VM Scale Set." - } - }, - "clusterName": { - "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." - } - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for the resources." - } - }, - "nodeCount": { - "type": "int", - "defaultValue": 2, - "minValue": 1, - "maxValue": 100, - "metadata": { - "description": "Number of VM instances (100 or less) for member artifactory nodes. Minimum 1 node." - } - }, - "artifactoryVersion": { - "type": "string", - "defaultValue": "7.4.3", - "allowedValues": [ - "6.6.0", - "6.6.1", - "6.7.0", - "6.8.0", - "6.11.3", - "6.15.0", - "0.16.0", - "0.17.0", - "6.18.0", - "7.2.1", - "0.3.2", - "7.4.3" - ], - "metadata": { - "description": "Artifactory-vm image version to deploy." - } - }, - "masterKey": { - "type": "securestring", - "maxLength": 64, - "metadata": { - "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" - } - }, - "adminUsername": { - "type": "string", - "metadata": { - "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." - } - }, - "artifactoryLicense1": { - "type": "string", - "metadata": { - "description": "Artifactory Enterprise License. Providing one license is mandatory" - } - }, - "artifactoryLicense2": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "artifactoryLicense3": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "artifactoryLicense4": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "artifactoryLicense5": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "certificate": { - "type": "securestring", - "metadata": { - "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." - } - }, - "certificateKey": { - "type": "securestring", - "metadata": { - "description": "Provide your SSL Certificate key" - } - }, - "certificateDomain": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" - } - }, - "artifactoryServerName": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" - } - }, - "extraJavaOptions": { - "type": "string", - "minLength": 1, - "defaultValue": "-server -Xms2g -Xmx8g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "metadata": { - "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." - } - }, - "DB_Admin_User": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database Admin user name" - } - }, - "DB_Admin_Password": { - "type": "securestring", - "minLength": 1, - "metadata": { - "description": "Database Admin password" - } - }, - "DB_Name": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database name" - } - }, - "DB_Edition": { - "type": "string", - "minLength": 1, - "defaultValue": "Basic", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ], - "metadata": { - "description": "Database Edition" - } - }, - "storageAccountType": { - "type": "string", - "defaultValue": "Standard_LRS", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS", - "Standard_ZRS" - ], - "metadata": { - "description": "Storage Account 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": { - "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", - "addressPrefix": "10.0.0.0/16", - "subnetPrimaryPrefix": "10.0.1.0/24", - "subnetMemberPrefix": "10.0.2.0/24", - "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", - "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", - "subnetMemberName": "[concat(variables('namingInfix'), 'memberSubnet')]", - "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", - "scaleSetMemberName": "[concat(variables('namingInfix'), 'memberScaleset')]", - "lbName": "[concat(variables('namingInfix'), 'lb')]", - "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", - "bepoolMemberName": "[concat(variables('lbName'), 'memberBepool')]", - "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", - "fepoolMemberName": "[concat(variables('lbName'), 'memberFepool')]", - "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", - "bepoolMemberID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolMemberName'))]", - "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", - "feIpConfigMemberName": "[concat(variables('fepoolMemberName'), 'memberIpConfig')]", - "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", - "feIpConfigMemberId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigMemberName'))]", - "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", - "pipMemberName": "[concat(variables('namingInfix'), 'memberPip')]", - "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", - "nicMemberName": "[concat(variables('namingInfix'), 'memberNic')]", - "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", - "natPoolMemberName": "[concat(variables('lbName'), 'memberNatpool')]", - "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", - "httpProbePrimaryName": "primaryHttpProbe", - "httpsProbePrimaryName": "primaryHttpsProbe", - "httpProbeMemberName": "memberHttpProbe", - "httpsProbeMemberName": "memberHttpsProbe", - "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", - "vmStorageAccountContainerName": "filestore", - "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", - "DB_Name": "[parameters('DB_Name')]", - "DB_Admin_User": "[parameters('DB_Admin_User')]", - "DB_Admin_Password": "[parameters('DB_Admin_Password')]", - "DB_Edition": "[parameters('DB_Edition')]", - "DB_Location": "[parameters('location')]", - "masterKey": "[parameters('masterKey')]", - "certificate": "[parameters('certificate')]", - "certificateKey": "[parameters('certificateKey')]", - "certificateDomain": "[parameters('certificateDomain')]", - "artifactoryServerName": "[parameters('artifactoryServerName')]", - "extraJavaOptions": "[parameters('extraJavaOptions')]", - "artifactoryLicense1": "[parameters('artifactoryLicense1')]", - "artifactoryLicense2": "[parameters('artifactoryLicense2')]", - "artifactoryLicense3": "[parameters('artifactoryLicense3')]", - "artifactoryLicense4": "[parameters('artifactoryLicense4')]", - "artifactoryLicense5": "[parameters('artifactoryLicense5')]", - "osType": { - "publisher": "jfrog", - "offer": "artifactory-vm", - "sku": "artifactory-vm", - "version": "[parameters('artifactoryVersion')]" - }, - "imageReference": "[variables('osType')]", - "dbTemplate": "azureDBDeploy.json", - "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", - "nsgName": "[concat(variables('namingInfix'), 'nsg')]" - }, - "resources": [ - { - "apiVersion": "2019-05-01", - "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "type": "Microsoft.Network/networkSecurityGroups", - "location": "[parameters('location')]", - "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", - "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-artifactory-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "8081", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 101, - "direction": "Inbound" - } - }, - { - "name": "http-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 102, - "direction": "Inbound" - } - }, - { - "name": "https-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 103, - "direction": "Inbound" - } - }, - { - "name": "membership-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "10001", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 105, - "direction": "Inbound" - } - } - ] - } - }, - { - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" - ], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetPrimaryName')]", - "properties": { - "addressPrefix": "[variables('subnetPrimaryPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "name": "[variables('subnetMemberName')]", - "properties": { - "addressPrefix": "[variables('subnetMemberPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicPrimaryName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicMemberName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipPrimaryName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[variables('namingInfix')]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipMemberName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[concat(variables('namingInfix'),'2')]" - } - } - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('lbName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "sku": { - "name": "Standard" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]" - ], - "tags":{ - "displayName": "Load Balancer" - }, - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('feIpConfigPrimaryName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" - } - } - }, - { - "name": "[variables('feIpConfigMemberName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipMemberName'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('bepoolPrimaryName')]" - }, - { - "name": "[variables('bepoolMemberName')]" - } - ], - "inboundNatPools": [ - { - "name": "[variables('natPoolPrimaryName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 10022, - "frontendPortRangeEnd": 11022, - "backendPort": 22 - } - }, - { - "name": "[variables('natPoolMemberName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 20022, - "frontendPortRangeEnd": 21022, - "backendPort": 22 - } - } - ], - "loadBalancingRules": [ - { - "name": "HTTPRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPSRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPRuleMember", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolMemberID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbeMemberName'))]" - } - } - }, - { - "name": "HTTPSRuleMember", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolMemberID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbeMemberName'))]" - } - } - } - ], - "probes": [ - { - "name": "[variables('httpProbePrimaryName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbePrimaryName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpProbeMemberName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbeMemberName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags":{ - "displayName": "Artifactory Storage Account" - }, - "kind": "Storage", - "properties": {} - }, - { - "type": "Microsoft.Resources/deployments", - "name": "deploySQLDB", - "apiVersion": "2018-07-01", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "[variables('dbTemplateLocation')]", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "db_user": { - "value": "[parameters('DB_Admin_User')]" - }, - "db_password": { - "value": "[parameters('DB_Admin_Password')]" - }, - "db_server": { - "value": "[variables('azureSqlServerName')]" - }, - "db_name": { - "value": "[parameters('DB_Name')]" - }, - "db_edition": { - "value": "[variables('DB_Edition')]" - }, - "db_location": { - "value": "[variables('DB_Location')]" - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetPrimaryName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-vm", - "publisher": "jfrog", - "product": "artifactory-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "1" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','true','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicPrimaryName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" - } - } - } - ] - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetMemberName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Compute/virtualMachineScaleSets/', variables('scaleSetPrimaryName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-vm", - "publisher": "jfrog", - "product": "artifactory-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "[parameters('nodeCount')]" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',parameters('certificateKey'),'\nCERTIFICATE=', parameters('certificate'),'\nCERTIFICATE_DOMAIN=',parameters('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',parameters('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',parameters('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','false','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicMemberName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolMemberName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolMemberName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" - } - } - } - ] - } - } - } - } - ], - "outputs": { - "fqdn": { - "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipMemberName')),'2018-07-01').dnsSettings.fqdn]", - "type": "string" - } - } -} \ No newline at end of file diff --git a/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json b/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json deleted file mode 100644 index 70c31a5..0000000 --- a/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "db_user": { - "type": "string", - "defaultValue": "artifactory", - "minLength": 1 - }, - "db_password": { - "type": "securestring" - }, - "db_server": { - "type": "string", - "defaultValue": "artmssqlsrv", - "minLength": 1 - }, - "db_name": { - "type": "string", - "defaultValue": "artdb", - "minLength": 1 - }, - "db_location": { - "type": "string", - "defaultValue": "" - }, - "db_edition": { - "type": "string", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ] - } - }, - "variables": { - "rtdbCollation": "Latin1_General_100_CS_AS", - "db_location": "[parameters('db_location')]" - }, - "resources": [ - { - "name": "[parameters('db_server')]", - "type": "Microsoft.Sql/servers", - "kind": "v12.0", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "tags": { - "displayName": "artifactoryDB" - }, - "properties": { - "administratorLogin": "[parameters('db_user')]", - "administratorLoginPassword": "[parameters('db_password')]", - "version": "12.0" - }, - "resources": [ - { - "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", - "type": "firewallrules", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "dependsOn": [ - "[concat('Microsoft.Sql/servers/', parameters('db_server'))]" - ], - "properties": { - "startIpAddress": "0.0.0.0", - "endIpAddress": "0.0.0.0" - } - }, - { - "name": "[parameters('db_name')]", - "type": "databases", - "kind": "v12.0,user", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "dependsOn": [ - "[parameters('db_server')]" - ], - "tags": { - "displayName": "artifactoryDB" - }, - "properties": { - "edition": "[parameters('db_edition')]", - "maxSizeBytes": "1073741824", - "collation": "[variables('rtdbCollation')]" - } - } - ] - } - ], - "outputs": { - "jdbcConnString": { - "type": "string", - "value": "[concat('jdbc:sqlserver://', reference(concat('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" - } - } -} diff --git a/AzureResourceManager/MP_submission_7/scripts/install_artifactory.sh b/AzureResourceManager/MP_submission_7/scripts/install_artifactory.sh deleted file mode 100644 index 12238a9..0000000 --- a/AzureResourceManager/MP_submission_7/scripts/install_artifactory.sh +++ /dev/null @@ -1,214 +0,0 @@ -#!/bin/bash -DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") -DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") -DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") -DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") -STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") -STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") -STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") -ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") -MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") -IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") -ARTIFACTORY_LICENSE_1=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE1=" | sed "s/LICENSE1=//") -ARTIFACTORY_LICENSE_2=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE2=" | sed "s/LICENSE2=//") -ARTIFACTORY_LICENSE_3=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE3=" | sed "s/LICENSE3=//") -ARTIFACTORY_LICENSE_4=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE4=" | sed "s/LICENSE4=//") -ARTIFACTORY_LICENSE_5=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE5=" | sed "s/LICENSE5=//") - -UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") - -export DEBIAN_FRONTEND=noninteractive - -#Generate Self-Signed Cert -mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ -openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" - -CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") -[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory - -ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") -[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory - -#Configuring nginx -rm /etc/nginx/sites-enabled/default - -cat </etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /artifactory/webapp/ redirect; - rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; - rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; - chunked_transfer_encoding on; - client_max_body_size 0; - location /artifactory/ { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8081/artifactory/; - proxy_set_header X-Artifactory-Override-Base-Url - \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } -} -EOF - -cat </var/opt/jfrog/artifactory/etc/artifactory.cluster.license -${ARTIFACTORY_LICENSE_1} - -${ARTIFACTORY_LICENSE_2} - -${ARTIFACTORY_LICENSE_3} - -${ARTIFACTORY_LICENSE_4} - -${ARTIFACTORY_LICENSE_5} -EOF - -cat </var/opt/jfrog/artifactory/etc/ha-node.properties -node.id=art1 -artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data -context.url=http://127.0.0.1:8081/artifactory -membership.port=10001 -hazelcast.interface=172.25.0.3 -primary=${IS_PRIMARY} -EOF - -cat </var/opt/jfrog/artifactory/etc/db.properties -type=mssql -driver=com.microsoft.sqlserver.jdbc.SQLServerDriver -url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository -username=${DB_USER} -password=${DB_PASSWORD} -EOF - -mkdir -p /var/opt/jfrog/artifactory/etc/security - -cat </var/opt/jfrog/artifactory/etc/security/master.key -${MASTER_KEY} -EOF - -cat </var/opt/jfrog/artifactory/etc/binarystore.xml - - - - - - - - - - - - - - - - - crossNetworkStrategy - crossNetworkStrategy - 2 - 1 - - - - - remote - - - - local - - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - https://${STORAGE_ACCT}.blob.core.windows.net/ - ${STORAGE_CONTAINER} - - -EOF - - -HOSTNAME=$(hostname -i) -sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' -echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 120)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory installation completed." diff --git a/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh b/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh deleted file mode 100644 index 438ea1f..0000000 --- a/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/bash -DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") -DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") -DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") -DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") -STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") -STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") -STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") -ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") -MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") -JOIN_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JOIN_KEY=" | sed "s/JOIN_KEY=//") -IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") -ARTIFACTORY_LICENSE_1=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE1=" | sed "s/LICENSE1=//") -ARTIFACTORY_LICENSE_2=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE2=" | sed "s/LICENSE2=//") -ARTIFACTORY_LICENSE_3=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE3=" | sed "s/LICENSE3=//") -ARTIFACTORY_LICENSE_4=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE4=" | sed "s/LICENSE4=//") -ARTIFACTORY_LICENSE_5=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE5=" | sed "s/LICENSE5=//") -#JOIN_KEY_GENERATED=$(openssl rand -hex 16) -export DEBIAN_FRONTEND=noninteractive - -#Generate Self-Signed Cert -mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ -openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" - -CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") -[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory - -ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") -[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory - -#Configuring nginx -rm /etc/nginx/sites-enabled/default - -cat </etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_protocols TLSv1 TLSv1.1 TLSv1.2; -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /ui/ redirect; - rewrite ^/ui$ /ui/ redirect; - chunked_transfer_encoding on; - client_max_body_size 0; - location / { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8082; - proxy_next_upstream error timeout non_idempotent; - proxy_next_upstream_tries 1; - proxy_set_header X-JFrog-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - - location ~ ^/artifactory/ { - proxy_pass http://127.0.0.1:8081; - } - } -} -EOF - - -mkdir -p /opt/jfrog/artifactory/var/etc/artifactory/ -cat </opt/jfrog/artifactory/var/etc/artifactory/artifactory.cluster.license -${ARTIFACTORY_LICENSE_1} - -${ARTIFACTORY_LICENSE_2} - -${ARTIFACTORY_LICENSE_3} - -${ARTIFACTORY_LICENSE_4} - -${ARTIFACTORY_LICENSE_5} -EOF - -HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') - -if [ "${IS_PRIMARY}" = "true" ]; then - NODE_NAME=art-primary -else - NODE_NAME=art-$(date +%s$RANDOM) -fi - -# Java options -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml - -# Node settings -HOSTNAME=$(hostname -i) -sed -i -e "s/#id: \"art1\"/id: \"${NODE_NAME}\"/" /var/opt/jfrog/artifactory/etc/system.yaml -sed -i -e "s/#ip:/ip: ${HOSTNAME}/" /var/opt/jfrog/artifactory/etc/system.yaml -sed -i -e "s/#primary: true/primary: ${IS_PRIMARY}/" /var/opt/jfrog/artifactory/etc/system.yaml -sed -i -e "s/#haEnabled:/haEnabled:/" /var/opt/jfrog/artifactory/etc/system.yaml - -# Set MS SQL configuration -cat <>/var/opt/jfrog/artifactory/etc/system.yaml - ## One of: mysql, oracle, mssql, postgresql, mariadb - ## Default: Embedded derby - ## Example for mysql - type: mssql - driver: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository - username: ${DB_USER} - password: ${DB_PASSWORD} - -EOF - -# Create master.key on each node -mkdir -p /opt/jfrog/artifactory/var/etc/security/ - -cat </opt/jfrog/artifactory/var/etc/security/master.key -${MASTER_KEY} -EOF - -# Azure Blob Storage configuration -# https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-AzureBlobStorageClusterBinaryProvider -mkdir -p /var/opt/jfrog/artifactory/etc/artifactory/ -cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - https://${STORAGE_ACCT}.blob.core.windows.net/ - ${STORAGE_CONTAINER} - - -EOF - - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 120)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory HA installation completed." -echo "" diff --git a/AzureResourceManager/MP_submission_7/scripts/version_selector.sh b/AzureResourceManager/MP_submission_7/scripts/version_selector.sh deleted file mode 100644 index 13526b2..0000000 --- a/AzureResourceManager/MP_submission_7/scripts/version_selector.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") -IFS=$'\t' -SUPPORTED_VERSIONS=("6.8.0\t6.11.3\t6.15.0\t0.16.0\t0.17.0\t6.18.0") -unset IFS - -if [[ "\t${SUPPORTED_VERSIONS[@]}\t" =~ "\t${ARTIFACTORY_VERSION}\t" ]]; then - sh install_artifactory.sh - echo "\ninstall_artifactory.sh was selected" >> user-data.txt -else - sh install_artifactory7.sh - echo "\ninstall_artifactory7.sh was selected" >> user-data.txt -fi \ No newline at end of file diff --git a/AzureResourceManager/README.md b/AzureResourceManager/README.md deleted file mode 100644 index 8725cd8..0000000 --- a/AzureResourceManager/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Setup Artifactory Enterprise - - - - - - - - -This template can help you setup the [Artifactory Enterprise](https://jfrog.com/artifactory) on Azure. - -## A. Deploy Artifactory Enterprise on Azure -![screenshot](images/HA_Diagram.png) - - -1. Click "Deploy to Azure" button. If you haven't got an Azure subscription, it will guide you on how to signup for a free trial. - -2. Enter a valid values to parameters. At least 1 license has to be provided. - - -![screenshot](images/Parameters.png) - -3. Click on Purchase to start deploying resources. It will deploy MsSQL database, Azure Blob storage container, VM installing Nginx and Artifactory and Load balancer. - -4. Once deployment is done. Copy FQDN from Output of deployment template. - -5. Access artifactory using FQDN. - -6. You will see specified artifactory member nodes in 'Admin -> High Availability' page. - -### Note: -1. This template only supports Artifactory version 5.8.x and above. -2. Turn off daily backups. Read Documentation provided [here](https://www.jfrog.com/confluence/display/RTF/Managing+Backups) -3. Use SSL Certificate with valid wild card to you artifactory as docker registry with subdomain method. -4. Input values for 'adminUsername' and 'adminPassword' parameters needs to follow azure VM access rules. -5. One primary node is configured automatically. And, Minimum 1 member node is expected for the Artifactory HA installation. -6. This template provides support for max 5 licenses. To add more licenses, Edit the template (input fields, CustomScript sections) and install_artifactory.sh script. -7. Refer to [System Requirements](https://www.jfrog.com/confluence/display/RTF/System+Requirements) for changing 'extraJavaOptions' input parameter value. - -### Steps to setup Artifactory as secure docker registry -considering you have SSL certificate for `*.jfrog.team` -1. Pass your SSL Certificate in parameter `Certificate` as string -2. Pass your SSL Certificate Key in parameter `CertificateKey` as string -3. Set `CertificateDomain` as `jfrog.team` -4. Set `ArtifactoryServerName` as `artifactory` if you want to access artifactory with `https://artifactory.jfrog.team` -5. Create DNS record with entry `artifactory.jfrog.team` pointing to load balancer value provided as output in template deployment. -6. Create DNS record with entry `*.jfrog.team` pointing to load balancer value provided as output in template deployment. -7. If you have virtual docker registry with name `docker-virtual` in artifactory. You can access it via `docker-virtual.jfrog.team` - e.g ```docker pull docker-virtual.jfrog.team/nginx``` - -### Steps to upgrade Artifactory Version - -1. Login into Primary VM instance and sudo as root. Use the admin credentials provided in the install setup. -Note: Use load balancer's NAT entries under Azure resources, to get the allocated NAT port for accessing the VM instance. - -2. Stop nginx and artifactory services. - ``` - service nginx stop - service artifactory stop - ``` - -3. Upgrade artifactory with following apt-get install command. - ``` - apt-get update - apt-get -y install jfrog-artifactory-pro=${ARTIFACTORY_VERSION} - ``` -4. Start artifactory and nginx services. - ``` - service artifactory start - service nginx start - ``` -5. Repeat above steps for all member nodes. - ------- -#### Note: -Supported locations: `East US 2`, `Central US`, `West Central US` and `West Europe`. -Please check the Azure region support for `Standard Sku` property in load balancer for this template to work properly. -Check for SQL server support on specified location. If SQL server is not available in the location, Use 'DB_Location' to specify the location with SQL server support. - - - diff --git a/AzureResourceManager/azuredeploy.json b/AzureResourceManager/azuredeploy.json deleted file mode 100644 index e2bdccf..0000000 --- a/AzureResourceManager/azuredeploy.json +++ /dev/null @@ -1,937 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "vmSku": { - "type": "string", - "defaultValue": "Standard_D4s_v3", - "metadata": { - "description": "Size of VMs in the VM Scale Set." - } - }, - "clusterName": { - "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." - } - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for the resources." - } - }, - "nodeCount": { - "type": "int", - "defaultValue": 2, - "minValue": 1, - "maxValue": 100, - "metadata": { - "description": "Number of VM instances (100 or less) for member artifactory nodes. Minimum 1 node." - } - }, - "artifactoryVersion": { - "type": "string", - "defaultValue": "7.4.30", - "allowedValues": [ - "6.6.0", - "6.6.1", - "6.7.0", - "6.8.0", - "6.11.3", - "6.15.0", - "0.16.0", - "0.17.0", - "6.18.0", - "7.0.0717", - "7.0.4001", - "7.2.1", - "7.4.3", - "7.4.30", - "7.4.31" - ], - "metadata": { - "description": "Artifactory-vm image version to deploy." - } - }, - "masterKey": { - "type": "string", - "maxLength": 64, - "metadata": { - "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" - } - }, - "joinKey": { - "type": "string", - "maxLength": 64, - "metadata": { - "description": "Join key for Artifactory cluster. Generate join.key using command '$openssl rand -hex 16'" - } - }, - "adminUsername": { - "type": "string", - "metadata": { - "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." - } - }, - "artifactoryLicense1": { - "type": "string", - "metadata": { - "description": "Artifactory Enterprise License. Providing one license is mandatory" - } - }, - "artifactoryLicense2": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "artifactoryLicense3": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "artifactoryLicense4": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "artifactoryLicense5": { - "type": "string", - "defaultValue": "", - "metadata": { - "description": "Artifactory Enterprise License" - } - }, - "certificate": { - "type": "string", - "defaultValue": "-----BEGIN CERTIFICATE----- MIIFhzCCA2+gAwIBAgIJALC4r5BQWZE4MA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRMwEQYDVQQHDApTYW50YUNsYXJh MQswCQYDVQQKDAJJVDEUMBIGA1UEAwwLKi5sb2NhbGhvc3QwHhcNMTgwMTE3MTk0 NjI4WhcNMTkwMTA4MTk0NjI4WjBaMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs aWZvcm5pYTETMBEGA1UEBwwKU2FudGFDbGFyYTELMAkGA1UECgwCSVQxFDASBgNV BAMMCyoubG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA 7KfOWDQlov8cMa8r/lcJqiWZaH9myQC74Vbe0HXsntQbcvljkjG2P7ebm5dd9Bzc sauNOJpbKf5AhFK1iwJUAkciGc1LR4k8wfWmQM3NPS8hrqrtH20zqNpdFRpNYjja JofwccPNm030GhhZkZ95TpruvmswMDwspl3jfqdcc/eiQsHcKyGnV2a+UAeoqe7J mHhmhRy1MLqAjF5U1GrUYUONA+22iRDJb4c9B91QoWvsnXpdA9NKV/mmA3/rIdx6 Ld2IPRdrIw2K5sAnXsh3bx2oCSvSfussf0x+4XDrnsaHVfjwvfNL8ECOuac2Oi/E WOp9528gOohpFAuwEt63Vl5p8/CC9m0HJDTZBKm2l5eD1kdPIj4PvP9Sn9CxGXKQ E1bxWoFxGX8EyRW0b0NK31N7b8JPZ1SoFNiB5amOMNLvR26a7cQrKumTuJeYK9Ja JaxhMXM7R0DA0Ev8ZG2xmyCygox+1KPSmJOIEpT70BFbj3rKLNqP22ET+zvPuh+2 DdgyrpHFeYkGWjMbWPjK7wJsD2zM8ccoJQfepPz8I4rT0JfrKAQgCGuGOggneaNJ KTVGNOFbj5AXdZ/Q+GvNommyRdq4J7EnqY6L+P25fo5qZ6UZ/iS0tPcvxgn0Fdhs pUPbQyQIDZyxZd3Q1lUIE38ol8P66mS2zbzf8EeOCoUCAwEAAaNQME4wHQYDVR0O BBYEFETAQM/5P7XJ8kevHFj6BPndQOFaMB8GA1UdIwQYMBaAFETAQM/5P7XJ8kev HFj6BPndQOFaMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAJ1TepKv LWYhFmVQcgZwZf/qt1a1cohzJSm6da9RCnnAWC7WC/U117bgSomtrH1v0OysHFhB zBBUeBqI7+OmzAX8dhj+roKkcnFUM/IwlK1eueIIA//CWvEf/o0XExilVS2yCc9d PTpOQBXwk9QinxK36kHdBiGxa7dW0JPnOEEmuMgGORKeLy4J6Ik8iSeFY1SZVcOI +6WWvoKciPlmIeccC+6YVmkeBwhP2o5r5w/UAaO2hSnGvmm4UIj/VJv4VQu7xTUp cIfFz5NtIr80DbqcyPiEMS2ETJ4L/kO4MS5FfeEXyQuXCzmiIDVY6tE3C7+kZmK4 JzPLuWm9ndQoyQySOGfQqvlUR1+YxUdvmu3LrOS5dOA354Q36wHa4wEGUoHU/7GV fYQmmmDSDaNSpXW5PFey6scFyDBS/yYJ0H9EjYb/11HeWYj8Yv5xTWj8nhzJONC8 D6Y5ydlU4PifM2pOf88pTYpmogNwLJWXbql5I9cvMa8APo4yLVqcISU5ynsvFke+ Non+T0mHpJai/hrA9NK+s6EGC1dAX58jy61h6FhOPI1d4s/mov/KMa2t3SfZp5SF 81aR6dHvO56teiK5M1xMkrqG75zh3TMFJJLRFe9XxeB4JeN76URB3mgADOUqkBxd ibSgVqfKwOw4IujEcqMUc5mqSnbLY1Dv+oby -----END CERTIFICATE-----", - "metadata": { - "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." - } - }, - "certificateKey": { - "type": "string", - "defaultValue": "-----BEGIN PRIVATE KEY----- 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 S+j1+iUKGGhwVmhqh75q5do3+VF3XlAh -----END PRIVATE KEY-----", - "metadata": { - "description": "Provide your SSL Certificate key" - } - }, - "certificateDomain": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" - } - }, - "artifactoryServerName": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" - } - }, - "extraJavaOptions": { - "type": "string", - "minLength": 1, - "defaultValue": "-server -Xms2g -Xmx8g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "metadata": { - "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." - } - }, - "DB_Admin_User": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database Admin user name" - } - }, - "DB_Admin_Password": { - "type": "securestring", - "minLength": 1, - "metadata": { - "description": "Database Admin password" - } - }, - "DB_Name": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database name" - } - }, - "DB_Edition": { - "type": "string", - "minLength": 1, - "defaultValue": "Basic", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ], - "metadata": { - "description": "Database Edition" - } - }, - "storageAccountType": { - "type": "string", - "defaultValue": "Standard_LRS", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS", - "Standard_ZRS" - ], - "metadata": { - "description": "Storage Account 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": "https://raw.githubusercontent.com/jfrog/JFrog-Cloud-Installers/master/AzureResourceManager/" - }, - "_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": { - "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", - "addressPrefix": "10.0.0.0/16", - "subnetPrimaryPrefix": "10.0.1.0/24", - "subnetMemberPrefix": "10.0.2.0/24", - "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", - "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", - "subnetMemberName": "[concat(variables('namingInfix'), 'memberSubnet')]", - "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", - "scaleSetMemberName": "[concat(variables('namingInfix'), 'memberScaleset')]", - "lbName": "[concat(variables('namingInfix'), 'lb')]", - "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", - "bepoolMemberName": "[concat(variables('lbName'), 'memberBepool')]", - "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", - "fepoolMemberName": "[concat(variables('lbName'), 'memberFepool')]", - "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", - "bepoolMemberID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolMemberName'))]", - "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", - "feIpConfigMemberName": "[concat(variables('fepoolMemberName'), 'memberIpConfig')]", - "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", - "feIpConfigMemberId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigMemberName'))]", - "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", - "pipMemberName": "[concat(variables('namingInfix'), 'memberPip')]", - "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", - "nicMemberName": "[concat(variables('namingInfix'), 'memberNic')]", - "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", - "natPoolMemberName": "[concat(variables('lbName'), 'memberNatpool')]", - "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", - "httpProbePrimaryName": "primaryHttpProbe", - "httpsProbePrimaryName": "primaryHttpsProbe", - "httpProbeMemberName": "memberHttpProbe", - "httpsProbeMemberName": "memberHttpsProbe", - "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", - "vmStorageAccountContainerName": "filestore", - "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", - "DB_Name": "[parameters('DB_Name')]", - "DB_Admin_User": "[parameters('DB_Admin_User')]", - "DB_Admin_Password": "[parameters('DB_Admin_Password')]", - "DB_Edition": "[parameters('DB_Edition')]", - "DB_Location": "[parameters('location')]", - "masterKey": "[parameters('masterKey')]", - "joinKey": "[parameters('joinKey')]", - "certificate": "[parameters('certificate')]", - "certificateKey": "[parameters('certificateKey')]", - "certificateDomain": "[parameters('certificateDomain')]", - "artifactoryServerName": "[parameters('artifactoryServerName')]", - "extraJavaOptions": "[parameters('extraJavaOptions')]", - "artifactoryLicense1": "[parameters('artifactoryLicense1')]", - "artifactoryLicense2": "[parameters('artifactoryLicense2')]", - "artifactoryLicense3": "[parameters('artifactoryLicense3')]", - "artifactoryLicense4": "[parameters('artifactoryLicense4')]", - "artifactoryLicense5": "[parameters('artifactoryLicense5')]", - "osType": { - "publisher": "jfrog", - "offer": "artifactory-vm", - "sku": "artifactory-vm-private", - "version": "[parameters('artifactoryVersion')]" - }, - "imageReference": "[variables('osType')]", - "dbTemplate": "azureDBDeploy.json", - "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", - "nsgName": "[concat(variables('namingInfix'), 'nsg')]" - }, - "resources": [ - { - "apiVersion": "2019-05-01", - "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "type": "Microsoft.Network/networkSecurityGroups", - "location": "[parameters('location')]", - "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", - "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-artifactory-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "8081", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 101, - "direction": "Inbound" - } - }, - { - "name": "http-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 102, - "direction": "Inbound" - } - }, - { - "name": "https-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 103, - "direction": "Inbound" - } - }, - { - "name": "membership-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "10001", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 105, - "direction": "Inbound" - } - } - ] - } - }, - { - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" - ], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetPrimaryName')]", - "properties": { - "addressPrefix": "[variables('subnetPrimaryPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "name": "[variables('subnetMemberName')]", - "properties": { - "addressPrefix": "[variables('subnetMemberPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicPrimaryName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicMemberName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipPrimaryName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[variables('namingInfix')]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipMemberName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[concat(variables('namingInfix'),'2')]" - } - } - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('lbName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "sku": { - "name": "Standard" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]" - ], - "tags":{ - "displayName": "Load Balancer" - }, - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('feIpConfigPrimaryName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" - } - } - }, - { - "name": "[variables('feIpConfigMemberName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipMemberName'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('bepoolPrimaryName')]" - }, - { - "name": "[variables('bepoolMemberName')]" - } - ], - "inboundNatPools": [ - { - "name": "[variables('natPoolPrimaryName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 10022, - "frontendPortRangeEnd": 11022, - "backendPort": 22 - } - }, - { - "name": "[variables('natPoolMemberName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 20022, - "frontendPortRangeEnd": 21022, - "backendPort": 22 - } - } - ], - "loadBalancingRules": [ - { - "name": "HTTPRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPSRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPRuleMember", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolMemberID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbeMemberName'))]" - } - } - }, - { - "name": "HTTPSRuleMember", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolMemberID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbeMemberName'))]" - } - } - } - ], - "probes": [ - { - "name": "[variables('httpProbePrimaryName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbePrimaryName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpProbeMemberName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbeMemberName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags":{ - "displayName": "Artifactory Storage Account" - }, - "kind": "Storage", - "properties": {} - }, - { - "type": "Microsoft.Resources/deployments", - "name": "deploySQLDB", - "apiVersion": "2018-07-01", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "[variables('dbTemplateLocation')]", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "db_user": { - "value": "[parameters('DB_Admin_User')]" - }, - "db_password": { - "value": "[parameters('DB_Admin_Password')]" - }, - "db_server": { - "value": "[variables('azureSqlServerName')]" - }, - "db_name": { - "value": "[parameters('DB_Name')]" - }, - "db_edition": { - "value": "[parameters('DB_Edition')]" - }, - "db_location": { - "value": "[variables('DB_Location')]" - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetPrimaryName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-vm-private", - "publisher": "jfrog", - "product": "artifactory-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "1" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',parameters('certificateKey'),'\nCERTIFICATE=', parameters('certificate'),'\nCERTIFICATE_DOMAIN=',parameters('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',parameters('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',parameters('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\nIS_PRIMARY=','true','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicPrimaryName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" - } - } - } - ] - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetMemberName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Compute/virtualMachineScaleSets/', variables('scaleSetPrimaryName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-vm-private", - "publisher": "jfrog", - "product": "artifactory-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "[parameters('nodeCount')]" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',parameters('certificateKey'),'\nCERTIFICATE=', parameters('certificate'),'\nCERTIFICATE_DOMAIN=',parameters('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',parameters('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',parameters('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\nIS_PRIMARY=','false','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicMemberName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolMemberName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolMemberName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" - } - } - } - ] - } - } - } - } - ], - "outputs": { - "fqdn": { - "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipMemberName')),'2018-07-01').dnsSettings.fqdn]", - "type": "string" - } - } -} \ No newline at end of file diff --git a/AzureResourceManager/azuredeploy.parameters.json b/AzureResourceManager/azuredeploy.parameters.json deleted file mode 100644 index e5c9929..0000000 --- a/AzureResourceManager/azuredeploy.parameters.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterName": { - "value": "GEN-UNIQUE" - }, - "adminUsername": { - "value": "GEN-UNIQUE" - }, - "adminPassword": { - "value": "GEN-PASSWORD" - }, - "DB_Admin_User": { - "value": "GEN-UNIQUE" - }, - "DB_Admin_Password": { - "value": "GEN-PASSWORD" - }, - "DB_Name": { - "value": "GEN-UNIQUE" - }, - "masterKey": { - "value": "35767fa0164bac66b6cccb8880babefb" - }, - "joinKey": { - "value": "3143bf2aa4db9c00077e0443c84d252e" - }, - "artifactoryLicense1": { - "value": "GEN-UNIQUE" - }, - "artifactoryLicense2": { - "value": "GEN-UNIQUE" - }, - "artifactoryLicense3": { - "value": "GEN-UNIQUE" - } - } -} \ No newline at end of file diff --git a/AzureResourceManager/images/HA_Diagram.png b/AzureResourceManager/images/HA_Diagram.png deleted file mode 100644 index 98cd3ee932e26b5b9c84683003a5bb354697a5bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107764 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 S=x1>m@rV`RcFh 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 BfT;ig diff --git a/AzureResourceManager/images/Parameters.png b/AzureResourceManager/images/Parameters.png deleted file mode 100644 index a735cef96bef5ebd41bd185ea0fa7849850124da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103748 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Ð_5(tg@W4JnFS* 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 BRRjP4 diff --git a/AzureResourceManager/images/add_licenses.png b/AzureResourceManager/images/add_licenses.png deleted file mode 100644 index 3a06f9dd43633fcad4353fde4947cf8895407c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295712 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Çs+@ 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/etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /artifactory/webapp/ redirect; - rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; - rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; - chunked_transfer_encoding on; - client_max_body_size 0; - location /artifactory/ { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8081/artifactory/; - proxy_set_header X-Artifactory-Override-Base-Url - \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } -} -EOF - -cat </var/opt/jfrog/artifactory/etc/artifactory.cluster.license -${ARTIFACTORY_LICENSE_1} - -${ARTIFACTORY_LICENSE_2} - -${ARTIFACTORY_LICENSE_3} - -${ARTIFACTORY_LICENSE_4} - -${ARTIFACTORY_LICENSE_5} -EOF - -cat </var/opt/jfrog/artifactory/etc/ha-node.properties -node.id=art1 -artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data -context.url=http://127.0.0.1:8081/artifactory -membership.port=10001 -hazelcast.interface=172.25.0.3 -primary=${IS_PRIMARY} -EOF - -cat </var/opt/jfrog/artifactory/etc/db.properties -type=mssql -driver=com.microsoft.sqlserver.jdbc.SQLServerDriver -url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository -username=${DB_USER} -password=${DB_PASSWORD} -EOF - -mkdir -p /var/opt/jfrog/artifactory/etc/security - -cat </var/opt/jfrog/artifactory/etc/security/master.key -${MASTER_KEY} -EOF - -cat </var/opt/jfrog/artifactory/etc/binarystore.xml - - - - - - - - - - - - - - - - - crossNetworkStrategy - crossNetworkStrategy - 2 - 1 - - - - - remote - - - - local - - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - https://${STORAGE_ACCT}.blob.core.windows.net/ - ${STORAGE_CONTAINER} - - -EOF - - -HOSTNAME=$(hostname -i) -sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' -echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 120)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory installation completed." diff --git a/AzureResourceManager/scripts/install_artifactory7.sh b/AzureResourceManager/scripts/install_artifactory7.sh deleted file mode 100644 index 00d1dc2..0000000 --- a/AzureResourceManager/scripts/install_artifactory7.sh +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/bash -DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") -DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") -DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") -DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") -STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") -STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") -STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") -ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") -MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") -IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") -ARTIFACTORY_LICENSE_1=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE1=" | sed "s/LICENSE1=//") -ARTIFACTORY_LICENSE_2=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE2=" | sed "s/LICENSE2=//") -ARTIFACTORY_LICENSE_3=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE3=" | sed "s/LICENSE3=//") -ARTIFACTORY_LICENSE_4=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE4=" | sed "s/LICENSE4=//") -ARTIFACTORY_LICENSE_5=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE5=" | sed "s/LICENSE5=//") -export DEBIAN_FRONTEND=noninteractive - -#Generate Self-Signed Cert -mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ -openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" - -CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") -[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory - -ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") -[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory - -#Configuring nginx -rm /etc/nginx/sites-enabled/default - -cat </etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_protocols TLSv1 TLSv1.1 TLSv1.2; -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /ui/ redirect; - rewrite ^/ui$ /ui/ redirect; - chunked_transfer_encoding on; - client_max_body_size 0; - location / { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8082; - proxy_next_upstream error timeout non_idempotent; - proxy_next_upstream_tries 1; - proxy_set_header X-JFrog-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - - location ~ ^/artifactory/ { - proxy_pass http://127.0.0.1:8081; - } - } -} -EOF - - -mkdir -p /opt/jfrog/artifactory/var/etc/artifactory/ -cat </opt/jfrog/artifactory/var/etc/artifactory/artifactory.cluster.license -${ARTIFACTORY_LICENSE_1} - -${ARTIFACTORY_LICENSE_2} - -${ARTIFACTORY_LICENSE_3} - -${ARTIFACTORY_LICENSE_4} - -${ARTIFACTORY_LICENSE_5} -EOF - -HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') - -if [ "${IS_PRIMARY}" = "true" ]; then - NODE_NAME=art-primary -else - NODE_NAME=art-$(date +%s$RANDOM) -fi - -# Java options -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml - -# Node settings -HOSTNAME=$(hostname -i) -sed -i -e "s/#id: \"art1\"/id: \"${NODE_NAME}\"/" /var/opt/jfrog/artifactory/etc/system.yaml -sed -i -e "s/#ip:/ip: ${HOSTNAME}/" /var/opt/jfrog/artifactory/etc/system.yaml -sed -i -e "s/#primary: true/primary: ${IS_PRIMARY}/" /var/opt/jfrog/artifactory/etc/system.yaml -sed -i -e "s/#haEnabled:/haEnabled:/" /var/opt/jfrog/artifactory/etc/system.yaml - -# Set MS SQL configuration -cat <>/var/opt/jfrog/artifactory/etc/system.yaml - ## One of: mysql, oracle, mssql, postgresql, mariadb - ## Default: Embedded derby - ## Example for mysql - type: mssql - driver: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository - username: ${DB_USER} - password: ${DB_PASSWORD} - -EOF - -# Create master.key on each node -mkdir -p /opt/jfrog/artifactory/var/etc/security/ -cat </opt/jfrog/artifactory/var/etc/security/master.key -${MASTER_KEY} -EOF - -# Azure Blob Storage configuration -# https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-AzureBlobStorageClusterBinaryProvider -mkdir -p /var/opt/jfrog/artifactory/etc/artifactory/ -cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - https://${STORAGE_ACCT}.blob.core.windows.net/ - ${STORAGE_CONTAINER} - - -EOF - - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep 120 -systemctl start artifactory -systemctl start nginx -nginx -s reload -echo "INFO: Artifactory HA installation completed." -echo "" diff --git a/AzureResourceManager/scripts/version_selector.sh b/AzureResourceManager/scripts/version_selector.sh deleted file mode 100644 index 13526b2..0000000 --- a/AzureResourceManager/scripts/version_selector.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") -IFS=$'\t' -SUPPORTED_VERSIONS=("6.8.0\t6.11.3\t6.15.0\t0.16.0\t0.17.0\t6.18.0") -unset IFS - -if [[ "\t${SUPPORTED_VERSIONS[@]}\t" =~ "\t${ARTIFACTORY_VERSION}\t" ]]; then - sh install_artifactory.sh - echo "\ninstall_artifactory.sh was selected" >> user-data.txt -else - sh install_artifactory7.sh - echo "\ninstall_artifactory7.sh was selected" >> user-data.txt -fi \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/LICENSE b/JFrogContainerRegistry/AzureResourceManager/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/createUiDefinition.json b/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/createUiDefinition.json deleted file mode 100644 index a0b103d..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/createUiDefinition.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", - "handler": "Microsoft.Azure.CreateUIDef", - "version": "0.1.2-preview", - "parameters": { - "basics": [ - {} - ], - "steps": [ - { - "name": "vmCredentials", - "label": "VM Credential", - "bladeTitle": "VM Credential", - "subLabel": { - "preValidation": "Provide VM credentials", - "postValidation": "Great - let's move on!" - }, - "elements": [ - { - "name": "adminUsername", - "type": "Microsoft.Compute.UserNameTextBox", - "label": "Admin username", - "osPlatform": "Linux", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - }, - "toolTip": "Provide admin username for the virtual machine" - }, - { - "name": "adminPassword", - "type": "Microsoft.Compute.CredentialsCombo", - "label": { - "password": "Password", - "confirmPassword": "Confirm password" - }, - "osPlatform": "Linux", - "constraints": { - "required": true, - "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", - "customValidationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." - }, - "options": { - "hideConfirmation": false - }, - "toolTip": { - "password": "Provide admin password for the virtual machine" - }, - "visible": true - } - ] - }, - { - "name": "clusterConfig", - "label": "JFrog Container Registry Cluster settings", - "subLabel": { - "preValidation": "Configure JFrog Container Registry Cluster settings", - "postValidation": "Done!" - }, - "bladeTitle": "JFrog Container Registry Cluster Settings", - "elements": [ - { - "name": "clusterName", - "type": "Microsoft.Common.TextBox", - "label": "Cluster name", - "toolTip": "Cluster name", - "defaultValue": "", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - } - }, - { - "name": "vmSku", - "type": "Microsoft.Compute.SizeSelector", - "label": "Virtual machine size", - "toolTip": "The size of the virtual machine for JFrog Container Registry", - "recommendedSizes": [ - "Standard_A2_v2" - ], - "constraints": { - "allowedSizes": [ - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A4", - "Standard_D2s_v3", - "Standard_D4s_v3", - "Standard_DS2_v2", - "Standard_DS3_v2", - "Standard_D2_v2", - "Standard_D3_v2", - "Standard_DC2s", - "Standard_DC4s" - ] - }, - "osPlatform": "Linux", - "count": 1 - }, - { - "name": "artifactoryVersion", - "type": "Microsoft.Common.DropDown", - "label": "JFrog Container Registry-vm image version to deploy.", - "defaultValue": "0.16.0", - "toolTip": "Version of JFrog Container Registry to dpeloy", - "constraints": { - "allowedValues": [ - { - "label": "6.16.0", - "value": "0.16.0" - } - ], - "required": true - }, - "visible": true - }, - { - "name": "masterKey", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "JFrog Container Registry master Key", - "confirmPassword": "Confirm master Key" - }, - "defaultValue": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", - "toolTip": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,32}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificate", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Provide your SSL Certificate.", - "confirmPassword": "Confirm SSL Certificate." - }, - "toolTip": "To use JFrog Container Registry as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate.", - "constraints": { - "required": true, - "regex": "^(-----BEGIN CERTIFICATE-----)(.+)(-----END CERTIFICATE-----)$", - "validationMessage": "Provide SSL Certificate." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificateKey", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Provide your SSL Certificate key.", - "confirmPassword": "Confirm SSL Certificate key." - }, - "toolTip": "Provide your SSL Certificate key", - "constraints": { - "required": true, - "regex": "^(-----BEGIN PRIVATE KEY-----)(.+)(-----END PRIVATE KEY-----)$", - "validationMessage": "Provide SSL Certificate Key." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificateDomain", - "type": "Microsoft.Common.TextBox", - "label": "Provide your Certificate Domain Name.", - "defaultValue": "artifactory", - "toolTip": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team", - "constraints": { - "required": true, - "regex": "^(\\*)*([\\w-\\.])+$", - "validationMessage": "Must be a valid fully-qualified domain name." - } - }, - { - "name": "artifactoryServerName", - "type": "Microsoft.Common.TextBox", - "label": "Provide JFrog Container Registry server name to be used in Nginx.", - "defaultValue": "artifactory", - "toolTip": "Provide JFrog Container Registry server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,20}$", - "validationMessage": "Only letters and numbers are allowed, and the value must be 1-20 characters long." - } - }, - { - "name": "extraJavaOptions", - "type": "Microsoft.Common.TextBox", - "label": "Setting Java Memory Parameters for JFrog Container Registry", - "defaultValue": "-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "toolTip": "Setting Java Memory Parameters for JFrog Container Registry. Learn about system requirements for JFrog Container Registry https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware", - "constraints": { - "required": false - } - } - ] - }, - { - "name": "databaseConfig", - "label": "Database Configuration", - "subLabel": { - "preValidation": "Configure the Database", - "postValidation": "Done" - }, - "bladeTitle": "Database Credential", - "elements": [ - { - "name": "dbAdminUsername", - "type": "Microsoft.Compute.UserNameTextBox", - "label": "User name", - "toolTip": "Admin username for the database", - "osPlatform": "Linux", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - } - }, - { - "name": "dbAdminPassword", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Password", - "confirmPassword": "Confirm password" - }, - "toolTip": "Admin password for the database", - "constraints": { - "required": true, - "regex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", - "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." - }, - "options": { - "hideConfirmation": false - }, - "visible": true - }, - { - "name": "dbName", - "type": "Microsoft.Common.TextBox", - "label": "Database name", - "toolTip": "Database name", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,15}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-15 characters long." - } - }, - { - "name": "dbEdition", - "type": "Microsoft.Common.DropDown", - "label": "Database Edition", - "defaultValue": "Basic", - "toolTip": "Edition of Database to use", - "constraints": { - "allowedValues": [ - { - "label": "Basic", - "value": "Basic" - }, - { - "label": "Standard", - "value": "Standard" - }, - { - "label": "Premium", - "value": "Premium" - } - ], - "required": true - }, - "visible": true - } - ] - }, - { - "name": "storageConfig", - "label": "Storage settings", - "subLabel": { - "preValidation": "Configure the infrastructure settings", - "postValidation": "Done" - }, - "bladeTitle": "Storage settings", - "elements": [ - { - "name": "storageAccountsType", - "type": "Microsoft.Common.DropDown", - "label": "Storage account type", - "defaultValue": "Standard_LRS", - "toolTip": "Storage account type", - "constraints": { - "allowedValues": [ - { - "label": "Standard_LRS", - "value": "Standard_LRS" - } - ], - "required": true - }, - "visible": true - } - ] - } - ], - "outputs": { - "clusterName": "[steps('clusterConfig').clusterName]", - "vmSku": "[steps('clusterConfig').vmSku]", - "location": "[location()]", - "artifactoryVersion": "[steps('clusterConfig').artifactoryVersion]", - "masterKey": "[steps('clusterConfig').masterKey]", - "certificate": "[steps('clusterConfig').certificate]", - "certificateKey": "[steps('clusterConfig').certificateKey]", - "certificateDomain": "[steps('clusterConfig').certificateDomain]", - "artifactoryServerName": "[steps('clusterConfig').artifactoryServerName]", - "extraJavaOptions": "[steps('clusterConfig').extraJavaOptions]", - "adminUsername": "[steps('vmCredentials').adminUsername]", - "adminPassword": "[steps('vmCredentials').adminPassword.password]", - "DB_Admin_User": "[steps('databaseConfig').dbAdminUsername]", - "DB_Admin_Password": "[steps('databaseConfig').dbAdminPassword]", - "DB_Name": "[steps('databaseConfig').dbName]", - "DB_Edition": "[steps('databaseConfig').dbEdition]", - "storageAccountType": "[steps('storageConfig').storageAccountsType]" - } - } -} \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/mainTemplate.json b/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/mainTemplate.json deleted file mode 100644 index 08f765c..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/mainTemplate.json +++ /dev/null @@ -1,766 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "vmSku": { - "type": "string", - "defaultValue": "Standard_A4", - "metadata": { - "description": "Size of VMs in the VM Scale Set." - } - }, - "clusterName": { - "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." - } - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for the resources." - } - }, - "artifactoryVersion": { - "type": "string", - "defaultValue": "0.16.0", - "allowedValues": [ - "6.6.0", - "6.6.1", - "6.7.0", - "6.8.0", - "0.16.0" - ], - "metadata": { - "description": "JFrog Container Registry-vm image version to deploy." - } - }, - "masterKey": { - "type": "securestring", - "maxLength": 64, - "metadata": { - "description": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'" - } - }, - "adminUsername": { - "type": "string", - "metadata": { - "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." - } - }, - "certificate": { - "type": "securestring", - "metadata": { - "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." - } - }, - "certificateKey": { - "type": "securestring", - "metadata": { - "description": "Provide your SSL Certificate key" - } - }, - "certificateDomain": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" - } - }, - "artifactoryServerName": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" - } - }, - "extraJavaOptions": { - "type": "string", - "minLength": 1, - "defaultValue": "-server -Xms2g -Xmx12g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "metadata": { - "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." - } - }, - "DB_Admin_User": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database Admin user name" - } - }, - "DB_Admin_Password": { - "type": "securestring", - "minLength": 1, - "metadata": { - "description": "Database Admin password" - } - }, - "DB_Name": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database name" - } - }, - "DB_Edition": { - "type": "string", - "minLength": 1, - "defaultValue": "Basic", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ], - "metadata": { - "description": "Database Edition" - } - }, - "storageAccountType": { - "type": "string", - "defaultValue": "Standard_LRS", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS", - "Standard_ZRS" - ], - "metadata": { - "description": "Storage Account 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": { - "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", - "addressPrefix": "10.0.0.0/16", - "subnetPrimaryPrefix": "10.0.1.0/24", - "subnetMemberPrefix": "10.0.2.0/24", - "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", - "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", - "subnetMemberName": "[concat(variables('namingInfix'), 'memberSubnet')]", - "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", - "lbName": "[concat(variables('namingInfix'), 'lb')]", - "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", - "bepoolMemberName": "[concat(variables('lbName'), 'memberBepool')]", - "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", - "fepoolMemberName": "[concat(variables('lbName'), 'memberFepool')]", - "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", - "bepoolMemberID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolMemberName'))]", - "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", - "feIpConfigMemberName": "[concat(variables('fepoolMemberName'), 'memberIpConfig')]", - "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", - "feIpConfigMemberId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigMemberName'))]", - "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", - "pipMemberName": "[concat(variables('namingInfix'), 'memberPip')]", - "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", - "nicMemberName": "[concat(variables('namingInfix'), 'memberNic')]", - "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", - "natPoolMemberName": "[concat(variables('lbName'), 'memberNatpool')]", - "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", - "httpProbePrimaryName": "primaryHttpProbe", - "httpsProbePrimaryName": "primaryHttpsProbe", - "httpProbeMemberName": "memberHttpProbe", - "httpsProbeMemberName": "memberHttpsProbe", - "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", - "vmStorageAccountContainerName": "filestore", - "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", - "DB_Name": "[parameters('DB_Name')]", - "DB_Admin_User": "[parameters('DB_Admin_User')]", - "DB_Admin_Password": "[parameters('DB_Admin_Password')]", - "DB_Edition": "[parameters('DB_Edition')]", - "DB_Location": "[parameters('location')]", - "masterKey": "[parameters('masterKey')]", - "certificate": "[parameters('certificate')]", - "certificateKey": "[parameters('certificateKey')]", - "certificateDomain": "[parameters('certificateDomain')]", - "artifactoryServerName": "[parameters('artifactoryServerName')]", - "extraJavaOptions": "[parameters('extraJavaOptions')]", - "osType": { - "publisher": "jfrog", - "offer": "jfrogcontainerregistry-vm", - "sku": "artifactory-jcr", - "version": "[parameters('artifactoryVersion')]" - }, - "imageReference": "[variables('osType')]", - "dbTemplate": "azureDBDeploy.json", - "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", - "nsgName": "[concat(variables('namingInfix'), 'nsg')]" - }, - "resources": [ - { - "apiVersion": "2019-05-01", - "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "type": "Microsoft.Network/networkSecurityGroups", - "location": "[parameters('location')]", - "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", - "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-artifactory-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "8081", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 101, - "direction": "Inbound" - } - }, - { - "name": "http-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 102, - "direction": "Inbound" - } - }, - { - "name": "https-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 103, - "direction": "Inbound" - } - }, - { - "name": "membership-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "10001", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 105, - "direction": "Inbound" - } - } - ] - } - }, - { - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" - ], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetPrimaryName')]", - "properties": { - "addressPrefix": "[variables('subnetPrimaryPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "name": "[variables('subnetMemberName')]", - "properties": { - "addressPrefix": "[variables('subnetMemberPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicPrimaryName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicMemberName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipPrimaryName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[variables('namingInfix')]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipMemberName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[concat(variables('namingInfix'),'2')]" - } - } - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('lbName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "sku": { - "name": "Standard" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" - ], - "tags":{ - "displayName": "Load Balancer" - }, - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('feIpConfigPrimaryName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" - } - } - }, - { - "name": "[variables('feIpConfigMemberName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipMemberName'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('bepoolPrimaryName')]" - }, - { - "name": "[variables('bepoolMemberName')]" - } - ], - "inboundNatPools": [ - { - "name": "[variables('natPoolPrimaryName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 10022, - "frontendPortRangeEnd": 11022, - "backendPort": 22 - } - }, - { - "name": "[variables('natPoolMemberName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 20022, - "frontendPortRangeEnd": 21022, - "backendPort": 22 - } - } - ], - "loadBalancingRules": [ - { - "name": "HTTPRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPSRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPRuleMember", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolMemberID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbeMemberName'))]" - } - } - }, - { - "name": "HTTPSRuleMember", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigMemberId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolMemberID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbeMemberName'))]" - } - } - } - ], - "probes": [ - { - "name": "[variables('httpProbePrimaryName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbePrimaryName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpProbeMemberName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbeMemberName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags":{ - "displayName": "Artifactory Storage Account" - }, - "kind": "Storage", - "properties": {} - }, - { - "type": "Microsoft.Resources/deployments", - "name": "deploySQLDB", - "apiVersion": "2018-07-01", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "[variables('dbTemplateLocation')]", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "db_user": { - "value": "[parameters('DB_Admin_User')]" - }, - "db_password": { - "value": "[parameters('DB_Admin_Password')]" - }, - "db_server": { - "value": "[variables('azureSqlServerName')]" - }, - "db_name": { - "value": "[parameters('DB_Name')]" - }, - "db_edition": { - "value": "[variables('DB_Edition')]" - }, - "db_location": { - "value": "[variables('DB_Location')]" - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetPrimaryName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-jcr", - "publisher": "jfrog", - "product": "jfrogcontainerregistry-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "1" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','true','\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicPrimaryName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "sh install_artifactory.sh" - } - } - } - ] - } - } - } - } - ], - "outputs": { - "fqdn": { - "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipPrimaryName')),'2018-07-01').dnsSettings.fqdn]", - "type": "string" - } - } -} \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/nested/azureDBDeploy.json b/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/nested/azureDBDeploy.json deleted file mode 100644 index 70c31a5..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/nested/azureDBDeploy.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "db_user": { - "type": "string", - "defaultValue": "artifactory", - "minLength": 1 - }, - "db_password": { - "type": "securestring" - }, - "db_server": { - "type": "string", - "defaultValue": "artmssqlsrv", - "minLength": 1 - }, - "db_name": { - "type": "string", - "defaultValue": "artdb", - "minLength": 1 - }, - "db_location": { - "type": "string", - "defaultValue": "" - }, - "db_edition": { - "type": "string", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ] - } - }, - "variables": { - "rtdbCollation": "Latin1_General_100_CS_AS", - "db_location": "[parameters('db_location')]" - }, - "resources": [ - { - "name": "[parameters('db_server')]", - "type": "Microsoft.Sql/servers", - "kind": "v12.0", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "tags": { - "displayName": "artifactoryDB" - }, - "properties": { - "administratorLogin": "[parameters('db_user')]", - "administratorLoginPassword": "[parameters('db_password')]", - "version": "12.0" - }, - "resources": [ - { - "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", - "type": "firewallrules", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "dependsOn": [ - "[concat('Microsoft.Sql/servers/', parameters('db_server'))]" - ], - "properties": { - "startIpAddress": "0.0.0.0", - "endIpAddress": "0.0.0.0" - } - }, - { - "name": "[parameters('db_name')]", - "type": "databases", - "kind": "v12.0,user", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "dependsOn": [ - "[parameters('db_server')]" - ], - "tags": { - "displayName": "artifactoryDB" - }, - "properties": { - "edition": "[parameters('db_edition')]", - "maxSizeBytes": "1073741824", - "collation": "[variables('rtdbCollation')]" - } - } - ] - } - ], - "outputs": { - "jdbcConnString": { - "type": "string", - "value": "[concat('jdbc:sqlserver://', reference(concat('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" - } - } -} diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/scripts/install_artifactory.sh b/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/scripts/install_artifactory.sh deleted file mode 100644 index d033b1d..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_6/scripts/install_artifactory.sh +++ /dev/null @@ -1,206 +0,0 @@ -#!/bin/bash -DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") -DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") -DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") -DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") -STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") -STORAGE_ACT_ENDPOINT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_ENDPOINT=" | sed "s/STO_ACT_ENDPOINT=//") -STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") -STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") -MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") -IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") - - -UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") - -export DEBIAN_FRONTEND=noninteractive - -#Generate Self-Signed Cert -mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ -openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" - -CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") -[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory - -ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") -[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory - -#Configuring nginx -rm /etc/nginx/sites-enabled/default - -cat </etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /artifactory/webapp/ redirect; - rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; - rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; - chunked_transfer_encoding on; - client_max_body_size 0; - location /artifactory/ { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8081/artifactory/; - proxy_set_header X-Artifactory-Override-Base-Url - \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } -} -EOF - -HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') - -if [ "${IS_PRIMARY}" = "true" ]; then - NODE_NAME=art-primary -else - NODE_NAME=art-$(date +%s$RANDOM) -fi - -cat </var/opt/jfrog/artifactory/etc/ha-node.properties -node.id=${NODE_NAME} -artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data -context.url=http://${HOSTNAME}:8081/artifactory -access.context.url=http://${HOSTNAME}:8081/access -membership.port=10001 -hazelcast.interface=${HOSTNAME} -primary=${IS_PRIMARY} -EOF - -cat </var/opt/jfrog/artifactory/etc/db.properties -type=mssql -driver=com.microsoft.sqlserver.jdbc.SQLServerDriver -url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository -username=${DB_USER} -password=${DB_PASSWORD} -EOF - -mkdir -p /var/opt/jfrog/artifactory/etc/security - -cat </var/opt/jfrog/artifactory/etc/security/master.key -${MASTER_KEY} -EOF - -cat </var/opt/jfrog/artifactory/etc/binarystore.xml - - - - - - - - - - - - - - - - - crossNetworkStrategy - crossNetworkStrategy - 2 - 1 - - - - - remote - - - - local - - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - ${STORAGE_ACT_ENDPOINT} - ${STORAGE_CONTAINER} - - -EOF - -HOSTNAME=$(hostname -i) -sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' -echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 240)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory installation completed." > /tmp/artifactory-install.log diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/createUiDefinition.json b/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/createUiDefinition.json deleted file mode 100644 index e61080f..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/createUiDefinition.json +++ /dev/null @@ -1,340 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", - "handler": "Microsoft.Azure.CreateUIDef", - "version": "0.1.2-preview", - "parameters": { - "basics": [ - {} - ], - "steps": [ - { - "name": "vmCredentials", - "label": "VM Credential", - "bladeTitle": "VM Credential", - "subLabel": { - "preValidation": "Provide VM credentials", - "postValidation": "Great - let's move on!" - }, - "elements": [ - { - "name": "adminUsername", - "type": "Microsoft.Compute.UserNameTextBox", - "label": "Admin username", - "osPlatform": "Linux", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - }, - "toolTip": "Provide admin username for the virtual machine" - }, - { - "name": "adminPassword", - "type": "Microsoft.Compute.CredentialsCombo", - "label": { - "password": "Password", - "confirmPassword": "Confirm password" - }, - "osPlatform": "Linux", - "constraints": { - "required": true, - "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", - "customValidationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." - }, - "options": { - "hideConfirmation": false - }, - "toolTip": { - "password": "Provide admin password for the virtual machine" - }, - "visible": true - } - ] - }, - { - "name": "clusterConfig", - "label": "JFrog Container Registry Cluster settings", - "subLabel": { - "preValidation": "Configure JFrog Container Registry Cluster settings", - "postValidation": "Done!" - }, - "bladeTitle": "JFrog Container Registry Cluster Settings", - "elements": [ - { - "name": "clusterName", - "type": "Microsoft.Common.TextBox", - "label": "Cluster name", - "toolTip": "Cluster name", - "defaultValue": "", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - } - }, - { - "name": "vmSku", - "type": "Microsoft.Compute.SizeSelector", - "label": "Virtual machine size", - "toolTip": "The size of the virtual machine for JFrog Container Registry", - "recommendedSizes": [ - "Standard_D2s_v3" - ], - "constraints": { - "allowedSizes": [ - "Standard_A4_v2", - "Standard_A4", - "Standard_D2s_v3", - "Standard_D4s_v3", - "Standard_DS2_v2", - "Standard_DS3_v2", - "Standard_D2_v2", - "Standard_D3_v2", - "Standard_DC2s", - "Standard_DC4s" - ] - }, - "osPlatform": "Linux", - "count": 1 - }, - { - "name": "artifactoryVersion", - "type": "Microsoft.Common.DropDown", - "label": "JFrog Container Registry-vm image version to deploy.", - "defaultValue": "7.4.3", - "toolTip": "Version of JFrog Container Registry to deploy", - "constraints": { - "allowedValues": [ - { - "label": "7.2.1", - "value": "7.2.1" - }, - { - "label": "7.3.2", - "value": "7.3.2" - }, - { - "label": "7.4.3", - "value": "7.4.3" - } - ], - "required": true - }, - "visible": true - }, - { - "name": "masterKey", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "JFrog Container Registry master Key", - "confirmPassword": "Confirm master Key" - }, - "toolTip": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,32}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificate", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Provide your SSL Certificate.", - "confirmPassword": "Confirm SSL Certificate." - }, - "toolTip": "To use JFrog Container Registry as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate.", - "constraints": { - "required": true, - "regex": "^(-----BEGIN CERTIFICATE-----)(.+)(-----END CERTIFICATE-----)$", - "validationMessage": "Provide SSL Certificate." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificateKey", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Provide your SSL Certificate key.", - "confirmPassword": "Confirm SSL Certificate key." - }, - "toolTip": "Provide your SSL Certificate key", - "constraints": { - "required": true, - "regex": "^(-----BEGIN)(.+)(PRIVATE KEY-----)(.+)(-----END)(.+)(PRIVATE KEY-----)$", - "validationMessage": "Provide SSL Certificate Key." - }, - "options": { - "hideConfirmation": true - } - }, - { - "name": "certificateDomain", - "type": "Microsoft.Common.TextBox", - "label": "Provide your Certificate Domain Name.", - "defaultValue": "artifactory", - "toolTip": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team", - "constraints": { - "required": true, - "regex": "^(\\*)*([\\w-\\.])+$", - "validationMessage": "Must be a valid fully-qualified domain name." - } - }, - { - "name": "artifactoryServerName", - "type": "Microsoft.Common.TextBox", - "label": "Provide JFrog Container Registry server name to be used in Nginx.", - "defaultValue": "artifactory", - "toolTip": "Provide JFrog Container Registry server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,20}$", - "validationMessage": "Only letters and numbers are allowed, and the value must be 1-20 characters long." - } - }, - { - "name": "extraJavaOptions", - "type": "Microsoft.Common.TextBox", - "label": "Setting Java Memory Parameters for JFrog Container Registry", - "defaultValue": "-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "toolTip": "Setting Java Memory Parameters for JFrog Container Registry. Learn about system requirements for JFrog Container Registry https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware", - "constraints": { - "required": false, - "regex": "[^a-zA-Z0-9]+\\S+\\D", - "validationMessage": "Example: -server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"" - } - } - ] - }, - { - "name": "databaseConfig", - "label": "Database Configuration", - "subLabel": { - "preValidation": "Configure the Database", - "postValidation": "Done" - }, - "bladeTitle": "Database Credential", - "elements": [ - { - "name": "dbAdminUsername", - "type": "Microsoft.Compute.UserNameTextBox", - "label": "User name", - "toolTip": "Admin username for the database", - "osPlatform": "Linux", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,30}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." - } - }, - { - "name": "dbAdminPassword", - "type": "Microsoft.Common.PasswordBox", - "label": { - "password": "Password", - "confirmPassword": "Confirm password" - }, - "toolTip": "Admin password for the database", - "constraints": { - "required": true, - "regex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", - "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." - }, - "options": { - "hideConfirmation": false - }, - "visible": true - }, - { - "name": "dbName", - "type": "Microsoft.Common.TextBox", - "label": "Database name", - "toolTip": "Database name", - "constraints": { - "required": true, - "regex": "^[a-z0-9A-Z]{1,15}$", - "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-15 characters long." - } - }, - { - "name": "dbEdition", - "type": "Microsoft.Common.DropDown", - "label": "Database Edition", - "defaultValue": "Basic", - "toolTip": "Edition of Database to use", - "constraints": { - "allowedValues": [ - { - "label": "Basic", - "value": "Basic" - }, - { - "label": "Standard", - "value": "Standard" - }, - { - "label": "Premium", - "value": "Premium" - } - ], - "required": true - }, - "visible": true - } - ] - }, - { - "name": "storageConfig", - "label": "Storage settings", - "subLabel": { - "preValidation": "Configure the infrastructure settings", - "postValidation": "Done" - }, - "bladeTitle": "Storage settings", - "elements": [ - { - "name": "storageAccountsType", - "type": "Microsoft.Common.DropDown", - "label": "Storage account type", - "defaultValue": "Standard_LRS", - "toolTip": "Storage account type", - "constraints": { - "allowedValues": [ - { - "label": "Standard_LRS", - "value": "Standard_LRS" - } - ], - "required": true - }, - "visible": true - } - ] - } - ], - "outputs": { - "clusterName": "[steps('clusterConfig').clusterName]", - "vmSku": "[steps('clusterConfig').vmSku]", - "location": "[location()]", - "artifactoryVersion": "[steps('clusterConfig').artifactoryVersion]", - "masterKey": "[steps('clusterConfig').masterKey]", - "certificate": "[steps('clusterConfig').certificate]", - "certificateKey": "[steps('clusterConfig').certificateKey]", - "certificateDomain": "[steps('clusterConfig').certificateDomain]", - "artifactoryServerName": "[steps('clusterConfig').artifactoryServerName]", - "extraJavaOptions": "[steps('clusterConfig').extraJavaOptions]", - "adminUsername": "[steps('vmCredentials').adminUsername]", - "adminPassword": "[steps('vmCredentials').adminPassword.password]", - "DB_Admin_User": "[steps('databaseConfig').dbAdminUsername]", - "DB_Admin_Password": "[steps('databaseConfig').dbAdminPassword]", - "DB_Name": "[steps('databaseConfig').dbName]", - "DB_Edition": "[steps('databaseConfig').dbEdition]", - "storageAccountType": "[steps('storageConfig').storageAccountsType]" - } - } -} \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/mainTemplate.json b/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/mainTemplate.json deleted file mode 100644 index bd39da3..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/mainTemplate.json +++ /dev/null @@ -1,619 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "vmSku": { - "type": "string", - "defaultValue": "Standard_D2s_v3", - "metadata": { - "description": "Size of VMs in the VM Scale Set." - } - }, - "clusterName": { - "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." - } - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for the resources." - } - }, - "artifactoryVersion": { - "type": "string", - "defaultValue": "7.4.3", - "allowedValues": [ - "7.2.1", - "7.3.2", - "7.4.3" - ], - "metadata": { - "description": "JFrog Container Registry-vm image version to deploy." - } - }, - "masterKey": { - "type": "securestring", - "maxLength": 64, - "metadata": { - "description": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'" - } - }, - "adminUsername": { - "type": "string", - "metadata": { - "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." - } - }, - "certificate": { - "type": "securestring", - "metadata": { - "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." - } - }, - "certificateKey": { - "type": "securestring", - "metadata": { - "description": "Provide your SSL Certificate key" - } - }, - "certificateDomain": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" - } - }, - "artifactoryServerName": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" - } - }, - "extraJavaOptions": { - "type": "string", - "minLength": 1, - "defaultValue": "-server -Xms2g -Xmx12g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "metadata": { - "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." - } - }, - "DB_Admin_User": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database Admin user name" - } - }, - "DB_Admin_Password": { - "type": "securestring", - "minLength": 1, - "metadata": { - "description": "Database Admin password" - } - }, - "DB_Name": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database name" - } - }, - "DB_Edition": { - "type": "string", - "minLength": 1, - "defaultValue": "Basic", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ], - "metadata": { - "description": "Database Edition" - } - }, - "storageAccountType": { - "type": "string", - "defaultValue": "Standard_LRS", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS", - "Standard_ZRS" - ], - "metadata": { - "description": "Storage Account 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": { - "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", - "addressPrefix": "10.0.0.0/16", - "subnetPrimaryPrefix": "10.0.1.0/24", - "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", - "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", - "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", - "lbName": "[concat(variables('namingInfix'), 'lb')]", - "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", - "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", - "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", - "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", - "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", - "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", - "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", - "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", - "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", - "httpProbePrimaryName": "primaryHttpProbe", - "httpsProbePrimaryName": "primaryHttpsProbe", - "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", - "vmStorageAccountContainerName": "filestore", - "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", - "DB_Name": "[parameters('DB_Name')]", - "DB_Admin_User": "[parameters('DB_Admin_User')]", - "DB_Admin_Password": "[parameters('DB_Admin_Password')]", - "DB_Edition": "[parameters('DB_Edition')]", - "DB_Location": "[parameters('location')]", - "masterKey": "[parameters('masterKey')]", - "certificate": "[parameters('certificate')]", - "certificateKey": "[parameters('certificateKey')]", - "certificateDomain": "[parameters('certificateDomain')]", - "artifactoryServerName": "[parameters('artifactoryServerName')]", - "extraJavaOptions": "[parameters('extraJavaOptions')]", - "osType": { - "publisher": "jfrog", - "offer": "jfrogcontainerregistry-vm", - "sku": "artifactory-jcr", - "version": "[parameters('artifactoryVersion')]" - }, - "imageReference": "[variables('osType')]", - "dbTemplate": "azureDBDeploy.json", - "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", - "nsgName": "[concat(variables('namingInfix'), 'nsg')]" - }, - "resources": [ - { - "apiVersion": "2019-05-01", - "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "type": "Microsoft.Network/networkSecurityGroups", - "location": "[parameters('location')]", - "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", - "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-artifactory-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "8081", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 101, - "direction": "Inbound" - } - }, - { - "name": "http-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 102, - "direction": "Inbound" - } - }, - { - "name": "https-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 103, - "direction": "Inbound" - } - }, - { - "name": "membership-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "10001", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 105, - "direction": "Inbound" - } - } - ] - } - }, - { - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" - ], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetPrimaryName')]", - "properties": { - "addressPrefix": "[variables('subnetPrimaryPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicPrimaryName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipPrimaryName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[variables('namingInfix')]" - } - } - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('lbName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "sku": { - "name": "Standard" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" - ], - "tags":{ - "displayName": "Load Balancer" - }, - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('feIpConfigPrimaryName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('bepoolPrimaryName')]" - } - ], - "inboundNatPools": [ - { - "name": "[variables('natPoolPrimaryName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 10022, - "frontendPortRangeEnd": 11022, - "backendPort": 22 - } - } - ], - "loadBalancingRules": [ - { - "name": "HTTPRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPSRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" - } - } - } - ], - "probes": [ - { - "name": "[variables('httpProbePrimaryName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbePrimaryName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags":{ - "displayName": "Artifactory Storage Account" - }, - "kind": "Storage", - "properties": {} - }, - { - "type": "Microsoft.Resources/deployments", - "name": "deploySQLDB", - "apiVersion": "2018-07-01", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "[variables('dbTemplateLocation')]", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "db_user": { - "value": "[parameters('DB_Admin_User')]" - }, - "db_password": { - "value": "[parameters('DB_Admin_Password')]" - }, - "db_server": { - "value": "[variables('azureSqlServerName')]" - }, - "db_name": { - "value": "[parameters('DB_Name')]" - }, - "db_edition": { - "value": "[variables('DB_Edition')]" - }, - "db_location": { - "value": "[variables('DB_Location')]" - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetPrimaryName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-jcr", - "publisher": "jfrog", - "product": "jfrogcontainerregistry-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "1" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','true','\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicPrimaryName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "sh install_artifactory7.sh" - } - } - } - ] - } - } - } - } - ], - "outputs": { - "fqdn": { - "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipPrimaryName')),'2018-07-01').dnsSettings.fqdn]", - "type": "string" - } - } -} \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json b/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json deleted file mode 100644 index 70c31a5..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/nested/azureDBDeploy.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "db_user": { - "type": "string", - "defaultValue": "artifactory", - "minLength": 1 - }, - "db_password": { - "type": "securestring" - }, - "db_server": { - "type": "string", - "defaultValue": "artmssqlsrv", - "minLength": 1 - }, - "db_name": { - "type": "string", - "defaultValue": "artdb", - "minLength": 1 - }, - "db_location": { - "type": "string", - "defaultValue": "" - }, - "db_edition": { - "type": "string", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ] - } - }, - "variables": { - "rtdbCollation": "Latin1_General_100_CS_AS", - "db_location": "[parameters('db_location')]" - }, - "resources": [ - { - "name": "[parameters('db_server')]", - "type": "Microsoft.Sql/servers", - "kind": "v12.0", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "tags": { - "displayName": "artifactoryDB" - }, - "properties": { - "administratorLogin": "[parameters('db_user')]", - "administratorLoginPassword": "[parameters('db_password')]", - "version": "12.0" - }, - "resources": [ - { - "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", - "type": "firewallrules", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "dependsOn": [ - "[concat('Microsoft.Sql/servers/', parameters('db_server'))]" - ], - "properties": { - "startIpAddress": "0.0.0.0", - "endIpAddress": "0.0.0.0" - } - }, - { - "name": "[parameters('db_name')]", - "type": "databases", - "kind": "v12.0,user", - "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", - "dependsOn": [ - "[parameters('db_server')]" - ], - "tags": { - "displayName": "artifactoryDB" - }, - "properties": { - "edition": "[parameters('db_edition')]", - "maxSizeBytes": "1073741824", - "collation": "[variables('rtdbCollation')]" - } - } - ] - } - ], - "outputs": { - "jdbcConnString": { - "type": "string", - "value": "[concat('jdbc:sqlserver://', reference(concat('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" - } - } -} diff --git a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh b/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh deleted file mode 100644 index 77a62b7..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/MP_submission_7/scripts/install_artifactory7.sh +++ /dev/null @@ -1,178 +0,0 @@ -#!/bin/bash -DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") -DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") -DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") -DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") -STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") -STORAGE_ACT_ENDPOINT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_ENDPOINT=" | sed "s/STO_ACT_ENDPOINT=//") -STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") -STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") -MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") -IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") - - -export DEBIAN_FRONTEND=noninteractive - -#Generate Self-Signed Cert -mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ -openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" - -CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") -[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory - -ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") -[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory - -#Configuring nginx -rm /etc/nginx/sites-enabled/default - -cat </etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /artifactory/webapp/ redirect; - rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; - chunked_transfer_encoding on; - client_max_body_size 0; - location /artifactory/ { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8081/artifactory/; - proxy_set_header X-Artifactory-Override-Base-Url - \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } - location / { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8082; - proxy_set_header X-Artifactory-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } - -} -EOF - -HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') - -if [ "${IS_PRIMARY}" = "true" ]; then - NODE_NAME=art-primary -else - NODE_NAME=art-$(date +%s$RANDOM) -fi - -# Java options -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml - -# Set MS SQL configuration -cat <>/var/opt/jfrog/artifactory/etc/system.yaml - ## One of: mysql, oracle, mssql, postgresql, mariadb - ## Default: Embedded derby - ## Example for mysql - type: mssql - driver: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository - username: ${DB_USER} - password: ${DB_PASSWORD} - -EOF - -mkdir -p /var/opt/jfrog/artifactory/etc/security - -cat </opt/jfrog/artifactory/var/etc/security/master.key -${MASTER_KEY} -EOF - -# NOTE: Path is changed in Artifactory 7. Non-HA configuration -mkdir -p /var/opt/jfrog/artifactory/etc/artifactory -cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - https://${STORAGE_ACCT}.blob.core.windows.net/ - ${STORAGE_CONTAINER} - - -EOF - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 240)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory installation completed." >> /tmp/artifactory-install.log diff --git a/JFrogContainerRegistry/AzureResourceManager/README.md b/JFrogContainerRegistry/AzureResourceManager/README.md deleted file mode 100644 index 5408864..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# Setup JFrog Container Registry - - - - - - - - -This template can help you setup the [JFrog Container Registry](https://www.jfrog.com/confluence/display/JCR/Welcome+to+JFrog+Container+Registry) on Azure. - -## A. Deploy JFrog Container Registry on Azure - -1. Click the "Deploy to Azure" button. - -2. Fill out the settings. Make sure to provide a valid SSL certificate. If using no certificate or one that is self-signed, see [Docker's documentation on client configuration](https://docs.docker.com/registry/insecure/). - -3. Click on "Purchase" to start deploying resources. It will deploy: - * Microsoft SQL database - * Azure Blob storage service - * A VM with NGINX and JFrog Container Registry - * Azure Load Balancer - -4. Once deployment is done. Copy FQDN from Output of deployment template. - -5. Access artifactory using FQDN. - -### Note: -1. Turn off daily backups. Read Documentation provided [here](https://www.jfrog.com/confluence/display/RTF/Managing+Backups) -2. Add an SSL Certificate to access Docker without using the insecure option -3. Input values for 'adminUsername' and 'adminPassword' parameters needs to follow azure VM access rules. -4. Refer to [System Requirements](https://www.jfrog.com/confluence/display/RTF/System+Requirements) for changing 'extraJavaOptions' input parameter value. - -### Steps to setup Artifactory as secure docker registry -You will need a valid SSL certificate for a domain name (for example, artifactory.jfrog.team) -1. Pass your SSL Certificate in parameter `Certificate` as string -2. Pass your SSL Certificate Key in parameter `CertificateKey` as string -3. Create DNS record with an entry that matches your domain name pointing to the load balancer value provided as output in template deployment. -4. You should now be able to access any docker registry using the path method. - * Login: `docker login [domain name]` in our example, that would be `docker login artifactory.jfrog.team` - * Pull/Push to a particular repository: `docker pull [domain name]/[repository name]/[image name]:[tag]` - * Example with our domain, pull from repository `docker-local`, the `latest` `busybox` image - * `docker pull artifactory.jfrog.team/docker-local/busybox:latest` - -### Steps to upgrade Artifactory Version - -1. Login into the VM instance and sudo as root. Use the admin credentials provided in the install setup. -Note: Use load balancer's NAT entries under Azure resources, to get the allocated NAT port for accessing the VM instance. - -2. Upgrade artifactory with following [RPM instructions](https://www.jfrog.com/confluence/display/JCR/Upgrading+JFrog+Container+Registry#UpgradingJFrogContainerRegistry-RPMInstallation). ------- -#### Note: -Supported locations: `East US 2`, `Central US`, `West Central US` and `West Europe`. -Please check the Azure region support for `Standard Sku` property in load balancer for this template to work properly. -Check for SQL server support on specified location. If SQL server is not available in the location, Use 'DB_Location' to specify the location with SQL server support. - - - \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/azuredeploy.json b/JFrogContainerRegistry/AzureResourceManager/azuredeploy.json deleted file mode 100644 index e6688ca..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/azuredeploy.json +++ /dev/null @@ -1,622 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "vmSku": { - "type": "string", - "defaultValue": "Standard_D2s_v3", - "metadata": { - "description": "Size of VMs in the VM Scale Set." - } - }, - "clusterName": { - "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." - } - }, - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for the resources." - } - }, - "artifactoryVersion": { - "type": "string", - "defaultValue": "7.4.3", - "allowedValues": [ - "7.2.1", - "7.3.2", - "7.4.3" - ], - "metadata": { - "description": "JFrog Container Registry-vm image version to deploy." - } - }, - "masterKey": { - "type": "string", - "defaultValue": "1ce2be4490ca2c662cb79636cf9b7b8e", - "maxLength": 64, - "metadata": { - "description": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'" - } - }, - "adminUsername": { - "type": "string", - "metadata": { - "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." - } - }, - "certificate": { - "type": "string", - "defaultValue": "-----BEGIN CERTIFICATE----- MIIFhzCCA2+gAwIBAgIJALC4r5BQWZE4MA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRMwEQYDVQQHDApTYW50YUNsYXJh MQswCQYDVQQKDAJJVDEUMBIGA1UEAwwLKi5sb2NhbGhvc3QwHhcNMTgwMTE3MTk0 NjI4WhcNMTkwMTA4MTk0NjI4WjBaMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs aWZvcm5pYTETMBEGA1UEBwwKU2FudGFDbGFyYTELMAkGA1UECgwCSVQxFDASBgNV BAMMCyoubG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA 7KfOWDQlov8cMa8r/lcJqiWZaH9myQC74Vbe0HXsntQbcvljkjG2P7ebm5dd9Bzc sauNOJpbKf5AhFK1iwJUAkciGc1LR4k8wfWmQM3NPS8hrqrtH20zqNpdFRpNYjja JofwccPNm030GhhZkZ95TpruvmswMDwspl3jfqdcc/eiQsHcKyGnV2a+UAeoqe7J mHhmhRy1MLqAjF5U1GrUYUONA+22iRDJb4c9B91QoWvsnXpdA9NKV/mmA3/rIdx6 Ld2IPRdrIw2K5sAnXsh3bx2oCSvSfussf0x+4XDrnsaHVfjwvfNL8ECOuac2Oi/E WOp9528gOohpFAuwEt63Vl5p8/CC9m0HJDTZBKm2l5eD1kdPIj4PvP9Sn9CxGXKQ E1bxWoFxGX8EyRW0b0NK31N7b8JPZ1SoFNiB5amOMNLvR26a7cQrKumTuJeYK9Ja JaxhMXM7R0DA0Ev8ZG2xmyCygox+1KPSmJOIEpT70BFbj3rKLNqP22ET+zvPuh+2 DdgyrpHFeYkGWjMbWPjK7wJsD2zM8ccoJQfepPz8I4rT0JfrKAQgCGuGOggneaNJ KTVGNOFbj5AXdZ/Q+GvNommyRdq4J7EnqY6L+P25fo5qZ6UZ/iS0tPcvxgn0Fdhs pUPbQyQIDZyxZd3Q1lUIE38ol8P66mS2zbzf8EeOCoUCAwEAAaNQME4wHQYDVR0O BBYEFETAQM/5P7XJ8kevHFj6BPndQOFaMB8GA1UdIwQYMBaAFETAQM/5P7XJ8kev HFj6BPndQOFaMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAJ1TepKv LWYhFmVQcgZwZf/qt1a1cohzJSm6da9RCnnAWC7WC/U117bgSomtrH1v0OysHFhB zBBUeBqI7+OmzAX8dhj+roKkcnFUM/IwlK1eueIIA//CWvEf/o0XExilVS2yCc9d PTpOQBXwk9QinxK36kHdBiGxa7dW0JPnOEEmuMgGORKeLy4J6Ik8iSeFY1SZVcOI +6WWvoKciPlmIeccC+6YVmkeBwhP2o5r5w/UAaO2hSnGvmm4UIj/VJv4VQu7xTUp cIfFz5NtIr80DbqcyPiEMS2ETJ4L/kO4MS5FfeEXyQuXCzmiIDVY6tE3C7+kZmK4 JzPLuWm9ndQoyQySOGfQqvlUR1+YxUdvmu3LrOS5dOA354Q36wHa4wEGUoHU/7GV fYQmmmDSDaNSpXW5PFey6scFyDBS/yYJ0H9EjYb/11HeWYj8Yv5xTWj8nhzJONC8 D6Y5ydlU4PifM2pOf88pTYpmogNwLJWXbql5I9cvMa8APo4yLVqcISU5ynsvFke+ Non+T0mHpJai/hrA9NK+s6EGC1dAX58jy61h6FhOPI1d4s/mov/KMa2t3SfZp5SF 81aR6dHvO56teiK5M1xMkrqG75zh3TMFJJLRFe9XxeB4JeN76URB3mgADOUqkBxd ibSgVqfKwOw4IujEcqMUc5mqSnbLY1Dv+oby -----END CERTIFICATE-----", - "metadata": { - "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." - } - }, - "certificateKey": { - "type": "string", - "defaultValue": "-----BEGIN PRIVATE KEY----- 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 S+j1+iUKGGhwVmhqh75q5do3+VF3XlAh -----END PRIVATE KEY-----", - "metadata": { - "description": "Provide your SSL Certificate key" - } - }, - "certificateDomain": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" - } - }, - "artifactoryServerName": { - "type": "string", - "minLength": 1, - "defaultValue": "artifactory", - "metadata": { - "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" - } - }, - "extraJavaOptions": { - "type": "string", - "minLength": 1, - "defaultValue": "-server -Xms2g -Xmx12g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", - "metadata": { - "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." - } - }, - "DB_Admin_User": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database Admin user name" - } - }, - "DB_Admin_Password": { - "type": "securestring", - "minLength": 1, - "metadata": { - "description": "Database Admin password" - } - }, - "DB_Name": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database name" - } - }, - "DB_Edition": { - "type": "string", - "minLength": 1, - "defaultValue": "Basic", - "allowedValues": [ - "Basic", - "Standard", - "Premium" - ], - "metadata": { - "description": "Database Edition" - } - }, - "storageAccountType": { - "type": "string", - "defaultValue": "Standard_LRS", - "allowedValues": [ - "Standard_LRS", - "Standard_GRS", - "Standard_ZRS" - ], - "metadata": { - "description": "Storage Account 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": "https://raw.githubusercontent.com/JFrogDev/JFrog-Cloud-Installers/master/JFrogContainerRegistry/AzureResourceManager/" - }, - "_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": { - "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", - "addressPrefix": "10.0.0.0/16", - "subnetPrimaryPrefix": "10.0.1.0/24", - "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", - "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", - "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", - "lbName": "[concat(variables('namingInfix'), 'lb')]", - "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", - "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", - "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", - "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", - "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", - "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", - "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", - "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", - "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", - "httpProbePrimaryName": "primaryHttpProbe", - "httpsProbePrimaryName": "primaryHttpsProbe", - "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", - "vmStorageAccountContainerName": "filestore", - "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", - "DB_Name": "[parameters('DB_Name')]", - "DB_Admin_User": "[parameters('DB_Admin_User')]", - "DB_Admin_Password": "[parameters('DB_Admin_Password')]", - "DB_Edition": "[parameters('DB_Edition')]", - "DB_Location": "[parameters('location')]", - "masterKey": "[parameters('masterKey')]", - "certificate": "[parameters('certificate')]", - "certificateKey": "[parameters('certificateKey')]", - "certificateDomain": "[parameters('certificateDomain')]", - "artifactoryServerName": "[parameters('artifactoryServerName')]", - "extraJavaOptions": "[parameters('extraJavaOptions')]", - "osType": { - "publisher": "jfrog", - "offer": "jfrogcontainerregistry-vm", - "sku": "artifactory-jcr-private", - "version": "[parameters('artifactoryVersion')]" - }, - "imageReference": "[variables('osType')]", - "dbTemplate": "azureDBDeploy.json", - "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", - "nsgName": "[concat(variables('namingInfix'), 'nsg')]" - }, - "resources": [ - { - "apiVersion": "2019-05-01", - "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "type": "Microsoft.Network/networkSecurityGroups", - "location": "[parameters('location')]", - "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", - "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-artifactory-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "8081", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 101, - "direction": "Inbound" - } - }, - { - "name": "http-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 102, - "direction": "Inbound" - } - }, - { - "name": "https-nginx-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 103, - "direction": "Inbound" - } - }, - { - "name": "membership-rule", - "properties": { - "description": "Allow HTTP", - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "10001", - "sourceAddressPrefix": "Internet", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 105, - "direction": "Inbound" - } - } - ] - } - }, - { - "type": "Microsoft.Network/virtualNetworks", - "name": "[variables('virtualNetworkName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" - ], - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[variables('addressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[variables('subnetPrimaryName')]", - "properties": { - "addressPrefix": "[variables('subnetPrimaryPrefix')]", - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicPrimaryName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - ], - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" - } - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('pipPrimaryName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard" - }, - "apiVersion": "2018-07-01", - "properties": { - "publicIPAllocationMethod": "Static", - "dnsSettings": { - "domainNameLabel": "[variables('namingInfix')]" - } - } - }, - { - "type": "Microsoft.Network/loadBalancers", - "name": "[variables('lbName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-07-01", - "sku": { - "name": "Standard" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" - ], - "tags":{ - "displayName": "Load Balancer" - }, - "properties": { - "frontendIPConfigurations": [ - { - "name": "[variables('feIpConfigPrimaryName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" - } - } - } - ], - "backendAddressPools": [ - { - "name": "[variables('bepoolPrimaryName')]" - } - ], - "inboundNatPools": [ - { - "name": "[variables('natPoolPrimaryName')]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "protocol": "tcp", - "frontendPortRangeStart": 10022, - "frontendPortRangeEnd": 11022, - "backendPort": 22 - } - } - ], - "loadBalancingRules": [ - { - "name": "HTTPRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" - } - } - }, - { - "name": "HTTPSRulePrimary", - "properties": { - "loadDistribution": "Default", - "frontendIPConfiguration": { - "id": "[variables('feIpConfigPrimaryId')]" - }, - "backendAddressPool": { - "id": "[variables('bepoolPrimaryID')]" - }, - "protocol": "Tcp", - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 5, - "probe": { - "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" - } - } - } - ], - "probes": [ - { - "name": "[variables('httpProbePrimaryName')]", - "properties": { - "protocol": "Http", - "requestPath": "/artifactory/api/system/ping", - "port": 80, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - }, - { - "name": "[variables('httpsProbePrimaryName')]", - "properties": { - "protocol": "Tcp", - "port": 443, - "intervalInSeconds": 60, - "numberOfProbes": 5 - } - } - ] - } - }, - { - "apiVersion": "2018-07-01", - "type": "Microsoft.Storage/storageAccounts", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "[parameters('storageAccountType')]" - }, - "tags":{ - "displayName": "Artifactory Storage Account" - }, - "kind": "Storage", - "properties": {} - }, - { - "type": "Microsoft.Resources/deployments", - "name": "deploySQLDB", - "apiVersion": "2018-07-01", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "[variables('dbTemplateLocation')]", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "db_user": { - "value": "[parameters('DB_Admin_User')]" - }, - "db_password": { - "value": "[parameters('DB_Admin_Password')]" - }, - "db_server": { - "value": "[variables('azureSqlServerName')]" - }, - "db_name": { - "value": "[parameters('DB_Name')]" - }, - "db_edition": { - "value": "[variables('DB_Edition')]" - }, - "db_location": { - "value": "[variables('DB_Location')]" - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachineScaleSets", - "name": "[variables('scaleSetPrimaryName')]", - "location": "[parameters('location')]", - "apiVersion": "2018-10-01", - "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" - ], - "plan": { - "name": "artifactory-jcr-private", - "publisher": "jfrog", - "product": "jfrogcontainerregistry-vm" - }, - "sku": { - "name": "[parameters('vmSku')]", - "tier": "Standard", - "capacity": "1" - }, - "properties": { - "singlePlacementGroup": true, - "overprovision": "false", - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "storageProfile": { - "osDisk": { - "caching": "ReadWrite", - "diskSizeGB": "250", - "createOption": "FromImage" - }, - "imageReference": "[variables('imageReference')]" - }, - "osProfile": { - "computerNamePrefix": "[variables('namingInfix')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','true','\n'))]" - }, - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "[variables('nicPrimaryName')]", - "properties": { - "primary": true, - "ipConfigurations": [ - { - "name": "[concat(variables('ipConfigName'),'1')]", - "properties": { - "subnet": { - "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" - }, - "loadBalancerBackendAddressPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" - } - ] - } - } - ] - } - } - ] - }, - "extensionProfile": { - "extensions": [ - { - "name": "extension1", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.0", - "autoUpgradeMinorVersion": false, - "settings": { - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]" - ] - }, - "protectedSettings": { - "commandToExecute": "sh install_artifactory7.sh" - } - } - } - ] - } - } - } - } - ], - "outputs": { - "fqdn": { - "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipPrimaryName')),'2018-07-01').dnsSettings.fqdn]", - "type": "string" - } - } -} \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/azuredeploy.parameters.json b/JFrogContainerRegistry/AzureResourceManager/azuredeploy.parameters.json deleted file mode 100644 index 5c200f7..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/azuredeploy.parameters.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "clusterName": { - "value": "GEN-UNIQUE" - }, - "adminUsername": { - "value": "GEN-UNIQUE" - }, - "adminPassword": { - "value": "GEN-PASSWORD" - }, - "DB_Admin_User": { - "value": "GEN-UNIQUE" - }, - "DB_Admin_Password": { - "value": "GEN-PASSWORD" - }, - "DB_Name": { - "value": "GEN-UNIQUE" - }, - "masterKey": { - "value": "35767fa0164bac66b6cccb8880babefb" - } - } -} \ No newline at end of file diff --git a/JFrogContainerRegistry/AzureResourceManager/images/HA_Diagram.png b/JFrogContainerRegistry/AzureResourceManager/images/HA_Diagram.png deleted file mode 100644 index 98cd3ee932e26b5b9c84683003a5bb354697a5bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107764 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 S=x1>m@rV`RcFh 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 BfT;ig diff --git a/JFrogContainerRegistry/AzureResourceManager/images/add_licenses.png b/JFrogContainerRegistry/AzureResourceManager/images/add_licenses.png deleted file mode 100644 index 3a06f9dd43633fcad4353fde4947cf8895407c44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295712 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Çs+@ zJW*INziX?;(U*yJa9p-XN`e>pDZRg@tbs+rk%LyYB> z74xkEy29rH7(7`0?c2A*x+rGp*}`du$+!M8bduv%D;#XXanWt-fl+BFxP?sUzlAuH|1{VZ4(e40slvCWeVI|IHnJ=9EOi!$<5Q&0q4j7*!{? zlT*2Kv!~5YnU9#lX>k~Qz{H(%5gYN^cxr@gr}=AW)J9^g22KH(oG%KkT;yYzCImF4 z9{(upcg>xF=#q!url>E|p~%%B5(*O7fBv-`8-3fp?jiXsMfMpTXCSkb{{2eT$fb1| zcu-Kfkjvi(Y4GwvikjbaumZ|@#H~GJK-rPV)Zrr0?TU7GYqaSTljz>4H!52E{QfT$ zatB5zxlI&aYUs?FJ3Mb5(=Nu66E}RgA0?qdlXs>_}h2_<&S4{O# z>^T&(rL$S}pSC6NCXp5$GyJNG;+^040?OH)JKP2v07gxSSs{i|4W?r_!# zamaTGYC$Prx0mVHz?D>F5DF5EsU#W#Qlw-sJwkhCE$S%@DIU>l!z4v{rlRojXxJml z3vr$3g&YRvu!p~AbWE#=AKd=4G1&cUxZFDP`6hUNoa&t!GcAkNzD-AohWnpHOgr@1 zw^Ply)?DwkdF zg4LnODvJ|(p_SNphEXDLPn!yzotC=aJ#HCRd>m*207=R-^Yn7=9%?vFf^U; z*VfjB#u|&i;43*RCrw^#rrA!sovL%xf5_7)N-q4+mz&|rwF4m9FXEyVGay$9V6&1$B-?T$LI2k@4 z)hC^L?24C(S-3`lhIoEzN99AuPUR5^x|b=h5TJ`3km#ZcntpUH3HD`<5NQE zoOfA?ED7muYrly=cO~~8w@nyw3Y%#sxP9-E4+6*v8a^NAskG30FH@Poa6LcSu zsjhac^kps|to1PCZU(ts63bRMEL{H?-g2M(DE*|!?)^AHkiS9_b+k3LywsIwsQUh# zPMv?y9iQYj2PY>dV?_>_1n~S#c~&pR6bZNcK_tK*0&ogTcOke^$%)3`Tb- zJAyBq55kbV88jP*k7DC9DP-vOAGM*LBvuC;jlHkF!ER=mX#%-!B!8{Lo{*xOH5Nc{ zZnzjh6xs4$z#*j5!3^vJg*=XRQN4mB=HR0Eqmg}fv^8w@tc8Xt4Xn5P^a0HFZ49=> z0l_asFrUh@dweTkC+%|B{7F6!Yl)jr_&c~KUg<}ai#j zYgf0Kt7GGF%wsVw(N%SIFQkWbzf&hdw&=$01KR$en#7lsXywNzZZ54AdpCcT(`zH(!2 z)T5vJtmN3NWW)SBRynx=_DwdTVt6@HK(*oJgh!qtwrMM5_Tt?d=MYb!<%e=X)lNTP z>!9p}hXh>p>E5E>k7BZ@b?#3-%WLju(%_G|^pbjDlZvpfN~OMD>U=(XLm!qF%)Z&S z1G>*U*90<~*R~UIch5*G#ix*Lx3fU*a90yXVTcO5mhe7g!^d> z{xi!?|GOU}2Ye0wdzRh!(tC*g#D{1NjDMFoBFv=ohhDZ}&)N2Mg7x9FN_Thffb`k| zM_IGPN}K)U=FSOx+}X+~N%Cb|muzcZfQ zJ;YWApI27yyOTD`=I2`+bY9~`=&Rs_75!4xh1#B<>^UazO$HJ4*R6$wbasyJ4bV592Zv3>*|iV~^9=MqK^fwin*poA zF(IevFB?A<>_-Bj3->LW4?p9?C~&+SA)LM2%B#TkQg}a|7*Y2uW=~l|p*)N?m0&$3=3u@033(i7Xb=Ey&|HOE@on1A|)e zaX(|@-&V`$n3%MNTJ*U1^{$$p^1D5YZ;E{>Z~dT8%sc!rYGg@>@QBQwv?qMs8)gj= zPM7-rO`klO=DGYUPBdHeMq(NJSw`3|g7~VvRVdWQv!Ka2%yz&D&t?QA9eJ!)67i6v z>qv;2k#4Jot2PK__WS^8a*yaSo6ej-N#h6Krz*>3+ad+*be}YpJzD6D0-DirSzql2 zg7%b>IA)r6yBjSwr9rE#{rq5=38ue|?+m~Odez&C=#vvE{yL)=)7pz`E_7D~Ua)8I zj~fkt-FK_7owMu1tbEfwu%7ZS405X^+7IoV?OXS=>u*r+n;(sre5LN(p9ibfxOBu~ z34HOdG+hxaFaAgH9RkF7_pe3&yn!PifKkm4xpk;m+VpWyODS`Jcl8SkU;5wH zrZS$Mm6cuQhQfg{dj`u_-aME2J0fg%yeYF>dVygUEkl5&A(&zDNi~_mXdt zgqN1A_qp;3VCbo+_I{Y);7GLe5!lO$hT)P@FcA7aoShGK{6g<8>#BGrK?v^*<)Z>{ zIKelx;9C#521QX@@ll)poRZ_rfMT~ckf@#875pey#3j%AtviFI$xB8uBKUh-b2a(o z3y^h4JJ13O>i*AbWVmk}8W@+h6fGWN4(^Bmqp-QLUl&NJW0-jaqTJ=u32T!yU-)zx zI9QJbs4@F&mV40bTGkdih!V;R2il&AuWwD0&)l34`)3f8dy90DV{=K_;}vn9tWqKF zjg{C}t~Y0~4$1X9GVmkWAvQaaol1S|g1I>s!^*cH2JAwQgj)oO-880*gIfddB%{T~cAFZkyw*$jKAr(<$tbjeUck-z(s83fa_5rvf-+oitmMuf^I2;djG+Iw&! zcWEugLhRs$ndzcvflsD>xb9=DwAolb zn|*EPVQa)I?Th=(4<^6(OP;6R?_U1p6aUd?#agwNcP$7Ztu?AYl%x|BVjXxUM6E@~ zt<)Eo1EpIx-Q*N4n$$1Eh2(er?LzC#a;|&#EC*x}!8B8ot8tQ&VVc8SjSNnIu z!=|U30|K0%uWrqUD*ud&h+d6ioDT&s;nU~}bs}9z`(8^*w8Up=@}YQULguVTq^rdK z{DVe@jo$8=Um`6Z`p3DmLdh6J999B63WC{O36JICLA<<#6+uefbXDJ{KCQm zzX6OponbCY`PRLx>>&t2TopP{5MWOl6f+wL;dk-f2;3-MK1K(Il(*78S#3A2;5xWg z#&veyx`A&QgQjblc-lAPmh}z0(Tr7-+6^SDiu}4&q#Je3R6IOQ%m~sB+uW|-c?zO3 zXKZ{a@Q_tnpA?~6TzEERwt4=c!l&1l0nSwxhE=d_%W??qbS+m{;QCqHqo zLNys678W88hmd{2gorMqJv#g}6DJ$25vReb zBBy+Kb5C@9zqmu3o8D0-cYrDCTXRUcoMfkEp7dD{Ro@wa`ku=1SF5gMPgu8-^=3D{ zhfpwYwR_?6d#tE2e4!_6@PBymeMaKhtQp&?)*%C_=E^ z`b})$ogSQ>4y!H`z_alUyjEu4>;CzK?XB_=peGXg{f{b5#T8p7?q__NThQ=tNk!}y z+&y2!2a5bBNUE@!=1;S5l5EW&!N1>}H?>fJ!4Cq+a(DfaczvJ+WcftV8}+8@*DvtJKuz|ss~Co1NvuU>U6iyG!03Stw`X{7q}H0F1=XMzSqnZrajoHdIw6`aiE;))^Mne>WF!KK{2*<5m{ygR%Qv zq72*u>?Ya_L`{J;z*gWBKn1I2Bx1nFeh|#(HLEDvw!2-rIK#(N$E}%ef}N=gH6l2c zZXpbQGwYf?PHcq2)t*$oRKK$$V6pzYh4@2Xe2UpsTQ)LQU<`T%Cx@QxO7?T`t&GPAORWn1bj#C0L@ z#l)Zc*KA&OVTV%QvQ{#X#F3u72s?>sdzZNtfA4jeS4eBGXtIS z>PN(tnF*jZ;1=-|vP;ptx~Fl42J`O@8DQWEU}o>NA?=zTZ0ka7?&2C@zC<#NgHhT3 znarnJF^L}LPOPs3oSdBMc_j`Z_dk$R@?OM zVGph?R}9HfD!sa-^(n{)T*rz57({4(!HS8U*%Y6atdOvH@M46#IrPSFkvvVONt&;F zB+2JNN4RG{eoC~LiHe-QBi)tD_QDl!hQtUX$ILf8rmU;PjS0&FviSCH6CL?Z7+~7G zV16c3rwXqn_B?N(I_KuDM&ZQl9eVzrh}}9&8gp<%&BBu`%rcI3yrkbkZ*87EJ(nfHDvF)HVywl4x6P4=OQWW{ zV1y_lq$=d6&-N3u$j?um)wmq@^in36x|;Fhvn&IB?+75mjw7+{595y8-oxDKBHW&_ z_?3@_yJvL(4Kh#djE7OZiOASX_;sJAhwpIFo_*YWI+}M=18XL9vYqCr(ot23{f(nX z#ioshrqE?-rJ%|wp}JS*TcPfZTe1^QrABF&(lriEX-w7m5|{LzNbMthats=Kwv!6> z*wP%NQfDWT0*S9|K9m_{9lPXspkb0}d+ujH+D;$nf*EzJ0I#zDxmyg`;oR%oWLK`g ziuxzI`x1dr@=$alW-J_!iU zY_X-me=KQ^@e*iZ zgKpls)jj3hT*8jOfYd54tE$p%I$!4V>9wB=+na^C6*`Q6mmy`6_`=DYgtLGv-GXi* z^B+KHmS?y^HWN72aD|VaW{C{mxeXR3%z#06et^^g$eK&U8f|Gn-Va1&ehwS87r9AI zP1s!rn4dQo&?VO{|JW$qU=cxBv*oc)zZur}tm188YRY?=X(4gG+j_MHC+kwIH5HcW z75Dll9fn>6VqV`c%9VC;Ilem4zhLDHk*t3KkOpB%rqPC+(Y|rkASx%J3k35;+$Cx; zMwj-f|B_djsI=MG{DLZ}ogM06kn(-uCO>1@9u;ro-1w(3#J+t6q)h$6w3GBkMcv?G zP|p(4`mC9|T@>z3Uzf)S1nmP_T;$M2uomg;U-R&5AvU}&zqHmDf&}9aQn{6m3ywSN~?>*B72vt}u|4A$J zxuxOoKp||nP;&!y!&C_g&mKkuyJYgeQk~l9Go_dWA8ml5-k7AB(VF%0?UGpeTS#59 za=D*?%qI*tE%Q<;MOHcU<0A$bz#V9C=b7 z+zgCOo*5e#XGZyj#nlE}_=^Jl9*Bwqfs_G!5UHc21`MNM$D(mW`Am&tCe|qEn3qN8wXNyR*(}^N2O4wy3YU=)o*>q1*{Kwm#FouJsvv!hGl5K zu~%;JF0Z8()&hY%?GiJ z>-~LoO@SB@z7-_0)(=Km77M=UFhgmo?Ht%^nvzP);De+jC9U>Xcwjr1mfRz2uAjkX z`WT3p+}GAnGU6gThkpP_c--ZcyAQGyYPK57xw!_$3QnWK!COzc6fkm}T;{9LO!I5+ zBX~l}NTxOa0e$_zFs(F~#_=-Jbk;+=Cg)2^an;S!{XYc>DOpKjwBt4ahQVe1ckdnu zgZ~4=$g4sWztJZxO&2@e2;ndIN?bu_k&rp)^mhxlTg%FTBhCvK65RUlqZ)P(#0I6~ zJ5^=4KX9Rn1JvH6|C%D?{WMNIp70gc%A>6*{hqINfpzX1dVxvatt7&$nKMV3pJ}D1 zrvsy|pHf@mQqWS;<#QzwLWSdS3D?J(vDHzG;(BV8buFZOq_1T2-ab1l;PdN3^qD9t z)(wVcDtIyD4H5|-L3AjEKMo2_PuD{hf|}NlAU{On1iUMzb62u}46%uhwEU(6D>j2( zm#^t0Z~K#p@xdM0^vvSy9BGg6W^x(x9C+$$wvhgy|B{ifv|G z$_6P&@D9l58G1Dhl7+<*I42!que{+c(%ap_<*lnuUlJssyIxs%ZLY@^YvFG}Mw z>ZR)KIRH0btB@dw>8=Q0K!zEGbzOolHq0)(r}`e-`_+XLl{27j1o5m~U%%=cCE9+A z?XHu$4`swp>a$13134RI&8Gc0oe>~X^ME^vQ0od|hsCx9X`a*cv?3G1Ox)fzl{hH~ zI|B-T+1&I+q8&|*45XbwAw;AKXHiI=J4%2u-=>PW;&Gd;rsGflUc4v)^gGcT2E@Xj zSZ6;q$4a4XLp$}XAFwJvaecz*w$eK&tmAU6{_9uOT9V>N&a4LbnbT30UnXhR_XKY= zGW;mR=_>!Hkllr{mwLxRu6v#_VS&|jLgPTRG9A$Zxv@Ncgl`k-WQvBoZhU>Dn ztRa+NAH_YB4O%wkgmtg~*4t^!d2_Gfj1CG%ZEkH>_6rwTk~DHrM#fdpL8}>X>U%nR_cT^lH;yv@>lRZcU4SSk~Js>dZ=J{mA?pEvFpJ zIg(N7dfiUb*=D(vJssM29q)8HHNv*g47;DYw|@~E|)NDwiM-~SWAktX=dyK^JJ(ELw%foq`TE}AtyY0@^$W3_jZiS z@0i9IPoS8a=C$)vM`X;4&z;8jjfY$ExTYl9iDF%5e`9??9+Ba~Xh}!4g}l-v7g@7Q z@p40GXrPFhJZ1hx4!KpOyv2Hhwb|^O6bJp&d@rV_^0jv2y3LS_E{pe+$=s#Pa z4G%ZClYhZe@PIeKP7du-N-WB}BBGEk!Z$CGWl1ykV)OU_@1RS?S%XzNEA#s~*p%CZ zG9!-}QbjbEESTW^b#NDMGQO4Nz9+?r_FMUFO-BQAWD_XQ7#EfB4X^bBza1a5;j!f< znB9VH{~2TTra@J(HXop(e%^XJ)u6dQ zdN}uXQ>+py4_gP5ziH-VM!>o;a={XndWNIGR zg+C0>e4`SC0^OjaGp_b~4w*FimjvA$PA^mMiLm3cH-Abaad#za`z&j^&AORvmTD zXj9JqObA!EnR_c(;gZu9?R&H=3?85GGkV8!H8XTVG(YW*Sts#T(yiN~wIfFgQ%X-z z??P3PqWx$DDuf6wFZL-LMJ_X0&e5bH6*{6Zgg&kqzRrI#yzl0OI~mZ0Savtf`?`_x=x1v^Tks!#g5umBzRethxdoIkxv-{ zre1=#B?md))9_mxhV-!8SPqOU^FRD1WN0@Vy842~k=A8caB}WZaQJw)N5vU8ES^O0CUj#fXr(?LE9hrohQ4O)dn3FEN~fNyfhBcIi7& z4;N!K?{9;Nno@Sn7vmjLqnly{w0xyJ(1*cazU|@S!!e>rx!p!~@5pDyO;$P0XZ6jM zi$~P@#)DN6aT1|fRHCO<(;Ks&ujWUw_zX+Ij?~q7$+F6Jf7%y~%@zxX$QU+F9}LX# z7@ua%Z;tlF*?Wc@^Z70i_e~Pbp?pZTmie%Ye4Eb1>XBTf&UI4A7S{_Ng5Hi(+I<1C zGYFHCWW8>;KfS97vYUCRJz^`hRNYQaf0UyoJrra-*C{T^+>=hOG}}LG2a2stIVASS zxl1XlsOCzvMHbET^%q;tI*5PbCAWg#;v$cX+BmC1o>@8}OLnKwdh%&1Op?6roArksrrW()2HQ*jP9=3Nvc)ub^=XQS5 z58iBz4&?;9ttBy2LU@UW=@eDq*ex9Y1J7`m7Jk&Vs za@_u?HvQ&ek*3+!nGIc*={_frZ#<%z5rydAXg8U0`E;>!f!)ar2Vctn2InNzFLT2s zmORV&#j6hi>_iz`@!IAHyI?)ncs!d~N0MSA*|{KpO+&5oxBM`tp?*TcPgnT@gkXQ| zoWIX@=i-A@2CZdE)GC zNR5w&PPGn=6f|PorE+q9(Nt#K}Cm-!h|B*C~0)3#r*do&Bh(IW1I4s zC!5A&?J^69>{y{5ukO8~y(cnEOgkhL572Sej zKC9XMhMPuaf-(4i94xnuzj2m!d3}k&3NiWJT!F&FQQLBM$O|5WTb_(9)nGDu(CZI8r%6aFRgJAHsMZCBE22?HPWNz8^a z8}(VZ@SR-<1sPLaD2*J7!S(4)@0pEM9=nE{Eif=L)zJT9;hu9cR6BQCpw*X!+))+S z3dc``!Bte{gFiP`NS};R7i`wDj=7hfvmP2bG^^jMmF`Ox$CBXazCZh2h&>uCApvXb0oB_$86k$V#4HdPd9*xe;Sf2f>DgyJ0;hXt2BvS1O!1w_vM|OY<%9* z5u!a4p3em#V_*t79?y)n)8^2g0AYSp30BPdo?(-AWfFG+I{y&BtCFiiyedHW>gG>Vx=gGvFT_W0@=9?2h{00`o|@ z!E7eguknnl8iI-sv#{$@$dT`kRr;-F)UHv;Lw-oC=kMyS!m%KYMMxhtzZTlgdtvhj z>icoP+adh?d4>NlhvNEU6^LTz>1ls}(;1a1G>2>NEh#@!1-aidLsyErMKYt18a^h{ zj~6UN-m^C|kPTCNNMh=&@b!+3%C)j-7r0r#ke6Wh8j{_y`3M;vtN%&LguZvZe!5kb zp<~h67xL=K?)(eS9-i8p4K)Gh4mZa*w?UNlZV($pQ% zhJWhr3pV2A=G(5XviQ%{Dk$w*-Jm#FB&%8y!B~2h4}|A^*k<9&269uF$A_{7v3AWY6kx}@d{^a|D=47hOqkKy zra!sAS2>rJ_y1F({&2Chz|ig=82(AKAGw8toKS)Amd$dCq;{07 ztEoUpzXjEBh@5fCc&sQr%o7*jV7*OVFwx!jJShX?`vWwem6{5d^{#*tf??=+v@KQd z^8S36iJ89-qXL0z&Je<(Df4%@g_URSt0r=M%0GlyzM~f^3&3n-HhspDXGJQMI2y8; zx2b6D>3?+{rsMveCg1ZJMj`Tg3 zci2An70&*!TYH&%DjN&beVqf4eX5sNp^aNLQ|DcH2xY=^+f2?sFubtuiu7TTBim>B z7CD(8lzEQl0-C7@D{+aKZoO3lWo^>QH-l;uQO4-u-qobSfhumZkDN$#YC2sho*-%> zF6kIJfBwUNIA8VhZrn+Dkmp^Vc_AgA7fPi;snzVcGmF*7Lr8?lDzGoP=#K; zSLPh_Kd-qk?h@Vk%{PM94#&*qHmmnk&hmVIzL&bcv2Y~-6BT-7RLssT%>&&Y(K~a{ zKYH0=xyg7yK()54HStfx@@i+Zj zgx=?txwa3Z@35tzI;QTCn?uiD6zCY5R@4~%&p7$I$ey2xE$yL2Q1Xf|926qCv$>Q9 z#2AsYS2=!k;pw4vBATw@onNY&i}5AXJ-ZS(udfO4X0I&#Zp{a(bODJko0KMjQU!v`ArS5One!Q$o%cFd!eU)ZE zTscWh3}#^5%@!=ez)IlJq44`S%)ZeaI>oP2b4X6#_!}0akyVYQVdZH5i0E;Z4?X^; zG_6y{%^RCwCw~xJUZN);kofNiw{9Bb2A%%eq?=+jbUPgpdixm3As{R-gsAp$6s>;V z0^<=tp;j)tI4SDr$hQPZs&5ftYTIeQY=q%)mTJDMF~T=EMZ|-Chdzb)1C5R|z+uy2 zR}vmv{Y+((XiAk^b=7Gy%cY%e#bn1@e|T(!IS9p!8Dvfe?ia!uWONJFoyywsEr{4o zz3DV5|MR+q_m=1H8H7FR->fC5jW1bC4!UD9<&to&clI^C$kM(3xBj3$v7J{?Qi=*! zVDvL8_{iPU98J9z-u2z$x)>pehhgXueb!ML5O@6tXbR9(!sjsCo*kpR>q>bkF0JY3 z^-FbZgu7xVFT=A3bnl-#JXn&-f_mkW=9xg6|k0aFav|SV0T5 zD!z~_rok~U-mdzt6{K1-@yVhX`1Eu7KL!a*nM=!Tzo>P}POc1V>kPhSN5)j8C#p76 z7PyYs|k8mHWLW^c{{^m5nAg7;EZYhP$; z`y1|07nK}Mlx_lWr#DqN+1p9qp)o5KvuPtO0KyBakkSV>S?mRp1np?s*2~C3zh@=m z=*T{!*U+yn(|7e0kNrgbs3oRKrK5m~Pq&`{p zU{3-SfQ`NMee44E zTLxaQTh%0F-DpYy=qHUw(fEysBJGa#6ORJ}T=^%s@*lP+=e@diL>O|flQP(bMxi=_ zzdB8mI6kRa6%XhX3E&8r_Ny^lW&V3vFL4>QpHL6b8QPQo+a8{0PWN_%OyMenlCf*Y&CA-xpuZ@0QOEulSa}oVcK-SGXhN9J zB}uq>-_z${HD2%=CT8_hm<#jyJbva%0Vr{ZLB&k#yB4_d>B<7idFP$&-&*21>x!nT z?e(Yh{EzGB1gWy1)DJ0&DBebLve~8&CV3dA)EHh8z>0F;3(4;p(G@O*?RG^0o_M5TOhvBc0an+n0kI_H%DE}Z z#V7b~rC|KX5O@jo3F&piZjDWartpW0T+@2RMDXQoS?}ABo^l9TEQ&xjjxz);l z6fz?-C<*Icds5I;GEMG{^&H|M^>~+I@8>@%GW}Y?=YoXC z<7n7MsU)-8rsV6MB5n^$OTAwbJ;?gPS?c4sppE5LfbbqqiYLjaj&3b!$Ka_n8+}iB z(9TMcHPfUP5QjW}-*9rKI*S?2R!a7n$$9R-zf@Q?r?I3%UBpc;Ewe?QjW?wU{ike_{--~# zOM}t!sKR$)X^gpe!wn%$vqJrUR+A2I&J-=)J~@nRtnm@%OLQavkDI|_6` zw5QvbHPWt!bO?p_+bnKj{WE4kum?{Hsb<=Y#~=j!q*F^z~_rP)eKGBy_Kjw#Pk zeypb*bPs7EQR4R-i4f=@;gC8K=LkM--0?fIpcHnt&6)95rCXuS$_{BE@r$7`2!~q4 z7XQA+`vAd=x@Q27!-#!TSDAbMLkd;ZqDlaFy0`$?o9U1XZ`E9oi}u{WB=V_>-%D-G z+3>yR9s%^wb~*Uge(_u`KI{~R%&8o@gJE&b7TIY)of|md+A!TZJ1CSkc__Jdjf{Sf znYE(+rgqM224Ul-#P>WC!Y)x&%mD+;d!kULNC_t@p$^CSWkD?dLE@j+ zmeBs{v>h(#({SkCZyJ)rHveD2`FkNzo^VlQ(gTsooB^r3&IXInr)YI)c&6>SeRKY4 zTDyP5-QL!8UhqsyVm8c!)9>;n5g-(GmIPST8BWgt_L*Sa*F z@Vg(Cn+lM<9IEON-}O{ZsoC2>Zg+#daxncL!5J?FXFN!NlBYR*xBe=ba8d^7+_oEH z{PVIlj*9m?P`&;)1H^BkmL~WR8~f7r75g5gK#Mss_fh0}MJ#sN3|o-B(%EE^A z3pLPB9RcT| zz>L~l#>y^0G~iqy_cSW{D|K^M-~GUNNO(kIvX{F+8PQ6+nen6s<;NHLK;vR5Ienu6 zNW%IqIT&nPpSL{nqg?2|dl$F!%sT?OatFIoOx2Kg`Hjmy_OZ{=X1OpP20C1aM(q;0 zPI8rn_YJ3DUZJ8uH;wb|z~+`ICL+R|N_a#IOXVFjPT!#|cd+O&u|&E@U^5IM>HKb2&# zn;AB>Ioj``cs6rkftuve*c~tBmA}+ipEz6mw@}p-0jp;C^DiOk_n!af@n@gc z%#jfN*w&ROd&V=GF(O=b1k=&ZO*3B9FVy?GS?0t#_o5SK(!}#PHxhmNr_BEqrw#|Z zDdP^MW18(y?!`HBtCiHrduSIVCYO`NyToj0D__3+kkhBP^}agGmYxC0jybbaCfHCM z`kblpP1iKTu`}~o(Ir>*V%Dt$_?u=r`=c_Cesl%gj|%OGVUvTDAk2>U6mr}a|NB0m zF9H1gGUCsBPp&yA(Bruk%5N&5Br#s+Z(RfSmv+p$mX#m_k)_!m7} zA!3TT%bDy}%=-$Hq5p3`b$RYR)@4O0{+|0UBv;{;iSx#$ergcjSff9w3G)nkc;LXF zz%HpLS|uKytJP26GM|{doc8lTT+S@A3v!;Vh*oASB(PV@p^xAt!Nf8hY!G!^POwP$}2Q)Godt^(ek)NB0i@FZSL$D9SF|8h=$(P?4yJAV?OGoTUMUCQ1+k84)ChCWj^pD$+#BsR1P; zIcE?-a)W@RCdVeHCdcozIQN^GduP7+?^nO7TSdJu4Q2E6^PIEK-fOS5_9Zqtp{nCV zHIF*b%I*lHFCN#IG53<uh^4MPq*2H1&jm^R>d zDqZi;T*LL{7@izpQt4(hn`{_z+#*)voNrn6rYTmu|0$1Q3Ov`#W&_DEqH1@|{o&9H zh5@WN=-j5=jl}EBoF4G~U9W$xHk50x6OZ>mUcMLdp@_6c1iKzdbE=JWkGhu$kzJq( zXwy_as)AIjU&`DOKgEjYyq3QM{FVh&+U6jEM|6q3Q8r?{zGl5JD0Wxq zIju&>o+PedkDT=mX5XliQr(xhi19og@GPn89(7sDxwzknrCal8ccU9v!L4Uru;v^s zX?3Gcg>$mE7^>+k8+}OxeBah7w0JD^H(YqUyjD%;|50?m!|L_yk=Tp20<@*>AINw| z20+G#S-i9AXY1PiPj7Wm<=@8d`L%zD-)ur;gg1qwO(I7t9iD)t%p^f69p@K=uxx2EmfdGnYC}sZn`mV0_uq??>;8vbWk<)Z5!(8W}vJC06tiZ7UsK?RR_^P zW07^W^UHR0S&qs&Urb);c3gi`&tmw)M_d(~ZESW|qqrVLGe{icYVgK~ow3o8QF}ac zD{NxQJ;oFyKzXKH=iwOn6B0(D9`Devkp>o;T%4rF#cF-Nf+!c$SI{EjgC|-KxB&oM2vv3;jE> z-f#3YlddD)Col?Oa6s<6%}6Hp(-Zpxn;=E}I2)3|#Nb-5rN_C5L)x9AUuFnN6UC>9{rL3K2IMeNYs$$#d-KDUPJaqc0UXOSN4sm^l{GW` zSYW1-BkO462y~a>yX|`iBbe;MP3!X*Vq6>#tRwok90jYw;RQF27Se?T$AAUBsG7}q z6wiZMb)7aB{=72?YMA~TKP6F*%^08c#3K;{q_{`A-84*g;#Si!-89GN0C6R`(XG;# zX0y`2cg7>UuQF#fan=Qb&RLtRgJ&STe+9eemiWMiJjm=bQl&ok6RaoKJqf7lf&mXb zW0`wy>bVnc>l2S%-;i_f`B1@R!++w0Hz&vAr=!}Q$J+v$;fY#{++8Sp&zKY&Jev0p zlJ*%9)*~Iz+mDD5S39$Vk4WN|-q9YtE*kLK6t%r4Sgzp#Ouj~yONiItD|5?*SmXA6$SYjga^WL_NuQNv*GCL zFPyW^^&SsRetu5t`xsti%0$3Gcj)kaaXH1T&p1Iqowa^w<&?T^fdNas3%1tl^lic% z_-c4ROIit0np)wq#&Dn~g$s;AH}O#0f_B0yrE0aZJt1q~o!xQ|=xj?cG03XTxlhh! zCMNk9Mx_6yb!4Ihjt@X6zP7PpdzhxbEIcl`e1Avvrnva*+z(wDV0_U0&a9NX4T*^j zxXcf?j+lPk^A4(21}nkb&tBVX=d`+6AH#D~eh}B6Jh~_u{flXSP`iGVWk#B`o2>QOMJjQ9hO>M&M0#{TM_drJE=vy zTTv#M#*#tRrpUh-NJrR`i8KA?f8evpNzjEpP{}T5Z3v`+G1@%8^(BU?zQr|4+ZGX# z9sX#nH}5`!K1JS4U^*C) zp&9ai)8>s>@ZOJyoBcYz6CI9@Yh#wb*?5e$jn<2|Ha;9vQUV1;RO!Xz z?Z2a3Y)H?evYUH-=;q3Ky1=-;;)SK$s!r)#U(UoG%8K}wK;XfZZ}?fq`W;CK=?Nn& z+y}oCi|HyO<=yrjLA1#53GPVt>*(rQC70AE1GYpP#WUQ_9BvKWzyI=VXOh?;^23N-2wb@dx-Ff(n%N;w1G6E^lPE$VTfQs0TUcW1-X$OxZ41IazUFi!c3=Qh`io_3j zjjZG~;HI&xx8+EYBvG^;dwO==QWQfbZBUamQ96pByQG8xrBBF@0LT3xt7v+5Cg$O3 zBa4_Gvl23Ta9m*6SJ2Dd%VfXE2vum?M`?`IJ0xn8*6%}8iQP?TV>NcWv(W{%xtq?a9sgpOCC2n!1SxVzj7ZBS zVD52@VD%*7jyj61Vj*#8d@qjISjmg{W{*_?s<_r`O>=34HA|V1)-*HJPL`aF;uj%s^ z-o^N9ds^orh!@g-ZWiy@G<3PTRgcsXaNqPonsW!~QY#Zn3j@k|{2M~cH3r&!-`U&a zupZEu2`%Oj%=sN73aT-h#SLAaC)k@eF!%6FsM!{tAgViTLYEkGoywV0>b9RJ*y+y^ zEr28WN0%B}=vZjL0&0Z0CH3Ov0Z|Z>_Oy-VI;f6%?sC|%hi=`xm8<7*G)=1|=KDiC zy+_;{^`n9u!vc9E<${eH*ZveyU9FD4PXb5IyWqqx^)5$5i3h*Zm*EV%*TF=H70*6C znowiaXRE?0Pg>FyKgizt;>m2rzbzw@N|dDd{1pYfDs}TI$Gi6y6be_4N9nWN*y)7A z>ek!<6V-`4C``Mm>f?FSHEK4~H7Im<9P(n(Lu=JRM|J<|BN^JBzl$es!7ZKe3o1i8 zb)=QLg_a&m6M{T6t995;5wdp|!d}Qprw$pUXYJTx&OfDB z4d}`Ko6>9hPw5pxG9}3($csbVZqnLf@y=mE4VGU+@X`(OUHH?zip)0D{Y5;RFmYHu zy&t_cGt-Q?Lrs_hgJ%<&U;x+dNN1{`*u(%l2V%43#uZz<4KTS)bLeLu=QC1?wWU|P zmA@dy1V-5+37;%XWMmcc-(6gJ3$3BEU2n5=O6IP0LmO{)F4>1LnUcx&LJ!k)LN;4G zJE9mr^TfY5kuPR(uJ>&uG=$OExj%|yoO;ENXT13g_8Y=Wj_y!H94MNrfJ zRYSiZk3xujO^rwH2C?j@p-Cl}9Tw5|96H6^>Mv4|SNBBEVrM?=hoUKZ2T$iui8GHI z1s2|rI06g%CC`^!ugnrgxd~K6rl9)nk$E7BS4u9kkYw;yD%~exm|r)U zJ6LoldJ;tgQ6N=Dve|n0Y*C1J_WF=~wgL?twhV^6g03p_>vNb%{G?^%MLQS@> z9wiaYdewA?wD^AZ|Eq)lMlYz)u@oXKMl{bV+@G=<3fH7=c`h^$rIUnKB)EWTKF7YL z;^Kgcwtoj0`lD@!;?Klff~`Pa+mE~N4o&BajK7f`mf4wc2@_*X*xa1b48C0AtR97p zDBjA_J#Jh5h$|B<^Xz)(-ndl2jfQMH5t!oF0VoCH&&hMhB^8} z;rBj1RvjC4qN~#~h{yvl^JYtJy_F<&o>00YX3DL3UkI}Uc`+xB|Dw}Fs}r|(TN4v| z@QmkLt8@>R?55#uZSebbIyRP0&$rg!Cra!*>6CP4Aa=)dmwE;=075dFxzFMXenyGK z?22T+aT1eZ9NTy0KxOp|H-F`dhcsrXuc)pBj3Sz{ubfQv!r4~Nz#EA4u@Uc}bzae2&@FM$wZcg}^rYIv#g zj1jC!7@~o&Kq=OkF_s3G2d&=<#=qG`6oPd&={?L z4>64|x`VJso*8}45+U$*OSR41F>F)nB;;xZYv6+w`VUMftyR7q(IkdK+Pel#7jtX} zhC|y+97WS+Yf_g4Ek)pI4S1PRbl!K4)e1Zswt0W?TOxKeTHU=%f0R1k^RE4{(%oEn znRzpu*D3+gB4@u-+@cRJ{Q+5Ze)L|9F$IEvJd-~8boI5o@DshbG9-Mn0TMBor&T0| zjV$8FOy5#I4f2%-J)K~-A*+%PcIgjxA|AN*J07o%)KcT%j$oT44hETmJiA(X+Q+AH zJAYl+WVNz+bj2QV?0b1>{<3gxI{VU`Q$yrEWi26C_^_Z2&CFoY^+7v@$#eO(&nw`q z=vU^nL}*Q_cKrsYWl8Nd>x6*tgtFtJ2P=YW!Zup-?^=qUYz;vlvF~apZ017_&$%ll z*kwL*u5c@z$wxw}R?4=7fgG;o6U65FBi-d7w$$SBXJtBamjFf`t{M3ZW9&J3`y-%) zr<<<*$hDCly@XYpuFMr(je;hh;wZ^ohI=`8*#Op-mJ9z@N$P-%P{XmdLF)LF@;oV$ zt>LBljo&MY*o*IX+($~^bFIX~ScqBfXyJI^4E4eRiA&B*LLY5@_0T_E!Ye13Im0Si z0+(^Qqq27qLxx@s>0Nm`l}g~}(KQ&rPn>xZh` zT9*7BDM2xG&@phELMO!NH|_7yd8bi_sESD+stz!N>ij^;4?ysPem2CH6|FajK+XHbxgXNQ>@B}a`z+w6e4>Ym(RZ#a+eqZ||D*6eC z2&i>m`u)30|HS^cgEe{@Tz62c5B=*7hG2-k2k33Y;e_}*+e;b>#9u&`oEL}FmtCV3 zgP5zHJ=Plx-)!Pru(;Blt&}k5Hwq=sba%h_g??<^i}Pl0Qb~J{&TcK70J1mn&Ip`G zbDbh;a>|G!#5ukA&HJNiL8BtAprBhJ{$bzN(m`j-z7v+i}N88t@{7tL5yUh27s5$PCs;4#F(gjIOWgtDi0v1=v?!1LWtD z_}9kk#`*a8q7B<4W5C#_Xf0TURCk>2^OEfEzu7y6AOp*Npqr!f=klk12XSE~=5b?! z&V8YhiV7Sv8v)|C2aYOA-J}AHz;eg{189l;(X5r+d8mjdfVWX##32f3_OpMEWT|li zJt-}(K?^aPnA75~OeVohhqDq9_ZPpJ`+VzF7Poxmv2SPxL~_+eZ7JTx>|l9VW{HJU z;d-tnU3dweCvY|a>|cjq7jyuCKfnWP+Qt918n?P1ErCBja?nvCb=IIoGoRh@l79>4 zfRDL-^YiA}_Bcy7|J8qsnZf4Ck<%I`Jqu6g-kcq5{oqOe>%tbd&(FW`_;wcJmV6)fAL=b_?JvX zL15JiE&(Ktv$w{z@aTo22511+{%`!o^B}e!X*Xx#|5xw&|38<`B2+dI#E`u;`NUsW zNHXU!o>|OWP63hY3UR zckle(#Q*T}F1>a09j9oJqQ?Sf(b&iDE)D5{;StN9Opo>xMeOHar|(NP?KA98JAP+7 zEnhn}y^Y&$;LA&s@#mOm72tf4BdN-<7oDy@U3dc=wjC=6z{AZd-x;%cA0g&ux^dMw zgWvZNJDD|oQP(#)l!DzfDbiiyZ*TLDj}-UDfB)sh1s-w3o~h}dAK#03Mbw4rMwV6cqU_JE*C-O`G-SZ{5fXY5l+jbUE!TI}dzMis!x6hJ#HGFn7XS_VW zGK%YlWw8t9kAOe?SLyCQ-+w%eX0Ch0-vY=#+{%Btxt}#b%BbdFUCMTr24vx(t8gi! zsut{Z1z7m!EY|MGs4p}`-K?|r(R_#hiwA7P679qLRew(4f3;(AKYvsL@TlCIaLYe! zJyn8YCmbG?Q#$g^_KEfN3xi`KLHRu&IoUlXua#UP$uI<;)VyNnrQ<)|;J?4w|Mk6> z83_n^?3?J^v-32E)MO3EdepS6@S2UBpuUt}<3z2ON~EiK^qta-kp5{q_@o22D_P6` z?q>h(IrPzkc%V5`qVs1NF@a?SPU{l1?S*#sdf{uYUDt%Z%hT2t?|tC?bsPFQ5*M^* z(P~3yN6^2!#k}h5N=oEE*SG>cn0d+UrARFhWWN2kWeGlMdr4m5e-bKR z_=6P5EM&m(>`Ki3EXDz|cESf`;Lv!xQZtRu=Dyc6MbY`x9PAKg@JS=hbq)V)ng6=M z|I;@aH^JlYqt9FMJIiVAd+n?Owsvk`B$YZ01hKz{|97E-?BstJ`q>8f--Z6Sc=8W1 z=YJ#m{}fw@|2Lxl&u8lY#}VDO*=x_~{=wmK=J>FLOAFpBX+g&GgT5ic@a2L_JbVAV6MgP9-Q*V4pQNuN^*7`N^I-}$D+f`z&JKWxPR zad(0r{>;Up-~)Z>9cL$QvE*6KHFBLwN2{d}u>Ov;RWw;^NPO z*CYip2BDB4V^DIY zRoM8{4lauw0(qZtVp7w8l0p3KhOZpQjeev;bxJlXOt(HadfJt1^k{29*yT-m=vh|e zKu|2zl}k=fihS}V6&{D{4@#)?%a({-e_zcY6D&<4`-CiR`oqev%;e0qe$?HqQlqZ| zb|twHoP{T?mj}5eMeSG6`~za`JmKe562X9S z-*4f^P;yF|9f$4t#3Rxn)v3GrtGfP%YP-?$8O>Ts4Rc+bsj%XJH%BA+z{I%1N+3T=*rGJiaIk~ zfB14cXYV6d{bIGXeWE@@$fE}bHz-7N z)r0xAEVZ&#`wGxSidW9{eqVt<7B?__VvF4cODi_&l}l?RtpJBjw=j@N;Mn*ILlkr_ zU=D}R_FdVk#t#d)4qy!ZwREQUzrf)1m?&M3ir4TtnN_KWwA}j8-iuaf7m2hy&5|~Y z;ZjuFC``1Nuua@$%S15K)c3Bq=gCo87hGnpBPQ(rAwBbRqU<=A6vaxY7$7oCiQT-W z0o&i4H3F#4#rC_by_b9lsZ_b@PS1J8TH5M+QLh;2%}vVqhA_xzo}~KCWn(ha6L6ugcc#smq9GIR^GecOl0P;x0#ghj7C|EJysqXv@n%u^Sg$WBg^d+a)sB&X%mE z*CVaXuX_J8Wy*|m!-+2-X?RQ~1iaKmkEjc&qQj+pCikjr( zp%pdDh3(lbF?_nNaizf2sK|byhq<*RdLm$?5+`c0W#qUO;xg%79ANN-{$LddgL5n_ zSgJRPNEd*wR8Dk<5W-O7auS~{Td&3%@K&};oO3tq_O8cviCclyqL;qCIyx+^Ed9dp zF#BC&*f$DoYp*+2t)7FO{+zWYvqt?-G+ehAU*2^EqpNBUGqvmCKq!JJ+{3|4(Ms{3 zd}|fNi2X@|!DzC?TN>1v)E?{7vLD^SiXdD{wn*U5olT`6T#^ zyMEt*JaEr5(vr6eHe!xh`&ICcar0jLLmBF;8?S zbcj+a$m2ML&gfwN4~-Ic>2vO7{YoUB zGi=xBW>x=CWT9WfIPNh?S83?0fXy-9ukG9yT#6$eu+rkrCjhWowidBn2EhZjItV(w zEI;4A(~P+1y)?-{=q23ss#?a~saKfvHe3AHdd?h$E(kVYsK&J{5EjSs-3IM~ZnK|x zO1}piDKC(FCVicQS*T%R$T+b?;sG_WUd5n20o<`WN$S$V&H5dnS9R1Kq6>MK2<)fW z21plnfn6oXCnv;Q0Hnj^lW|BZ_x+rT(958JaqUP;TMOx z755f$vNs*9MHzn}j6vGPMvB->y&nQY!7V8sL^cLl7FyCndR0I59z&rfgJg1*~lobx>Cp&rIE)IQi2F4k~3J}NHIahkT zu-x(~KO@oy!?O|*CJk}~@Ec>Yg}zlS#U2v*VxISjG zKvw#=>xULGtv;kszk zgMon3m=wtqY2)*#E4f~zdwDM6?D2p#u*2~zR{J=A3R%e zOj?%EWm6T=qxy;uyKDaJTCHnpt3oCoo6FL6-7OxV?M9%v1ninjDDcps#%kBOKv(5y zFApj5!tf(=Cu$jbo9(>~GOvoxGUq5@z2aU5+c)B{%k7_wia-HUFV{;UMXjKWLO?0x z#z&6Qt3qShBh}~DCmVJoazRoyxQwdpDpE|^;&@d(c%`Z3OUqZN;#j4Fc{hG1N+6o+ z9DyTf`s`5kcU?5kGzD^JBXA509Pos^KYoAYpQ5-m`9(4;@w>fY2Lol;xR1}J!`FXd zS>)PUJL5DoN@x#nX6af?e#VPmG}_z~Zn- z>f(X(tL-yw=Km{aL^F5+U!6mjr5(QLL)BHTn#zHgIOCvJa-@@VcS4=0r_Pq+LeSiW zs9ZlVd6D=nhdI6TYaZP7Tcdd2aV|tV*n+N*7 zcG8=~Xli1s8tDf!r4e!&nX6LXY=l8Difd?I*p?ydvb>;dZjciXCmUTBz-=cEEtp=k7D=fd1~lH-oJqdHRRg z+=k|5+nOo|SQC?kg-5MPkw&G1XR9}F{RJml7~jl%0F6%aVQ=b8w)Ly%#DMz+x{b)f z`@egyCHTcmUAfekfDZLbnjxdmIz8B4iraaf){P+qOhY7~tvfpEni!3^r=iwA zeJiUwwj}7hp6&A=RiW!wy!h(()o1wKtR|)3sT?FM7{{CwtVS+bKRw^VL^qj$8P+f3!7x#+i}I*$S6te)f}SFsy9dU{2@G=;_pGuU zX$rrW#*NWELo{ET*UL@dYUvM-qoIAa7Mwd|INt_T=G5AyRwm1LvXsSwBkO`p-?zW6eOW@@;{zO%F-o{P+NaH{mrvOzE{s1q z*+e$CdRZ;*v1pZMDN9m-7%}3YongV%vta>J4eKE;f@q#Lxf2>`hBuepK-eF@CXYGV zh;oV(8?B5UHVQ5&ba*b!Pmk-H7!qfc8mmc1UcDJIq5W2pc9XRHU@;5ZsTs15^lkdt zY6z2kfdVQcHG?Ylk{+jEl|LTsU8q@HU_c1z{Pi&cT?B^wFY6a3Cp>GeR&hc2bY4>vlFieaM< zi$LkX7QhhA5Olb(w=u06Ds^7T|IraHe|Tu)02S>n`-YsAlOst=bXjB-Q4V!m#?;Ri zC?|>;fl24 zS57y98a44t0OMkU_-4b7>19aq+h`?Gt~!xbF2+KkmEclaKmwGvR{Bc(hX?f!-MRk; zHD;KeH}&S-?etvlkhZ%=>Nd_btH5g`n|Qt;=CG^-JMlH%sQy4yg?w&oZUsYFwoA0; z?okv-j|6jSRtloB9~}9#N_H@XP-~lA(HR>bQ%)E)QI)pk-oGopfjjJTARSv{Armgr z!4G?xu5idS&bku@I_?ykw4T=3XWeic7lLQpu&b-HekV*a+RV6VS2mw#%qZIx2%WmD z3KN7rcC_96Io3TKAW|C}Mw#4|U&!^G80oq5ow@2d%cVMUL@zjp^eFD4xw|tEe~spy zywsg4NpVOh>s7-=Dyc>3>tmJTn;JPrf*k)2~|3Mefhfz2q^{=L_1iFr22C0RM4*_(CwtVVj3mdC9_S17=Lhq zDCwoHXJ<@lcAcAzKRb)QNRor5_YH4>!jlnMv>L9J@AdS2-_EiGma|?s{Bw)foqP(ijRp3NijuwA)+~SGxEmqP zfQaGKQlA3Y%jkRg+HMt4gJEDr0S2-t$V6)AzxIkZ1ZK^Sl!D?(?A?}5D`>-u3ee|^ zP0F(ty}Dz8WnkjK%ouF6atOb615#y~Mo1zo6bW}xacIzcguNmbcd1X4KcT;F|pu>)v@JO^H`P|^@g~z zULbjIO0@Cbz77~+Ug>*s|7LTg*<%pX|ouN-rBol~GC0f7gjvWeiO@pQA9m#NOU2CHwoC&!Z;as!I z*7U2<#g0UokZ2O83d~V2Mo=S@Ptp3M!<{WV<6zZaCZ;Iaq`vWFlu~L@Dq1R%>44+= z0~+WvusL$D){Iu3ll3osGCF2FO~_RqCY0V0GJ7>xJ&qKwwqiury41x&#L1<0+#mQU zDOB=@dbO4%A}0clY6SeyBUR?cRP50$eH-t&j<=hYMXu4-m`O0+bMoub7iS^pJPF8W zd1w=BzcR;kpF1Ryg=oQ$$ym@`nUTSh)33$-E~yKP%s%shJ;Yt`z~eZfA%uLSRhy#q zJK5!Jzs2J%ZC^C!nizR2swU~c)uA;}jAE9}FUhUD<;2IN$8;g&-u%{Dltls8CG?MMYpmzcy2YyVVhVbQ9l@T zM}z7l=yg1uaOFN{9<}+w0L3K-ET*p<2hGkf{fvZEfy5gVHnH6M(-{U@-*(CJ$byoG zK~2*v3X+UEr7sp~%OJJCdn*y zM`^eTNGS=YuwalMDn%|V7Ucs)g!`#e2H)0R6^OHBjQ#lxNG6yb@<{4xE253ie9Z

SXk(49zD??a$Y3lq?)w}va1D-}z$;hFq9K#u?2k~LyY3A%j!@5Z_M*Vz8Aj)% zP+dR@Q!IL^X`QB1m`Gnp_Qmz*=f|bhO4dfQ6%%bjA-(W>^-|W%-vx-c*YC_8b{LC= zp{3)lq>}sx9D;Ks8QkD7z@lZBk!3uja><9Ec$=^B@pj&RdRItLI>h=^lvIa^MubFa z>5gI3wRzLl8)QfXhugq0+e$TUf@r5--D#0U+>HeHt(G#Yz?mTucjY=1+MS}ZT8pS* ze`zOroPFHrhXLN~Gcx@xisbp)kMx%YWC~X*xQF@)I0}@_J#-@HDk$N<$q(N1?ORLswdna(DJHPj7wU@ zYv^WN5UpR5kN8245|zrKq*?&`>&2^`77sIDX`h%lT}_^!hIX7_+dFN;uKLskCCQ1G z+2m1n=Z%d(-q_bW9sF*C%#xZsNzf5CJi{2?0FD{IcmJYL5Y%>ZL)I3C_{HRBra4{{ zcVn+boL*OTkreTBJK?Wbeyhy!lACpq{rk*945Flpl&v>~Z?qPvOLWGId)CHVf&)HN z#R)MLpe_uQfOde;&X-e)v=m^crZNSBvDp%}yjMoJ%I{O4<$Y|j|6kYYfd2WHbgq)t z+fu|eMRE)Ac=sKEE|rSs{MtBNt?DX024G}4>qEY0%NK|suhpcsW@_ETINhSpEksv` z_`X%Bx)-SpeKTX2M9adYrrc6uaX~K%zmbCz|2s6@hp<;W+_)^)a=3H||A(7WXfZ1T zNkB-BoNPas22nbFB3_HPsw{I$8n%;aed^lO%5a|F!EMMe>PCl_Y5kDYx7@tEvSFXF zLrHxjQaZtxccH5q084Y;MUt5cIPkBks>ilxAZ#$lO{Lsoab%OWgjw9wGcPqpmgx5FzT5| zJ4F4!!>p*JOj$ug{1BaPvx8o9U;0Ek)@!$o3>ZI=mcYkDrUiO9N#aGIr=!l@_`Hr2 zrtsJ{5T5hatsp11#kI+Ev50r5RO9$b&j{Be@te72p*uHJH0A=R)bo*?LZ=H`-A4AO z2i|MPM3!>aWBI$j`<+J)rAnu#1BwrPQ&!qUIKX6I&f5zVbas&7iRC20-9_{dH|I|E zURE;(IfB+Z1xI_W&*v&ljnVUHn3%3L&5ey()~SR@N2ulUQgD1w?6FsS7l-dp6c0=C z{A{A<>j>eS7pViRSS;gXe^aF3xH^?X*<%_jYaK+^jnM{N9?bXfhtJI&s6Phr4dT~j zQnv0(eVo^!siEHp_J7wvC}SDktM5k1Dm4EvH9HwRF@VK_}gMe&ak3=|X0%z+6X z2B@)Rk?Sv@x1@QPDmnB`H6?gHi~`TA?0fCivK3HLW)e#0ws2M^OugkAs3!|U5F~9R z?Q%d+!Fsuelc0d=F@%+y2pj6MyK4Di*Ez+w5k6xE)wy+z_SK#XZ4y+(D`uz7Wv}4v zY{rE>kPi=9jFflFR|6rMNo2&E=Af7eHf8a1fd-1?7@$4n+on8{<%Vz07^!5mk{Lew zr1W)K{whw`TY6r|TWH_Twumfl^wa!=FV^}|G|TuAyL$dN`B^AFi<~vApYQLfw*Q2e z{ryXYx}i0J9VSDVx;14Wo_7Q(ny(f%QSEj} zhaFeh8un6oF$K^R?s$>-n~C)r3f8Y`u%Gt3dD9vG;$5R+A>yV8TvmHZ=9_xDJ#`b; zeCf@r?L3kq*Qv0Zk^LkQCFgahKoh2Et+{bW?_@>P!7n51CmugY_+LpUMMz#Y#324&= zz&x9K>H;ebz#mLAd z=3Ge2H|PxxrurcKrf|FE!2;F$idqS9k}o7dByosa3hxbOUeJ>>jL}c<1XdH9g0b{N zq?A+PinVu^=GfUp_8GF+wwqtLMr zi5s!l16|5kA0MBjknd_anuflr0rvvAR#@760y=lOuw;c;Tz_fS2+i!h2Kb(suF!{_ zmG>?TGY3O$YL7PCuO`LhsTX|D)~y@sr}DOgfCFCoskC<5_*C%BEiU_M+2Md*$4`xV zO?*4TX~9&2o${lg6U?9S$2Ii-0iX~QwDyiuevo?ghJl|!h>US5Np=TftS*ktN$-yv zmwB~O#X)2FyCF1u2jckM&1ur-US$rqAWEqH+Uh83%zV~^4Kb;lIBuXS-5rk!pfxax z7yWGdkilPIEqG=Y<%kxTuTS}#7eF7`rMUJc#_>F{9_OATY(tjfo8m829JlnCuZ!Jr zzHbk&nw(DrnE=pl4_hWn)@8{u>Zc4*B)c(4tyu}dc4WNQx@C{VNDzZi66POLT4}=d zaQjo5Ipy@k>m7|-DK7}?_h)rJqQ1%sjgS8{*^!!kNZz-y5mqP2lEf1quv!ud9^9tK zfm8d6eUc#A4`Hh|1|iR-))FJ^iBE>&H7+&fTj3REczaTDyD=L$q`KA`+FM;ap|E9? zBxKAqkWlHgU;qndv==wq678}qR%z>^>>sFJLGl)f@+WM5?*K-PMZkIyl6dBAP>B{Au8FN5 z&OIGUKbg*NfVoX!Mg_e>^9%tD8?OMzAAu!tpxm)Ybfd@i_w^0IamAOR4gC$AQK!v* zF`@+pHBF=O^$5sULW5S^jozVtfQd#9&atrzi33%+szG{?PMq~IeZ!v6cfna1YcaRI ze7ZtjEb(zn7b&t=(<|*ip?Ch`@zSz7rQ#L8B4&S|Cq{;d*6h;O%qxp@*(p)IRk#>w zNV01&ZMmDp%sqSVJ4vpwE$wkTclhlX;P3;D3(GZ-RZNAe%Qajl1-&L-Ge&Tsz=SzE0foutvuCsN-W1r&&tWO-Pq$|tZxz=4l|FT$$ zNgEmA0zD3E_s|aRQJpFV$Tg+gD4E0W=|~l5)3W*LkMjHV2h1GxSK^PDFKxpgbk%t&;Y4$j6z+2+q6<3tpe#iiTsiRjG0nas%X^>gA#;H z$4L6RXEJhS@t02pW0k1(dS%0DbfDp#XrEe~Sk6nxt8`}Q2R0G|JhdU=e9FA%)pXq* zicE8a>j{jnk#ro1CuM^%X?6TX&o@gov!;cJ2|ATJp0pW&zPx4QK!eO}3w!h)#DjcJ zk`>z+Ws_L(X`a1)2(mvDrg~F!DZ8j+Z(}IW%Vyb^uNq)%y=7LqyzYP{BD|ZAv`ovX z2EB986uqPp=lFK(33L{yPTA-=c$R%h7_x<8OCTh%Ay$aa0HJ`4*l;ktmQO+4X0-wn zODCyRxAS4;E&)S&|G>a-tTl-qk5H2-^zih6Ow zV;Gosmxp@&>NI#6jL00&6d%LpWO$^Tm{AF$!}ftRukJBbl)lVHnl9OU^MzFFK+P5} z#KhWeMulh4LQO)mco&79%o&Ycrg8puWz(WPn1*JJf+P>jzkNNZOp-U%Vf;0!n(-Rv^?;Ok+k;#`G8-&hvZ=#S_$lGN)P#f_}D;3^hSst^csReg#zaH0mUynKV=gQ;b*L4yUv;WjpX;^M7z>FyM>mQubp3isREre1r0#x!FDfE;?V1UsLH1zdZ99=`WXDyasNgedgb6i zdM+|OSA)9m_nPB&`Jvra18DsNZ)^csdIx4MC%<>xedC_p&fBANJD^_EbzNpE!u~9{ z=|6##u}qUF!H~oOqqw=xVMfF7^6+5x+Pxeek@7 zqV@+o4D>;)`kDBxu+AzcX!Li@lks} z4$>g0^W)ub(i79n4{BRv)8|vFj2Zn@>2c*6obzV=5J5bCE$F=~CA^Hqv4K*bL}_X` z0Y*nfjcgL*;Zs2MG7%qX8&f*ySyz3=f2bzU^KjtK3nZ9xz&V;i* z?^vH4QXb5GRfDbuIe|bMZ+Aj(4*<$hNBh{7i{d0mW!=4Wl#bAybGJyMX|I23(RqRS zUQsAc=fnWtUF>Vuc3DVuocl=Q((-id8JWY&W%Y11Ye#P(@ua)8y)2dDi*Ic_Tgu6h zlpk3`nn+Ui!P)f-{p*k9?ce7RC6DeZT1&&EZN;pdJ?#w1AIG?c`j=62?dGB3nr5Z? zSko^fCjHfP&$5xu4P)Leo`yq5Cp$r^lZgdFfzb7cH3= z(t%=<-=jbt-NnVmi09;IjcBRVLU{(;shF@%;U**_GY0`FAxCgI} zDq>{GA(Y%u+aLuok*csnk`$8ECyMdOENrg!U8jDZp7oDMJ{;5cE+SJ#guDK@p@#JM zS}dyuQ6OEo6HhAow1ih~T$D&Y(Z%#vi( zH_$)iv(?X4Qnnvv@!m!X+mV)aA>#zC1aJ)rm9HcfPvn$3JIPc;ENftQYS)$HyyR3L zx@=|KD33AToN0AbjlM<|>HZ}K%rFX)3H`VWIv6l`)%3OPxgdU63m?E<#pwifj zh%O)LMVJ`72(Oz_gILk=gbFX6-zH@B2Dh{GxC?Ljz(U!O$6=;}(R3|ClU$eSa^2Rt zS&=w;4m^2S+I9DB8uyk>!e-^zDh9b-gBd*of__d5w6RBpv;P8l#ER7`!S3tR`_S1v z3-a!0la_iCBtz@YQi#EmgDl}`g*BMYR9sPF6ioEB2k1Xg$sOe7CH%BV(BIsNqVbEC z?k*{69BtMe14NdJhFlR2q0__XOC4z$tIUL}mSgb8j!(J7?KpHXL~G``agJ%HFMIdG z%$?%kY^8AtIwEnw9W)ddPes_91ySp5E!`Q{>uyCPb58|*4$4@4CJg-PJX}3~G4IlF zTOoOVwJqzqS(hLrtbtatSxN;Nw)EZd`EQ#wAh!ZsI(d``7C5zijExMLpdP#gPV5#k zc#QvF^z2RnO8r4HB(lNKXZD!+zI(o1jGKNPYG#Z5B^-X&b<`I1E9P*}01to$#7J8w zgT+tEZ!nVZhDc%=>A%zeG9oB5U1D{LlUrhw0*1y8S#+cvmRG!@Ov+PJfbLVH;1D#; zd}PbPD7LPeax%9fdafd#L=@m^5=!tPe21W&(omUuY1cMpX0+3qFB+%e8qaB8zR>Yc zZ3325$L4IirNQb00!o|6d6e}n5y$L6KGcCf(}0ohj>0cY%2p$p@+~1_R9G>REP2xV zFKu0Ed&e1vO<7Ox@}O@Cf&~xs9}d^;pv|!yMw?eU0W!;rGhm2_G@$HzxEr_z4dJTwoWjDG600m1I$_ zO-R3v4MC}-4JiiQ8&Ss>X*7y@A=NJF3n~LcBR5L|0cSX_mIItKv$yS}iFoNkH(S@{ zPeeNsmAX8MYFNo`<6JAf=zp_$7_$(%Ppp+1lMp}fwcWS-ei&uW?|vuCg-^ih0TYG*IcBQ-qb|M<|jdX=2BvCTapwBorj9~}!1k$dwad-+y>4&QE}*&OAJq-%+)sF~PzBfzIPEW+L}G%= z!MJVd0_R#2_DUzHRvsHALUZp3t#7fpj<|&SK-(QC5@gG86P8UaEQ(d&&4E-=#j^E$ zXjTbc0@hpSZU(JKgW_qSJ6Wdw$l?tk5UQ?ASuj5<8mjxzb6g!U{gf}~+YL>3Y=7nh z^w5-x1Td(Tk7vPq1H~BMLIru!TwI#DPaF~BJDRI>49N(s31sDL2Rg0bt@{(N^dq$5l~TzR7FHU z2oR)%u3J%2(2X<+1VxI{rI(N>0t%7{NbewomLMh&Ani^9p7R|Go1An0x%ZxDKRjkb z-kCM4{8pJY^PY=%RdZ(Rm2G?{dG{xBZaorx<a!nVt44^y)c_n$YMp8LYrcPS(T z+v3!Ctx@S)eTr6xz|1oHp%u5a)*L?bc8w(8(H&d2LU&v^j$oW@E-r1>pv3zTl*ygQ z3A*!K^A@s(qhCwk2dJ`t^qIRc{MrSmHNG&!qMsPgwUFDxNICjhygG{5o7&H_|U} z9!{S|puiglYrRBB&pB{2)SgX9Q z`ViC=Mk}qfeB@*MjP`O2k6?g0ZAew_B##aUbkF&O*Z!mE>o{Oa|pcXVQ5)>q@qfygK(eGI)C4+zM`Zn7FrJJ9CETLES2etOiIk zy@LzBox15wJGcYVfm$@f^P1PY>IQfZ&t*`Wf;D$Fb zl(OQH6jy^kg9c#e<>HUFnO{UI%*8a>9YZ>ymAjR|`?hef_eaJ5`o^&PlUE0~#;L>Z zotek>Kc8mt?yVNNSs_h7tZ)-Et5+f9TMmG|+HgR&PAGdd*0&O+vrW=(;Gv@a(7TS@ z3gx%?eVZXq%E8OJ&vD&L;f4=X>B<#f`L?r%S9k(+UHAsTP0fYiq07AJJOo#}!7$#2 zs@Q~z{YMHWn6zLAa377R0w1&EXyx+dlXvj7a;4YH(pz<@0ekNH zy_>7pR?gG6xo>9gJ)ds|REhJKHaYr%dm8r6lASu#pXvlI?ej-7f+I7Vuf7F>5;cauo}K?N?$~)swdhG3B0pZ zhe1h)5)+)v?GRqqVM9lC!t~NBz%sk9%*KHRpJ9u z#2~Tdl-<=yM-wH->0^Q~yecOB^gE(3<;0v3Cj_L0$%ZP2VJzoaGC9T69yWWDXu9`wfZ{aV?ZN_O$KcN9B&QOigNQ1G4WsP(tYX|7&+KD91fCfh|tAtD%K>hcR^d@650gGO)I9CIsIgEnHI zxB@;%lbf^ELP)7`*jL5F$G zzdk^0363#P9?Wyc4CCMQxDVYMKw%%C8avYiq39|zXpahigufeOY5?t06?$fDyLM1_ z@I(J*O6*7PiGU6%a#;5nzowbhAF#f|UEit?MHW8n9-_o!&11R)MvSF`dZT?)Y(n*M zaW^i{HP?$I$V(tIW(2z##YtRn9nlf>#6n>d`G9c}b;aOJnNH8ZXHt<*4;|H7b`7l@ z@7Z=pF-0+;Ul&ZCH*kN=ti^=;Y1lU!VZXpr)bw*~if&f9s{>kjC|HlHbinD8a-JxS zG7a{uG;dI(PV0?7FUjzxYQleEHYOPNkj{e_~9d#t{hs0UI|CpTjtB2L}C5ZJZO< z@wF6C!Cagpbm@fM^ezmZx>^^fAkIMN#6TdSSo8dzJU_Vx;luB}3|;<=jXjds7%u^- zckSxC&CM;X%f@ z<7_;$M0Q$D5C<}9CWr7Qc7Hb7S-2YIpm;AJ+&beg78Sz+G+Op*dLQ(B;@X`j-OW#z z=$?IfaL#O$WFx5RNgW#3qwE#jsb&3%(+}ImrzAKxRytXy*~e$lI#Z`xbRZb}JblGS zxA)^O!kg(SQjuR>bpzhL3UCz_r5QjwmH1(q{VIfL8||&=Sq6u7e11kdBtAbzH&Bbr z?e?g+q=AZ%u8$g<)wHSE&#=>*(hT5&r#&70je}tEa+DMFqFgE&ejZW<(AG*?Zh4)p z>dhLUNSRru1%sOS%j`%)!qu`o&U!rBkPBTO9kIh1Z@~o~-5ENe{nk~?TVi|6@uDa9jQHg^ymmAz8BodQD!48zd1tm zRm0jJXO{G7&CNt*=>n%aHK6BDUXD2}STc6615)8}EKn>Db z)nGS7w@_3myLBg_$Y&y6-5yIwjQW;dAlT-BDi}K$wk*h*|Ja!Y!Kw2+tv$yEWn?2MnH{k>DQ3$oG?X+qC;Y8 zUM@#t+rZ0}RIXwP?w`-$EYE_GP)*6C_utKia*+jeK23bZU&4v$;7{m0yjcfaN5-l{#+9X`#ukYx9GqPn z-X9(s<%a?zb6YU73;J=tj}!y7R5>_s9{N{>m~mu~EgwnU4wz6ng*pP0^Aw@NW&NI0 z$V4tn)FG5^E`O`8Shm-E)PCKsBHRVoh?bS?RqJ@aieKg zlk4P=o;rx@Q3J`nSAux=L>UVl(h11KX)(nT1#4dnA+N6FRl+Llzs2I8jNv@$+4_sD zAc0%+Dg{a>P)Zv+X#JiOts7 z+}lzY&@CSLnce?=$;vE9HtNk#=SCN~sXV@4=0@|H^Km1%Ma=2S3YJNlB+o-pEmdLF zuqh`dM9iZnz*VMzQaLeHSoBP4&8FA?o~u~8WdAKRn>UQw^}{|GeYAH>&m9hR@Ls%} z3Iatww9*4L(?#8=NaEr=y76v;oA=-uCI2e_*RKL4)$^Kh@Yw3`1egP7&K|`eCNLwipyOQIir`E)<&kMnQxV+QSKoO}r)c&);%K4=DXivbaAT9PRfIo&L)Hl# zBEa82@2^F0dRfq8G|_72Iq7l0jEl->YGT6&Da2o)?cSeL%b}#)fzbW!j+&|-59V|< zRki)jX3@E>Ioow!E1fU>1eKu62SPJErxSG0#XP~ED|he%zq$v2*laP=JJhbZi*_q_ zi&kzg*4WJrKM=kcDd;;O#8o_v)1LRIk3jrgHRECK@`l@S1KL?SPlJ>?QIu=J45ELA?LI50K2>36^&CnL;pFw5UlkD0wmi=KsKHX<6%m*s<=2lK}9; z%GsxPFf~X2-^_s)gnbAMb!cV2G8Y#dhu$B-)GC!7|3O&5!RZJBW5H+fba7i1?|fQv24oM`5F^XWT!JFnaPIS+cNAc$_!Bjv4GiU>4R z(UDI{v18L#z+f=UC|Jvlb?UN!(`J$}N0`5hTMy7~A=LRBhj<6ryIS75!X9t%d~81W zaeA{F{|}7+2gU%? zf9**BzYWG?h?&s5?Q!noCr3yF1_p(qWy*eocW5Jb%pfL=orxXVz(>#S;{LCO8wQ$_ zr3BRjv|(?}zrekmmY)jDoJ?v zd#X;tNgX|tHFLVZh>|U(Iz^;`{>?WUNd`${_AzVHsECsz#fB*pmF^2zd z16X$a9iYXEW|4J@tTZAXj%lF}NTjs*e+iSqn=9L_ckf0Lhe@-Js7IxtyF3Z4G3Aqa zl(6OXDdL_EDwnW)BcrjXr{!)HQH`2-#<7xbRnlS65)XM0u9odLK4+d}B(?ZEkCsKR zIXsrDujII&9C@qoMVSAfO}Iy9=WMiU3Z#hG)mSVQA4|w1|2f%_jQW}{{{rhfl{?bg zcgy?f>%)Ng99KWf{%tP6Ry_GwiZ09;U2WeJ?-!22AqQ_8-l_=aJ3jct#z5bIQ8l3( zhN29d`!giPLP*BHHl^pOKcgZbI#bo9>qYC6(D*$L(@{g-WWvR(wmN7Ko>8o|6@J@Y2Eo?{?76f?v?aA5>P1!wS6BI%PLF{M#pDze-72X=pi5yS zq-L@-%z%OCp^x7!R5!lWDkTOzci*oQ{|*{jly&_bjvkC+7>wvel@*INl!L6gcs31W zZGV%ou`4AToVqma>vI3EcQFQ*H%`K)f-M{8^e|Ze_XeRoa8ZZ@eTHuEqBg5kO-#*q zmpXNPWrKZnoX5Ldt4YlObtEkpyzK(7;$RHxA~Q~wGA{+O4SySrij?DVnzGa>_z)w zYLk9G(@8zE7~|x|FiqO~ptEC%RzQoxOtzvS82$~RHCY;cgCoy8 z{ocQr5Ty5oH6VOR2Gw{Ugl`t<)dbbRzIxcowX)|S^}Q9PoB(w zQ{Qvsg{S2lVNxV6t9)d%eI`9LCG2gj<{|!lxG@P7wVp&p`JHu6F727^Bt1=`N1dc3 zcR1@C1at|$Fca)jA%rZO7Kxus+1))YYE12_7NpIFy^w~Kxpn$uc9l`pBffqMMv(+Z zjzegg)i$$XyoVXnyWYiR>1NW;&yApF+d9u1E!B{zQ67UESbMl&(;?}1+euodI5CYV zZYHSC6|eN)2^2Y4FV3ZDS0^=uF%Z>&%cN01PYyq@gZoo0svx(@8{^kC5aLQ3)eXvZ zV5F|{8*bPX)Lab75JHVPsk#TH4qHw{8kCb?OuY3(sv*h536VmCTb5Lcuv&kQew7BP zGDK(0Yw`u{z7+Ko?7aobw!t5`pi{yDlNA7(sUNwq`qkqqS3ApQd+SC@>0f+^k6v#B z1%fxbUU6c$@9vzh_he@R6)#a+5z8!pTp=-cS+!bNtt1#w*e*90cFE*_`J27hAXXhR z#6BOQhNq913c{|!zHY`f-N`DReM+dJwLAC299WIx1Hf=9n{I6b*0 zFOXt~fm2%Z|`yCU?lV1GpW*%bqNfCV7$KoGP6FS2!8OsBndJtMSca6-MK~7-3XoAU1WOlBW z2q0Dj#7q;~RqYEid>O;aLaiQRyCr*lU+CoT=rwOT0}6%AV#rlc0K~4{uW^4Zj&YIghw+pe!7>McKNJ4sG!OxFJ2jA_7*yktTo5rdIKL{R9e^0{2z0d{ zRBQF;zzrn||6Sz=c%Kh8IlJboS@Sjie@bikG0;@s;Hf-{pTXQnF#YqF z|JxcYCnip9W5~97`OO!N<}Hm`KNM#c#l@PtCVZXex+(sia~;?+SwG+P=J6i1s&IeV zIM1qEJC8z2zSNB{Xq28Ug;uk8#=fqJ&lLSC`Z&T8;ZN@GLF6TV(@j)75MVY~_fd}n zC#LH0LUXoU^HhqMXZs9Y&~LKey|cbrFP_onD5s}6*@D&RZ>#rez7-!6KZ}-#Ck4>k z!&1~=fg9a3JkKgQ_tOu0KvMHiIr(iRt!Y`@= zDhiW~1BMTctTUz)uaws?>y%HAo33+_JH7z(K~n%0TN?K@?*giM!iJ@iDxk{RIl26` z+Hcgf42;q)bYVHh5m}e7n_2#cI=N2%M4@=e4YiRGa=^v8m)p?3Gh@Mx!sQ;ODmT{e z(r_lbj*KM+R5C&yxtfo0!?CTN+Aw^hzb1YYEe%%L5gpJwrTL`XqqoF?{DRKJQe^LA zY-}EM(6P{07F>BK8Rt9x!5$YHSFB2-#v&A9Hd9hNog(Jp`Ss3T^ZVBpAbgCefGIZV zXF;_0xQYoeyzb`U^8n8k?|&fTzkK-Q4fH;L`%|f2>YzwDJf0jWoJ3P3Ak=z?<8)G5 z)TU4`a`lVGUSy@0jXv)=iHn;|Al=QC&=9{U-z&P#pZEb4FYYzBJk;x>k0ztsy|2{L z|Cm+VOdk)``aZ&IjF=8~A52ex9SG1_y7(>xz&)w3%I81W)Pfc!=m6Yv49*`*wHUdX zEB;j6hmhDi(e{)urZrOi-3>Dq|byCwHfHG2;>=o|j9k(B*`VA^K6GKXc zitpQe-y2anO&rOWm>nQ_M$!CWtw2qzys5QS1G$_SgR<&%4f1NE+~Ib|2P+`~C+EP0#bW&`oy7A(V-cG74 z@HUIrzyBTuNfqsnJzlJv9@mu;^EuaE=wnqfnw+K$aV&RpNcC=C7pguNT^|d_>KBTu zJd&fd4~~3l5!8zV4(k>3qf5) zM%SVk2BQJS4Tjs_fv!ws! zKMxrQ^_NUXYd~TU`{8d33%p96-%Mogv&`+E4vo1%2v!aI0|-2^;`QeUCJcwK{JYA) z-@_x+H=NC$U80fcex?Jk?`uvXa5C0{^18dZ3j{m7mG~F zWa3SX`TrDce(&gSW7GdB+E3fY|5LPuSn_{}_S5e1-+IsgA==N4BY&H;{Qp4Fn2z~h z8}PNPKY(CCcZFEZ0BE^zYnVO>%nmOF8pLRr&!NALLs>4pL>_1%?ZE3JtQ6tX4&eFZ z;x3L`kdFF4GK$FHSufXbGClT|Zfi&osu;j}XoNshtZW(!Zhz>d^ZtE?(2tjBw zr>bQZE#s4A0SL}NlCJD`1}b&~5cw z?8F8dJjX-l&h}$XwKoOO2DeV`0Rhu^EQ^hPV0VBp_Q6!~rvP_eI!pl|n7s3aHS4o@ zX9TpT3`TUCyvK>@=-=eTq~+Fn(2?>br{m!7M?r4{@groCW5#QqF$b885i>E4lj?o1^N+RAJ}8_A0*GUmYTxC~=u|LNz!C`p|f z5B{-&pFf~Yw9swBLGyoz20M-3;<8XFU{34!H!vv~jsY10R^X%CBBT_6?lxk9l6EYU z5)MvjrmkJ=p}(FWGcCcs1<-Zbl(Yf&}9u{ zy^g8wLY}Ic7t!9Th)g7~YHJ^+HcSxnRax5b%Y}gxT_7_dny1faChnlhSez!+IC+Cl z$&(r=6UG$Y|JnLr{_n3?+{$eF(@UJPX8k!^77$Z7nBz=O21NC=vh)Z&1UkGRp=l|s zuE^hvV`2cbL|x2geiAKE4h40KLS}Wg^2%D~Gwx>qfwzJ$pZp~m^IY$+1cP))fZ^*3M(h*~OSDjoxa)`TIf8y$d6T(!IlDN@!47`{E*JOj53cu2`|1qBx5Ee9(X z|Jo=2`UVH?IH^;YsaI8dk?oeE&&Ag3LB4baM{V&y31kLI#z5VvkrK)`**F1m6MWyqrkpB$g=2Ps#H)P?=kf3QHi-vO0B-5FH=Hmr{2~n zx5B|ey*^*#@h2=2{{-qa@#YQ?km9?coy@_81JPHx;L!J`=;Gx(*ZCGvwz&1XmSb|i zkEt)7HeWvr(qo2G2ix&9Yv3OJ%00l%AVGMU>=S5Z!o$5#frB`h9C#V+#A-~(Y^@Ds zkqJaLrmlb+sN(Y`Mc~`Z-~q3KaJ&a_)=)X1E2k&s4~2Zv1+20Z?`W0>E@upj=4UCF z4JX)+@VfXwk8*Dr^iU^!d0nxZ`|u|vl1y(|&H-29-%2MCJuQ4UkXR{f1>cqmUyf-y z0~Jugz24%Mc_$XC{_eRY=ozR{UO1!)j=BRl4$zJ>fA-IcaKddC|2`>mV&uI)=r({$ zlY1`jU^VFePAN8pY6&Rm1S<2uq0!zKHy<7xW}YltRcwE0$lkBwY=I$5$k~2O*v6V> zx=V3lqz9)jF*%ogEa)LPSPy|@Hbb+OYrH~;5yqCv{^3vp7Mf=JIfeFaV z=3)?*ekNhdCd`z><|%tkWw^O4^wI2RLjyfMa5sb9pm$?@Eaj%;=-{D@EO_F=33+!b zfJPL%&mT7M|Ffoek@w3Q*BcIm+BXB6LSS4GP^(Pb*Kc|IyL-*!jQz9;Sgdp{HKu9* z=JmZ(NV@1K(`)fAwZ)Q&xc;@=dV{>S7oYhpm}v*j{BZuQyr@rYHFM zNgY-*2bXGG>pB2NG08VrI9NT*Z0%xT($`6EbRoRkXTrrC z{JK`cZW;3x51^`1O)gNw|T5Nh`PQ*1ZMq&e^W6^_AX=|8dSjZ+?(sozW z?K4`v*LZBu#M!tu)i~gCPqBKPWR>~iQW4!IClOIm#XOI!40*3iz+S?c%OhesW|_J= za9??GonUc+IXyj(Pq|vX@hzqp<$KjR_;9}E(|6G!^VT(tVy+$QqU!;YhaKY@ESQUw z{Iq@}hGyHVR0t5>CVkc3D7;$A#UVSR+SZGCKM9kSaQr9`>s+p6?%OO`&Kj;(sy4}w zJ6czaQi-Iz0<=qIzSeM>@FwK#^IKp+0MqF~jp8o841}hHR$OM`l0Z;$f(s!l5}ca* z@(4;Agl)c-IUPlOg?-g*Gh3e-Y3rvpEckm(04`1P%<9!R7`RqsHrLXnSj8vQzOrYNe?X?A^ef^ z^Uf4pkFj|Z1`i-A86oN%I%y8sLp<=!D{r8NRvbsEx>YIBq+I!Ep_yc%#%~lAxu>@? zsWE#alc&)-)=0FAcqZL3Cu zL)qXV4XJ4a#SQu4kD=muPz|Dk9EZ$URd|I51R8G%N10KSH6N#tjB^RFOPR6y%oR@) zEvEHEu*6rk>Dvp5PoG;LYdmh8UhFCa^wpJ5g8CdvSBc>~4BOT_V~A-3^}@#DKuVjZ zzSWQ;Xy5%1im7WiEaOZw0-<)HZ;!A9y_{3;S)W6|XQ(PboQ^wB)3A4wj5W7Ic8~`b z#Xc=zu2+41=0Hgy6vI0)v4jvmT+a11cza_*MqcsU!it^2iaja5Dy1qMIE?ti+pPM{ z%AhIEci!p1-&|9q9psL)F>UgBg)jR;Ro26IW-X)*^8@@Keiv24 zoDQ~{`(179Cc=|lX^R<@e$f6C=18PU>kmJ_MKZ;U;>fcxG{^~*AZGWS*PyTloo?G2exTh++()3|a6)8@puEb7NjqeWBa zBrQXiqISesV~vBAseDIHmP1dT2N0y6-oV^^ZV}`UDmmn_GL_tmKy^fK-)6!sdIgv< zIBlS~+|pFc@m2LXVk>NFweyGh82mTkw9(EptJfQ(;mUV)e75Op@^11l4fF6G^r`h< zxHl&O0b+NWTA{2}ejqVYB8Zzc)mpAsmj>*^(n4{tShr^QOuCv>fO8v$wy5*70Ksl$ z6F6TjoibHPe>#_DqbD%i{ZH-uWsY+=Na0!kDBK)t>+73YD4Rz9GKlkmnz0g=d9D5_ zBuo(Gw9PJR$4nL2ju*ns@MhTUJ%!z(-)j-Sv~-T3f;au6W%g4KNtLhD$a)=B>67;4 z;YEu`*Mm$s`rXtDp_|7(OqpXw(?WIpkZE%tr-n8!JU7QYIf=*}{d|fWu6jdsBP*#{ z$(y%Y$QUP^79VBdXGt(zOc#br(0SIb`4H2oDbZJmoNl#67s1Erw7hDt%%Sw9cx_s! zo@12RE?m^WqSv7m9I-ZvE)uoMvJgvawy^^7OqLVwP*)aWArt@|g-}mya-;M*7XoS0 zM3jj+APjO!^=dD3u*#2*sxOeo8ZWwpSae?YWO}*jz}V)~rJl&yss;G_r4Ikam3;eA ziw`Mp)``+z+&Gj;_Fnk@4`{cLueqBh>~>MhKsoimC~?ydriMhmvwjC)eHL-_qXS?) zbp1xw@g?2$ttW5oi7wS}%XHA|B3ymtF;fw#Ym0ZlRYl^?KPtCa~*8cya=*)gVo2rEul&50h=e- zRskj^^?GnTyVAoo&!1mojhU2WXW5NujTn|{T~7jq6{At|OfEOv$JZ;8l>|Un@+xEX zhE^;#%*vI#it?w2IapLD6are1>LnQ#MS;ZTIf^^;$yODPOSp_&@`pth)?uZU>P)v!SGLm?Voa!=O|Iod|Pr zQ~+V~A%X_0j9nrt`Lz>I%u)IMl7gIhc@KIHh^Dg=9$t4-5c}1pH1_3#*l)%~=HXBH z_G|Vs7yHQu$XZ;Y+epp=?JYg!x7htzKiZQu1(a7IJ-J<<iWPxZmC#=`TzPSYj6yg=q`*r03tBEWt$hfAMK|i&G*vjAHCzMKmGAXBLA-p zvo|x9_?b$e9lw%b?<1$jY;ZZ78$4?kST3e<4wUHO&((i{9lxEs1Z+8WA`gsI-Uo?= z>*u+Vgol^`jtQa0iKQHDQ0@PDYVE(N*`DO_h!@6QD{=EB?jUvB&z z>z0FZlz3~9ykjY-y^j4oiSMJBL3O6L*|zg{F({Ywm`triQSeGfAp3iF^$f@{@Sm(Z2>lV z2{k84*Tpz7>Z*Hd7u!_$k?$n1Nm(q#)0A%uDnj^U>A~!1r8={=Rjr)qD-4L2A_x7e zmHnF7h3|mtS;5X=e{>Y;BnNIV7PgHIW(6`&OO$hqfKb1CO>8VXtm3)~ro}GXuLjQa zd6$G(vL)Z2Z{t`pv#tY`Bqo1z?g?JWM7;b1Y)p(cV!~vSf0!n?&9OSzZiF2+3otXj z8JCi>gP@535t_eP^znaemnFM7=FWdlZbw4|AbK}SaN$(JlK6ey4EO~npS;-8eH^&D zsVSD5{BeTcjD$V|N+7|oZz~C4Q~t14Avha>y&UyqeW#f%6OJ@wulGdLZb@~{Fg{-{eKTVorLJ>XjU(^!9a|zxG{V`#0_N>JF=it^d`eOD4aGmav{JWH_nWs&Rv#u61cWmWqtcBR2`7MZDgfm}+v^@fshQjL>F4*}eKNextF3=GH zZQG-fNaI(+@;2;cV_FVQJ3uqmWo94KKc=2*XU9G9J^-~2wb00dYM^@6>&ur!?Duti z1kE7cccN{#oI)3$ZYnTlLtWAROcS%SNR8owue_ii%a)000~1qBGRe3NOw0(G9{F8( ziv~;cN|3#WWnwQ+C9M@y`>Iv;twwqh?Dts|jUFxqFHJn;|1BJ0-s;>As@aYFql>gq z{H&0BnTQ;HN`ImYidA==8g24N&)yccEOLoREGTse6cXoE3JZL}$A&TnqFVvAHsP{a zM>C8266`h?luz1~G!=oCA#(6XQ$!2Ig|i~a*fX-$I4 zo~2!0Umol9fBot*{Cou-hP3o$PO`QW*`==T^QPG-cW>4VSd{I*IK&Waz zMs?zWu$AvVf9imQRnhaa9TrMxZb2@%e4y(hO%Fe-iuE24Y`vU`?3g8#PK0(im&(S& zMqh&a5QXK;Kc?d4M6KV0D-O5ra%RiCPBX7XKGgSZMXFJnYmXoKcv{o_YH=T#f`WoO za#ufl90hL)HAK&HZYpFe!%7BWd;ERKY+P*J)y@D0t$u8(-=~LS>8=v@EMyB)FOE8c z4EeC@!rtI_i(TBjtsR&w;EPh#LRwDnz;m&|68=g8f`Y+vfcmM9Lt7rUI4R~4AH{;3 z>&|p8w#)F7bwpnTGIMx4xcbb?^ZnpO75B^_$V2hI-#&QF4o1nFe?*eIRnL{KRH&>c6-Y8jwYCc?%KtdyM~5CkmhQt@{@#QTy1iM%JCE^V*{!9HNBwL;rBmGgTd zys$pq>x?ta?@1wi_gnhU4*nOA$$6lZP$Jz;9a5|YU@8n=GRm>Kt*z3w-uMJ})e80YFZEwFX74Nl;B}lk4d1fF?(CI)3(CgeY2j_31 zUYf-OqM1iCiQAOvT@Lw|0|FRtU5M5ri3K8gh%bf!qz?J9MW-An*p#1sPkaVo|EOsv zdx7~mz?f6$*B-(ya*l&|cCc@+6@4?;IaqFgvqz@t zI+u9qtT*f+ZxUFpoYP232Pj;-`@`6Zq*n=>z|gbXC1y`RW*R!{a?y4g#F!+xtd_CL z-mDIM)d)&IWnD|Ah1uxbY4$7}G;$NKI44bjdkf}_m$4BJX<5qwRfArVr6+J=Dzg^q z>OXP&*CR%P3rfpYO>uq%SI7r$YhR@G^{3}0gTb`QGBtZ-Kq|Q5)s=^A;C)aNvk4vf zbntQ|C#HDUt>Ztc^#a4hW_v?{c$F@;ivyLHFq~m0t&rS%6zKZq%aQiG zIB@$fbXc;Z>men39@r`&+&awoP5BUgjQ*pOIOFZ~jqKf}B!+U>LV zQ0aP?c;%NI?68gNFVI=qV$Ezkzt`%{RwPgaBHP)ul3~F>(t@6@?9>jltX05-Bh*tJ zpum}zROreMm(2kX<7&)0-*Cf2%*<35+dlt?SQkFX7y`EwGbgQ97)az7#x}6SDP`c6 zF|MxPm~~Y(@sc>@c= z9?j>n0q>)*oaSLPNio2ic+d zFFZViwugc9 zEWVffMA&+E9OUwLcBZc$bHQ~lILETHZzaR5SX}yC`4sd+m`vq~u%TC4mS9@qxqBPT zf&+>7H!OOF>?grVgLRf|yIs?V;FE72VMr&*KfL5 zi}sJYD#%`QD*BK0GN#nJ(zcw5YNr(v9sJ=>A>zU>8kcTvx2s+#Qi|J|6U>Mklzt>o9@z7cp>cC%RD9H zof>IWG?*WQyhoZ~T58jk9Y$b-eXZ^5 z6Kntmx(0x2midQoIpA!J@8>srenN#sBz7D`pK=$E3+G92;J6RRvJ-utVG8E24ZcPl z8(iWeUbwO|Etft3b42r3zbjyj$1e}E1sI!{8)d6x^b7##7|8gt6H~2;1|1{BaT(o1 ze}Okd)%;_l>_=Ps$q4}^3c3yWEdQXyWF4Q9a2o4`?ou9Oedj&cuYp?b$+MF zMvbBeHcq-f-~DmyMVBBXE#Z=hM2go1U#y?CR~2AX`;!EGMoX3fd2>s~&Ubb#Ezdi1 zBq%~q2|~rlp7pbl-8T5NLsRVmQnO1u}3j3K`MR!gGM0Vi*~ z%~<_RasF`m=X=Pk@ndAWxU)V6UEqag4o8+RjSCC3t`aht4TRbzu60D^iBI{&)_ZGk z!x?+I;W|aH3eP7#=EOw6UIY@INdk5fE||!Astf;F#_-+@r-HtLQ)z2s8P!d6eIK)~ zR@yfYcRRJ}v3>kXsQ6HJd>993IDfh?+B7ZNW>3zU%XxHkfcA^l-y*`XJw5x;AO;=H>?noX=;yw!Bw` z%{o5iAln`$c1$%c-nXskw3L>P%A48V3G%k8k2+Qg9tDvyft?))zxTy%Nn0Y;e(W>#Us=p|7w1tUs;?DUL*jR8&T2?@*w( zm~G!8RBF|EpFoVu5t1K0)0SRUg(}}MU0x;@m(n48NMzQ(AZ57c@8|pQSTEt1GX3qd8vrMzQh3$CRv#bNk-!OPPpe z5FD;ZX?ps%ha%;jbS8THwMZkE9jG8tYdi^xtpha4A-h= z_~FQzI^?EGM5mewcxR~ATPd~(li}tUcEPyJZN&vN->>3np1U;IrCH=Ey29DlMRv=C z*%;zgr{Bn~LHO-EE$7xKpHrIqs!DPFs)*yPUw7B|X@m*oi}vT9uDi6XiK;$Lg2CRJ zlTnRQhIVg;x)|;QHw=p>|N(~_03Ro79=_E z#=AbU;AMuq$IdNMV^3};nW1tvw{0oa9DA{B+Sxr`LiDiuWVYcAP|Ub*V8@15FAG}9 z#V_W9nKlowQ;C~36sh-nw$8_@O+#g>=&AUsTAmi^9J-nD^Ab~Keq~K>FAlSkxSO?) zt6n-^y%kq-F(S3=Y}k-|!Slb$?Tj~`>ZT=T4CANu4~b4XZh0P~pP1Pbr+<@P8cHP{(SY{DUfOPEyrxu_HZD!%cq3H3t>4?`sXzK+=$-kS5+pJSFX3~8@vU< zPZ_uo@KbZ(V1jIZYI@2tV#nxN-8UnnPEDyVmbp!w?^dFS<&zAiy+_+A-#qdHX4=v2 zJ64|XY@Dfhi{0%K#~mv&;W)j#r7OzdTw9abtFxtP;`nNTsI^`jT{JG3Td@;{ab4Yc z=6)bF`2z437ZKe`{Bn#ge|KONC#1Hv5FC!-iakiq?v&L0!WJ7E(Ks~7r=x4QJeoU1 z`fOY3F`xzmb_2d2jx?FRFD6n?o+zGfc5fg8H|AZ?C1{A)EYJO7jI59tf8--i4{$0| ziBqfF^E3)KPp$9lX3RN@`g;br_*_D8Vpb+92(e*G3FkSJ_>}A}WRxr4h6mVg-(#FR z5Yw1bJCgYNEFO^#za5sF<^h^>8OM*{~ZPC$`z5bbH*kxVNose3-5%{UePBE{-Nu zfHdmV3-(&dxHyyemFzU~3qN1RH^!dzJ9cYpH{~91ee>X&2!->Hir?S=Z z9DQ4BgcGy*BCYG;`pf!K%8>J+t0^hF81+W!0rXRv=Dt+xcKMNn;rH~{FZGjs>QcKz zx`vZbH4%x1ab(6-`F2gEVZ`UoxziWNuJT{;Jcpi*-Q7zS11G>$Dq&w+@E!vstCYrj zjxCwUs@6rXH2MLwmjzK*KH1+3k4SP2IMD2GyZy4uBdFA6hDa%G&18F4G6k2}t6%eC{*VUD9}Git(?1SijduM{5FnfHg^S)NkLy6}9u8K$Wg7l$#ozc3eo zOCAYBF{Zk%X?m=Qm~u!Da6aH?^qgoerGhOO_*%NV6P|1}J;;T#HAYi^Bx(_r47$w! zL;=v7J6msbP{KjXxWES~La}PQH|JM(tqj$M>ggCcP6_6z_owbv(R7k16!U#)nFbv4 zA%}_U$7q@B&Gn`B+TjK0utJGb;(4mXn75yRl_gG==cgjKPo3O4GG23}u5IL_X|%F~ zPzE;H1qv%*GmUu>samR(}qLn3XWb?BDqgwS`rvQrHZ=1`nOYP}U%5=oVc#P9# zo%1wux-~C(PoSK26jgJ)|Ge&MdmwHY9>*IO_sw_jkzkk#H|zi{>5)6R$^8h)Xik^* z`YV)JvD?cpS|C6_Xl$G`TxP+E@lLxtwM3W0${Fr&Ju?>w-FV89ks(bpjHc|+Gwr_> z&>40M)%EbbTjlmIPwc+!d2tjzHgWCPz#I2h#JH(pCr=x)?rwA1WtBSR;3#H;)uNZc z{3y^MPTnW-z3`jw@=MPJdZh_>MTNetnDRXIe5$xE+%5SG5d^01`Vx760t2I=G(x<`PK&B94V~esDyz-W{Lqt%=7oX7#Te9-yDZ+~SGyHOf4n7^8p5 zSuH#A97gA1Db}+egmTY`M@}gVCZB#YG-@_hU!<9_JFeB2-cAX}Ut{d5i)#dGl5#so zh7C1A-(UG;8wll)8|%WHjsb;b1!#8dS-Z_Z29eGfx_X6U@J+;Rc*n?k+^v9C11Swp zp2A>%Bj9M0)uUqnUf+gheE19uyMSwcE(U+8=_NTf64*dT|U2S0R7 zQ6X`!f0i8MQ$cUD%O@;*_R0}-RrEJdkx-L9w_*p4j{ z*QX3ToB?b-z6A%jlel{OvQwg56a7r<*>X$<7NAZ1Rgyl&sLLprp zr@#4t46?^(!qOQ;X`$RY8NoX!>H*snGTohWNJ>vpv-3XiO|)KOUj-#9>;P^f*rQ#c zptcAo{`jYa7o4|OD;Z}sJ)e5{Ftyw0VTF#sWrm|pilTAmc^mb(26Lp*!wkk4>=-##Rv;;-KtXCOefjTaqm^MjTtV?Aut{P#7@`jb)TFwlUQ(mNERU+tc%X zJ-_Fi!|CfkFE7`9-Jk1ozpu~w{*Xg~b2;VmE5-cUmpLEq@k9t0He`tawQ2^+&J4XA zm)iK@;h3&v%N!oz30ZZs?pwK4o$Rgi=WgRG;8P}->r#$t&S(rJ4WH6it~$U^nCPZT z^Jg$mQ>MdY2dzVm)V!8}yMcU{%$W4g%|>bpWQ4B#QYR6&i7G-5Sai_>9c zOsNrdxWR#6s(nLqfo~M;Ru*D(z!}v882wR9Y4N^c%h)+`t#{CFZ(=snPMW`=UX&^! zj`@Kef`>Y=QC!g^D;JX*%gD(>+2EkZs+#1Wahm+uA^5b8M~)~4dn1Es2q$Uj`DCN% zi}~G#(!Yh~3eU}}WOl>gCL;ZKL?FIsscuh6BH}rogi3R1nF%GSY4uo#@WMJHdeeVF zDZ;yXg)~Rd7h${y<{73hU~nbXua8qDkg;QDT$~SZd_D&{!ZRCft@V<(R#6+_h;%ImNp z{t496XW6qr6tmcS)%S}HGPardlp-s04syF(W9927 zs8UdLeagJ}Qf3^&rKk~(=^w1!^+Z#}m$HbM4))3q$a$ws`}+$yvGPIx2CHvg)nuwm$x2N}t}D7gh4&OK=+ik%BYg+O5m2_isZ{n?BGpnt zGQpsyfUoqiP zQ5^d=wgQIA+~!&MrJ#E<)Sf(bJzLT%>*@C9-dU_lZ^qKy*`#1(;kmE+O9QYQ54{t0 z8&dQ%kN-Y7&{*oUrGDH!=i848^Klc%Ry(5$j5Q!cz47#m=n$VYeK$j4^f4zXV5%~ z*rk95^Q;uaBgD%I(!g$$P=K6OIpIc}seyG9IQq&oJoUn!FiGD{a?qb$`CuD7C8GWyQvDCA6gGV}b(B{c5mnrA>pB<|7a*AvB6 z*jsO?v#0~g)*mij2cD&s8ru@l@&Y+I2B-|mJtwwa$aQ#1N2O4TSH;PtjUY9G&T+Q* zrLrv;gnuf)Hl}A5jy@L)L1{67)sf(<|D$;|#N`69`}(_y$t@3U3_3WQ7e#|Yi$Td>W ztFq(c6{`cbfZu2GG5ySL24~@W6e!&ZQm(T91xvVTKS;ZDZb1i59Hg*jJ4b34m3d*b zl~2SG_X#adw81LRrhk;$`w4vQpnGZ2y2&4u|L?A^H)Er)F&|mo)^%70$wK>H>c2Pu z{+Xe7G!%jbHVQ^@@IC;`zNF&pmZ7rqhokjp`S0bVmpOgB(M2yiFtnUdJIl=4cW*BL zgq%rZ&Nhq_yeoL|@f<(KwiXoR5*89;kL9Q1>40ZuqDJ~-J0Po?dHH5wwD?Y1rFX14sLLbfT z++5<549)jCx{6~{hRAXzNNC<4yJux`8Lq#-N&~U^x z(qy0yXD2(3OS<&|SaU|=S^F%pAMY;>Mc*fN{7!#I$n?mwQJgYu^sn_x7xAA!HdBL3MW^RtYVBV;t{{cxG&{nP7JQ*1Htso zYlhGs;oat=~R{ZQPy^9Uq@6Afb96A8Xd=o4+y) zG$#(>*N~EeztzFC8Hz@}zluuJlUB)D6b%MOj^$v`ub{3sNN!>Q$*Uamr47g)2=Hgj zxulxZ(GR8%*2UdwCjWM7l#1lpGoMj<=|P3f5RCtnQ_f*p@O5}?Uo1P}GI@?XXqcmk zfn71 z*C9GidPLpmiv6z?D!+$VA@tV*jA+CKBy-_h4^2;6mW*SpdQ0;+qK+=(cbr-Na#XF;FXQ_M(syn= zMna-_CUoe*HEaPCZqHya;t82+cC8I)3Z4t-qWX0%-%!I;`%y{P{m8$vWsXZwRVM&d zn!!Mqe|B(oP(9w{L-pJ{-&^!40N(eK=2z7)%gf~X&ZvZlKlW&a9v)c^0)j3h3mBOb z59_)Sd@tXurI!iWBB~~7&S&Y*gwRDpLFm){@Ww!vp&+yUAn(E_j$hAM{{-mO`2b&= z3I1SVOKiizk)R_uG-eo$`5d(59OA1HkzfQ2q9Kr%`V@U_`Lx{bc`TYAGq>CGucV#p1RNg84wrObcqxSZ;83k$YDM9!Kr9gu+DqDN&NcK1I!Mb)56 zscb7OR6Qa|0>-WAboC2J?WOq#67iTHgNr$St7pf+y_{QMp1JtU_c5L6k@f}cO{{;7 zgz_1|&oBr#&HMP{)Z?QHQ=kB@^h?JY?e0H>1(`}smzPnk*W`$QGwA4leTwXDxff!*e>Q$~b-`P8wa+&#R^Ng8NhMM2ui9(m9&oN7JdhM+Ki&E7a{eYRa6ZSk!pu*ahApa? zg)K${9A8VmqD+k;H(a11W3h|qbvXbk5-{b_2FTjnSR-}V-1M=3e*$J0M~FtkIWabR zFDV{W9Z<<|RYBCx2G1S+zdve?->lD1#}le_m{w$d36j{vJLwg+u)wG{3GLQKu9j#L4g)l5|89(ZHufdJ<9M^Ye+Z*WUR0h|Vco9iU@)wgx{ z^w&aHheQN@(~=Rokj0T4ul*fNy90UZHvp{N_U=gI2el|uWzy2L<>Bb@h7-%aU*xN; zLuqI8Dwo*Mj4HNY^9TQiJ9L=NP5YOu8}Lnpcn+izI+4d!zRC}!da@kFmqb2 z&W-xr^($25h35&m<=tcjCnFSotYgfEC^dqU_osv4yCloQF=oYpeM4rOl;#gG$T@( zIhr}e2?0DRjnAGU?jlBmza2b*;moXBrJ0+(E|~wU$VPdanhH?~rG$Bw&HsOK!N2&T z$7ChH{QF96%4L5m0JF(!9&4bk&K%Wi4ecW;kw2%7p=iUWwa+4JMtB#~i{_9X* zttmWcm-J5K&O8Nyfh|wC-4?W25x9<`b8`q!wwR094ll;4Y}QIzxeUVVM9qe6y}tTB zeh$*=w3U}YmApajE#kS#N|lwF#ZvAS5V9h!F6y6sZ?8BCuJgOKs@#GyWnrE^z_X)xH zbt|Jx=mKi`S%!^-YVElnwSe93G|^7?KP%JmAFBCZ_rRJSL-!c|=RKBw6x>e{vS00> zK|mHBW!of;)xlmq_pUpW2t2^p5s=&+Gbay2+Ybb$&&Sk6yR&Q*(@`u~ZW0uLAnv7+BM>=ZRr1o&S6Y#Vf1Lg0ilE_lCWf`Zti)e~HT ztS+u((awb}Mj*hP91!74|?fo;Wct@bPz3`~R(l*t53?8jg0W{v`{3SabKoDbcDDt4T?Og!&$KRY-n+CL=Y(Y<1E7Vg46wVmZ{ad0pkprOd zHL1XhTd)<{i+H}>`3?4B>~`QRe?uB#q4*$TvAXUZfoN9 zU{m;UAQmUs^4}}TPg#M!WpCu+#&4}^!bU9?WABMUJOe?(0 zFR@Yf3cof5cg=6wVe|K+U!N_G-JmbW;$fI1?d`Pdk;?CPAe;dMrEw20w!M7HiS{w( zFaXBT;qcPUfo-+4JfsK)D8@SO!J{*5;lpJ*pS*~#6@e%UATrG7=AL>}qCZ0#$q%$Y zo^Eg$pcx{!-(GhqZQBTrJAtte-(HPCS{eXt0d^c)(%>Q!xuphLnpcV(Q!~>Us`ZdC;c0{1NU;G12!V` zs@tRW57Lb1iSo1+G1zFab{yO$;nqOf;<<%17OZAj7`dE{_&<(51JZ2- z(!En0;SMyh736(k*)ZJa&gk-|`GRB3Jn zYXP$~449?7N||9k``%yM!NH?w+_TBkWd7oUX!qs~)Z#$+G0xDo^1i+Gc8QSm^T4N= z^I6UV$$EiFz6Ngz#&d=N)^{~xOuWy7cX;FiFwZ(kx-oKxC*H%Y zAWA!h^Wjc*A zR+hYXk#J~-{7-u7zx%KZge`uDq2hcLc2~3pT9s!lLYF5X5d<+Mksxd6>gs236(nnS zvDeavJ8>;GC4DXH4X*?L{-TsUl56saU5pN35eu{|f3~)!2ec-ysBaKhQ-oN_RgkV7 z_o|jY*rwiseA(Chc>O~*hK2jz^P_02Wbm4nv*bygP&hcb3TO>3f>*5}%;yxZixq&} z^xvKh`BNQ`qecDsb{inCOhOaxRULgdYS&xYZe-#oCj?}}fO!)B!>>5SY?^A)BPtZw zBLbLPaM!-yY6lGv zk4}>|hYO3yoDM^Y2PU^9Q*7dO+Py*$jeqg}8bZ9kZ`#B+sdx6&h5vvvU|%{kAM9%Zv!@PZGoF6f1Uv^B<2y}M`T3)5C8dwS z`rK^=8+9F`cO*OPR4KN{4Ez`j#dlwwi3D7=>>T=l>(09LR;P0vhz>qJ0VcwYatZAV zg12e3+Z9}nQbO=mY;c>0PjEU4w|5M{2yIa+uL>Ai!v&U5?7a!P0yAZ<({}^a>w8pv zDy#|3`B3l;rdK>$%!#z(bEM+aUr7BwB&}_`HT?RSS^`5t{>G)zt<6?Fl;=f(CYocw z!D}i7Fq0(J_?gZFE56C5fL#;!BY3`s;c@(lVDssOk_{45PfTr}zL+@?Y-Hc*j3(IQ z>CESas5Fsgfa=<5U~&3|Xkp7p(Bd!LX3AYqt-bAZOgw)N3Mdx9gI zdm2HQKQUX-tg11FYbfrvq&V0@d-`Gm$lPKtUJh60h81ha$;WB4aXb`k$GjCkBxc_o z!g=$C>jo`~S)$2@s^RC!Y|HY^JEN34J1<_QsPjbucRySmG-pyu4$Hkb1cm_0JeJyS z;T69Bj*nBxJ-wFXa+Lx|h@R-W;NaQ{1Q(qcZ{AvrF`Bb5-bDzUWu7tQ|D z1If_c0|wRk49h(s%z?Y7{Ai+1x+J>}*9W|vKzx*v9<~jc>L2C*5uLVv3I?=-l<^NE zjtw6S#`n32*rO$U5*z6a4VPznEuc#Y8en_z`K1`*;SqGEodr)gJ5NDCx*uuIs5|tr zrf9ud+1{xP)xq@-VpI5c4oBfPnBUQQOX%UDa+Xo7axBf?hOEwTHG~cWF#4*}gx^mr zfjMZFJKOdf3x;3h??==zyqK{AA^md4B9-n&Pl>N<{Q=z4wIylK9ArsP_yo)o7+M;{ zf<}tJTiI~_cL3ekDV$9&!HC&*#@r@ z)!oTn0|LlcJtp7Mh6ohIYq+~xtcnbFH&u7c{O!<)UNuh6Sm&2HFwp7`0z-_2Wptp8aXJBRDNsvTwQs$!)}u05mA3E8Jy z%v#H$_=9v8J}|<&Rueo!q`8z!=&Wrodrf>13LP?9E{5A2Kf7yIV^y`S1RqP?C;@`z zYCm=j{?1}_c2^Gd9shwtR8&CJ<7>+bE5D(M*3cw>x(a*(2&@+=O$2;y6H1OOjaZkbbK=p^ zV7!Zfo&}kp|J4-(8ph@Be-)HTZaU2AB7J!Z7TkP2wSMzxr50<_kT5?BYgqr=32U0> z%;qD<41}T?Kq{?<-A*4+NUXm#0mpD&1DU_lYi<&v7H`6gCb=6kyat?DhbE3EcW%^H zCa-JzRB{FuOzHJYKZ#$str@w{K23N({BfASKxQ7;3_+!^LW8xEFw4lM?3%K#sI}he8|)dL;mO zXwYFzq&?1cQ~A(Swq3H%_j+CYR#WwL5EH=Z-&vs0pN?Xi8u%(PxEg!--0A0gw6N}l z-K0MAI$jg-SC|4DA3kRecd3k|tOCLrXNxNVXCw!OeDm1K zn-Y}DFBo_5Q)z%mXB=a9arTV4i@WCB(Ac=D?(B&iOUc(Ck>Vr{UK_Y#CDpKf$4YNC z!Zl~iAY@DXS_W&K_wMBN-R+)V((*78UWjMm-g}$(H8gykv33AQzgO3`ei6ocM&V)71A2>Si(O^})2Wyo5*!;n} zfY)ART&~w|GoF0^8g~2l8gFZD8{=3Q>|*%!{1u71d<0V3&$Xe1Za@@ICHR9=5zOWO z0#|Du^h-sL2Bk$lPcch/etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /artifactory/webapp/ redirect; - rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; - rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; - chunked_transfer_encoding on; - client_max_body_size 0; - location /artifactory/ { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8081/artifactory/; - proxy_set_header X-Artifactory-Override-Base-Url - \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } -} -EOF - -HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') - -if [ "${IS_PRIMARY}" = "true" ]; then - NODE_NAME=art-primary -else - NODE_NAME=art-$(date +%s$RANDOM) -fi - -cat </var/opt/jfrog/artifactory/etc/ha-node.properties -node.id=${NODE_NAME} -artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data -context.url=http://${HOSTNAME}:8081/artifactory -access.context.url=http://${HOSTNAME}:8081/access -membership.port=10001 -hazelcast.interface=${HOSTNAME} -primary=${IS_PRIMARY} -EOF - -cat </var/opt/jfrog/artifactory/etc/db.properties -type=mssql -driver=com.microsoft.sqlserver.jdbc.SQLServerDriver -url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository -username=${DB_USER} -password=${DB_PASSWORD} -EOF - -mkdir -p /var/opt/jfrog/artifactory/etc/security - -cat </var/opt/jfrog/artifactory/etc/security/master.key -${MASTER_KEY} -EOF - -cat </var/opt/jfrog/artifactory/etc/binarystore.xml - - - - - - - - - - - - - - - - - crossNetworkStrategy - crossNetworkStrategy - 2 - 1 - - - - - remote - - - - local - - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - ${STORAGE_ACT_ENDPOINT} - ${STORAGE_CONTAINER} - - -EOF - -HOSTNAME=$(hostname -i) -sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties -sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' -echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 240)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory installation completed." > /tmp/artifactory-install.log diff --git a/JFrogContainerRegistry/AzureResourceManager/scripts/install_artifactory7.sh b/JFrogContainerRegistry/AzureResourceManager/scripts/install_artifactory7.sh deleted file mode 100644 index 77a62b7..0000000 --- a/JFrogContainerRegistry/AzureResourceManager/scripts/install_artifactory7.sh +++ /dev/null @@ -1,178 +0,0 @@ -#!/bin/bash -DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") -DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") -DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") -DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") -STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") -STORAGE_ACT_ENDPOINT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_ENDPOINT=" | sed "s/STO_ACT_ENDPOINT=//") -STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") -STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") -MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") -IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") - - -export DEBIAN_FRONTEND=noninteractive - -#Generate Self-Signed Cert -mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ -openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" - -CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") -[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory - -ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") -[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory - -#Configuring nginx -rm /etc/nginx/sites-enabled/default - -cat </etc/nginx/nginx.conf - #user nobody; - worker_processes 1; - error_log /var/log/nginx/error.log info; - #pid logs/nginx.pid; - events { - worker_connections 1024; - } - - http { - include mime.types; - variables_hash_max_size 1024; - variables_hash_bucket_size 64; - server_names_hash_max_size 4096; - server_names_hash_bucket_size 128; - types_hash_max_size 2048; - types_hash_bucket_size 64; - proxy_read_timeout 2400s; - client_header_timeout 2400s; - client_body_timeout 2400s; - proxy_connect_timeout 75s; - proxy_send_timeout 2400s; - proxy_buffer_size 32k; - proxy_buffers 40 32k; - proxy_busy_buffers_size 64k; - proxy_temp_file_write_size 250m; - proxy_http_version 1.1; - client_body_buffer_size 128k; - - include /etc/nginx/conf.d/*.conf; - default_type application/octet-stream; - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; - sendfile on; - #tcp_nopush on; - #keepalive_timeout 0; - keepalive_timeout 65; - } -EOF - -cat </etc/nginx/conf.d/artifactory.conf -ssl_certificate /etc/pki/tls/certs/cert.pem; -ssl_certificate_key /etc/pki/tls/private/cert.key; -ssl_session_cache shared:SSL:1m; -ssl_prefer_server_ciphers on; -## server configuration -server { - listen 443 ssl; - listen 80 ; - server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; - if (\$http_x_forwarded_proto = '') { - set \$http_x_forwarded_proto \$scheme; - } - ## Application specific logs - ## access_log /var/log/nginx/artifactory-access.log timing; - ## error_log /var/log/nginx/artifactory-error.log; - rewrite ^/$ /artifactory/webapp/ redirect; - rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; - chunked_transfer_encoding on; - client_max_body_size 0; - location /artifactory/ { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8081/artifactory/; - proxy_set_header X-Artifactory-Override-Base-Url - \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } - location / { - proxy_read_timeout 2400; - proxy_pass_header Server; - proxy_cookie_path ~*^/.* /; - proxy_pass http://127.0.0.1:8082; - proxy_set_header X-Artifactory-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port/artifactory; - proxy_set_header X-Forwarded-Port \$server_port; - proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; - proxy_set_header Host \$http_host; - proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; - } - -} -EOF - -HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') - -if [ "${IS_PRIMARY}" = "true" ]; then - NODE_NAME=art-primary -else - NODE_NAME=art-$(date +%s$RANDOM) -fi - -# Java options -EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") -sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml - -# Set MS SQL configuration -cat <>/var/opt/jfrog/artifactory/etc/system.yaml - ## One of: mysql, oracle, mssql, postgresql, mariadb - ## Default: Embedded derby - ## Example for mysql - type: mssql - driver: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository - username: ${DB_USER} - password: ${DB_PASSWORD} - -EOF - -mkdir -p /var/opt/jfrog/artifactory/etc/security - -cat </opt/jfrog/artifactory/var/etc/security/master.key -${MASTER_KEY} -EOF - -# NOTE: Path is changed in Artifactory 7. Non-HA configuration -mkdir -p /var/opt/jfrog/artifactory/etc/artifactory -cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml - - - - ${STORAGE_ACCT} - ${STORAGE_ACCT_KEY} - https://${STORAGE_ACCT}.blob.core.windows.net/ - ${STORAGE_CONTAINER} - - -EOF - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem -cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem -rm /tmp/temp.pem - -cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key -cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key -rm /tmp/temp.key - -chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* - -# start Artifactory -sleep $((RANDOM % 240)) -service artifactory start -service nginx start -nginx -s reload -echo "INFO: Artifactory installation completed." >> /tmp/artifactory-install.log From 83178d67bdfabd3e173fb9d4aab8664a072f8278 Mon Sep 17 00:00:00 2001 From: danielmkn Date: Mon, 24 Aug 2020 10:53:17 -0700 Subject: [PATCH 17/20] Azure, Artifactory and Xray templates. Major ARM template refactoring --- AzureResourceManager/Artifactory/LICENSE | 201 ++++ .../MP_submission/artifactory-pro-7-2-1-4.zip | Bin 0 -> 15560 bytes .../MP_submission/artifactory-pro-7-4-3-2.zip | Bin 0 -> 19389 bytes .../MP_submission/artifactory-pro-7-6-2-5.zip | Bin 0 -> 19568 bytes .../MP_submission/createUiDefinition.json | 528 ++++++++++ .../MP_submission/mainTemplate.json | 979 +++++++++++++++++ .../MP_submission/nested/MSSQL_deploy.json | 109 ++ .../MP_submission/nested/MSSQL_existing.json | 76 ++ .../nested/Postgresql_deploy.json | 178 ++++ .../nested/Postgresql_existing.json | 76 ++ .../scripts/install_artifactory.sh | 214 ++++ .../scripts/install_artifactory7.sh | 267 +++++ .../MP_submission/scripts/version_selector.sh | 13 + AzureResourceManager/Artifactory/README.md | 81 ++ .../Artifactory/azuredeploy_ms_ps.json | 982 ++++++++++++++++++ .../azuredeploy_ms_ps.parameters.json | 68 ++ .../Artifactory/images/HA_Diagram.png | Bin 0 -> 107764 bytes .../Artifactory/images/Parameters.png | Bin 0 -> 103748 bytes .../Artifactory/images/add_licenses.png | Bin 0 -> 295712 bytes .../Artifactory/nested/MSSQL_deploy.json | 109 ++ .../Artifactory/nested/MSSQL_existing.json | 76 ++ .../Artifactory/nested/Postgresql_deploy.json | 178 ++++ .../nested/Postgresql_existing.json | 76 ++ .../scripts/install_artifactory.sh | 214 ++++ .../scripts/install_artifactory7.sh | 267 +++++ .../Artifactory/scripts/version_selector.sh | 13 + .../vm_install/install_pro7_to_vm.sh | 51 + AzureResourceManager/JCR/LICENSE | 201 ++++ .../MP_submission_6/createUiDefinition.json | 332 ++++++ ...ontainer-registry-artifactory-6-16-0-7.zip | Bin 0 -> 11289 bytes .../JCR/MP_submission_6/mainTemplate.json | 766 ++++++++++++++ .../MP_submission_6/nested/azureDBDeploy.json | 96 ++ .../scripts/install_artifactory.sh | 206 ++++ .../MP_submission_7/createUiDefinition.json | 340 ++++++ ...container-registry-artifactory-7-2-1-7.zip | Bin 0 -> 10710 bytes ...container-registry-artifactory-7-4-3-1.zip | Bin 0 -> 10739 bytes .../JCR/MP_submission_7/mainTemplate.json | 619 +++++++++++ .../MP_submission_7/nested/azureDBDeploy.json | 96 ++ .../scripts/install_artifactory7.sh | 178 ++++ AzureResourceManager/JCR/README.md | 58 ++ AzureResourceManager/JCR/azuredeploy.json | 622 +++++++++++ .../JCR/azuredeploy.parameters.json | 27 + .../JCR/images/HA_Diagram.png | Bin 0 -> 107764 bytes .../JCR/images/add_licenses.png | Bin 0 -> 295712 bytes .../JCR/nested/azureDBDeploy.json | 96 ++ .../JCR/scripts/install_artifactory.sh | 206 ++++ .../JCR/scripts/install_artifactory7.sh | 178 ++++ .../Postgresql/azurePostgresDBDeploy.json | 175 ++++ .../Postgresql/postgres.parameters.json | 31 + AzureResourceManager/Xray/LICENSE | 201 ++++ .../MP_submission/createUiDefinition.json | 315 ++++++ .../Xray/MP_submission/jfrog-xray-3-6-2-0.zip | Bin 0 -> 8490 bytes .../Xray/MP_submission/jfrog-xray-3-6-2-1.zip | Bin 0 -> 8633 bytes .../Xray/MP_submission/mainTemplate.json | 400 +++++++ .../nested/Postgresql_deploy.json | 161 +++ .../nested/Postgresql_existing.json | 54 + .../MP_submission/scripts/install_xray.sh | 35 + AzureResourceManager/Xray/README.md | 101 ++ .../Xray/azuredeploy_xray.json | 389 +++++++ .../Xray/azuredeploy_xray.parameters.json | 63 ++ .../Xray/azuredeploy_xray_vmss.json | 400 +++++++ .../Xray/nested/Postgresql_deploy.json | 161 +++ .../Xray/nested/Postgresql_existing.json | 54 + .../Xray/scripts/install_xray.sh | 35 + .../Xray/vm_install/install_xray_to_vm.sh | 42 + 65 files changed, 11394 insertions(+) create mode 100644 AzureResourceManager/Artifactory/LICENSE create mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-2-1-4.zip create mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-4-3-2.zip create mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-6-2-5.zip create mode 100644 AzureResourceManager/Artifactory/MP_submission/createUiDefinition.json create mode 100644 AzureResourceManager/Artifactory/MP_submission/mainTemplate.json create mode 100644 AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_deploy.json create mode 100644 AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_existing.json create mode 100644 AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_deploy.json create mode 100644 AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_existing.json create mode 100644 AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory.sh create mode 100644 AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory7.sh create mode 100644 AzureResourceManager/Artifactory/MP_submission/scripts/version_selector.sh create mode 100644 AzureResourceManager/Artifactory/README.md create mode 100644 AzureResourceManager/Artifactory/azuredeploy_ms_ps.json create mode 100644 AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json create mode 100644 AzureResourceManager/Artifactory/images/HA_Diagram.png create mode 100644 AzureResourceManager/Artifactory/images/Parameters.png create mode 100644 AzureResourceManager/Artifactory/images/add_licenses.png create mode 100644 AzureResourceManager/Artifactory/nested/MSSQL_deploy.json create mode 100644 AzureResourceManager/Artifactory/nested/MSSQL_existing.json create mode 100644 AzureResourceManager/Artifactory/nested/Postgresql_deploy.json create mode 100644 AzureResourceManager/Artifactory/nested/Postgresql_existing.json create mode 100644 AzureResourceManager/Artifactory/scripts/install_artifactory.sh create mode 100644 AzureResourceManager/Artifactory/scripts/install_artifactory7.sh create mode 100644 AzureResourceManager/Artifactory/scripts/version_selector.sh create mode 100644 AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh create mode 100644 AzureResourceManager/JCR/LICENSE create mode 100644 AzureResourceManager/JCR/MP_submission_6/createUiDefinition.json create mode 100644 AzureResourceManager/JCR/MP_submission_6/jfrog-container-registry-artifactory-6-16-0-7.zip create mode 100644 AzureResourceManager/JCR/MP_submission_6/mainTemplate.json create mode 100644 AzureResourceManager/JCR/MP_submission_6/nested/azureDBDeploy.json create mode 100644 AzureResourceManager/JCR/MP_submission_6/scripts/install_artifactory.sh create mode 100644 AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json create mode 100644 AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-2-1-7.zip create mode 100644 AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-4-3-1.zip create mode 100644 AzureResourceManager/JCR/MP_submission_7/mainTemplate.json create mode 100644 AzureResourceManager/JCR/MP_submission_7/nested/azureDBDeploy.json create mode 100644 AzureResourceManager/JCR/MP_submission_7/scripts/install_artifactory7.sh create mode 100644 AzureResourceManager/JCR/README.md create mode 100644 AzureResourceManager/JCR/azuredeploy.json create mode 100644 AzureResourceManager/JCR/azuredeploy.parameters.json create mode 100644 AzureResourceManager/JCR/images/HA_Diagram.png create mode 100644 AzureResourceManager/JCR/images/add_licenses.png create mode 100644 AzureResourceManager/JCR/nested/azureDBDeploy.json create mode 100644 AzureResourceManager/JCR/scripts/install_artifactory.sh create mode 100644 AzureResourceManager/JCR/scripts/install_artifactory7.sh create mode 100644 AzureResourceManager/Postgresql/azurePostgresDBDeploy.json create mode 100644 AzureResourceManager/Postgresql/postgres.parameters.json create mode 100644 AzureResourceManager/Xray/LICENSE create mode 100644 AzureResourceManager/Xray/MP_submission/createUiDefinition.json create mode 100644 AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-0.zip create mode 100644 AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-1.zip create mode 100644 AzureResourceManager/Xray/MP_submission/mainTemplate.json create mode 100644 AzureResourceManager/Xray/MP_submission/nested/Postgresql_deploy.json create mode 100644 AzureResourceManager/Xray/MP_submission/nested/Postgresql_existing.json create mode 100644 AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh create mode 100644 AzureResourceManager/Xray/README.md create mode 100644 AzureResourceManager/Xray/azuredeploy_xray.json create mode 100644 AzureResourceManager/Xray/azuredeploy_xray.parameters.json create mode 100644 AzureResourceManager/Xray/azuredeploy_xray_vmss.json create mode 100644 AzureResourceManager/Xray/nested/Postgresql_deploy.json create mode 100644 AzureResourceManager/Xray/nested/Postgresql_existing.json create mode 100644 AzureResourceManager/Xray/scripts/install_xray.sh create mode 100644 AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh diff --git a/AzureResourceManager/Artifactory/LICENSE b/AzureResourceManager/Artifactory/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/AzureResourceManager/Artifactory/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-2-1-4.zip b/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-2-1-4.zip new file mode 100644 index 0000000000000000000000000000000000000000..6f922589790718b99a1cf785b197720ab34f830d GIT binary patch literal 15560 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 /var/lib/cloud/instance/user-data.txt" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('scaleSetMemberName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[resourceId('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Compute/virtualMachineScaleSets/', variables('scaleSetPrimaryName'))]", + "[resourceId('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "plan": { + "name": "artifactory-vm", + "publisher": "jfrog", + "product": "artifactory-vm" + }, + "sku": { + "name": "[parameters('vmSku')]", + "tier": "Standard", + "capacity": "[parameters('nodeCount')]" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": "250", + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nDB_TYPE=',parameters('db_type'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('artDBname'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\nIS_PRIMARY=','false','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicMemberName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolMemberName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolMemberName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipMemberName')),'2018-07-01').dnsSettings.fqdn]", + "type": "string" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_deploy.json b/AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_deploy.json new file mode 100644 index 0000000..2a96758 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_deploy.json @@ -0,0 +1,109 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "artifactory", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "artmssqlsrv", + "minLength": 1 + }, + "db_name": { + "type": "string", + "defaultValue": "artdb", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "db_edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "databases": { + "type": "object" + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + "rtdbCollation": "Latin1_General_100_CS_AS" + }, + "resources": [ + { + "name": "[parameters('db_server')]", + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "location": "[parameters('db_location')]", + "apiVersion": "2020-02-02-preview", + "tags": { + "displayName": "artifactoryDB" + }, + "properties": { + "administratorLogin": "[parameters('db_user')]", + "administratorLoginPassword": "[parameters('db_password')]", + "version": "12.0" + }, + "resources": [ + { + "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallrules", + "location": "[parameters('db_location')]", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "[resourceId('Microsoft.Sql/servers/', parameters('db_server'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "[parameters('db_name')]", + "type": "databases", + "kind": "v12.0,user", + "location": "[parameters('db_location')]", + "apiVersion": "2020-02-02-preview", + "dependsOn": [ + "[parameters('db_server')]" + ], + "tags": { + "displayName": "artifactoryDB" + }, + "properties": { + "edition": "[parameters('db_edition')]", + "maxSizeBytes": "1073741824", + "collation": "[variables('rtdbCollation')]" + } + } + ] + } + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[concat('jdbc:sqlserver://', reference(resourceId('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" + }, + "dbUrl": { + "type": "string", + "value": "[parameters('manual_db_url')]" + }, + "databases": { + "type": "object", + "value": "[parameters('databases')]" + } + } +} diff --git a/AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_existing.json b/AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_existing.json new file mode 100644 index 0000000..4d7aa07 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/nested/MSSQL_existing.json @@ -0,0 +1,76 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "artifactory", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "mssqlsrv", + "minLength": 1 + }, + "db_name": { + "type": "string", + "defaultValue": "artdb", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "db_edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "databases": { + "type": "object" + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + ], + "outputs": { + "db_user": { + "type": "string", + "value": "[parameters('db_user')]" + }, + "db_server": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "db_name": { + "type": "string", + "value": "[parameters('db_name')]" + }, + "db_location": { + "type": "string", + "value": "[parameters('db_location')]" + }, + "db_edition": { + "type": "string", + "value": "[parameters('db_edition')]" + }, + "databases": { + "type": "object", + "value": "[parameters('databases')]" + }, + "dbUrl": { + "type": "string", + "value": "[parameters('manual_db_url')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_deploy.json b/AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_deploy.json new file mode 100644 index 0000000..464ebd5 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_deploy.json @@ -0,0 +1,178 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "xray", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_name": { + "type": "string", + "defaultValue": "artrtdb", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2 + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5" + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2" + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 5120 + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose" + }, + "version": { + "type": "string", + "defaultValue": "9.6" + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7 + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled" + }, + "databases": { + "type": "object" + }, + "sslEnforcement": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "SSL Enforcement" + } + }, + "publicNetworkAccess": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Enabled", + "metadata": { + "description": "Public Network Access" + } + }, + "db_edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "location": "[parameters('db_location')]", + "name": "[parameters('db_server')]", + "properties": { + "version": "[parameters('version')]", + "administratorLogin": "[parameters('db_user')]", + "administratorLoginPassword": "[parameters('db_password')]", + "publicNetworkAccess": "[parameters('publicNetworkAccess')]", + "sslEnforcement": "[parameters('sslEnforcement')]", + "storageProfile": { + "storageMB": "[parameters('skuSizeMB')]", + "backupRetentionDays": "[parameters('backupRetentionDays')]", + "geoRedundantBackup": "[parameters('geoRedundantBackup')]" + } + }, + "sku": { + "name": "[parameters('skuName')]", + "tier": "[parameters('skuTier')]", + "capacity": "[parameters('skuCapacity')]", + "size": "[parameters('skuSizeMB')]", + "family": "[parameters('skuFamily')]" + }, + "resources": [ + { + "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallRules", + "apiVersion": "2017-12-01", + "location": "[parameters('db_location')]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/databases", + "apiversion": "2017-12-01", + "name": "[concat(parameters('db_server'), '/', parameters('databases').properties[0].name)]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "charset": "[parameters('databases').properties[0].charset]", + "collation": "[parameters('databases').properties[0].collation]" + } + } + ] + } + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[concat('jdbc:postgresql://', reference(resourceId('Microsoft.DBforPostgreSQL/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':5432')]" + }, + "dbServerName": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "xrayConnString": { + "type": "string", + "value": "[concat('postgres://', reference(resourceId('Microsoft.DBforPostgreSQL/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':5432')]" + }, + "db_name": { + "type": "string", + "value": "[parameters('db_name')]" + }, + "db_edition": { + "type": "string", + "value": "[parameters('db_edition')]" + }, + "dbUrl": { + "type": "string", + "value": "[parameters('manual_db_url')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_existing.json b/AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_existing.json new file mode 100644 index 0000000..e8757f3 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/nested/Postgresql_existing.json @@ -0,0 +1,76 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "artifactory", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_name": { + "type": "string", + "defaultValue": "artdb", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "db_edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "databases": { + "type": "object" + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[parameters('manual_db_url')]" + }, + "db_user": { + "type": "string", + "value": "[parameters('db_user')]" + }, + "db_server": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "db_name": { + "type": "string", + "value": "[parameters('db_name')]" + }, + "db_location": { + "type": "string", + "value": "[parameters('db_location')]" + }, + "db_edition": { + "type": "string", + "value": "[parameters('db_edition')]" + }, + "databases": { + "type": "object", + "value": "[parameters('databases')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory.sh b/AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory.sh new file mode 100644 index 0000000..12238a9 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory.sh @@ -0,0 +1,214 @@ +#!/bin/bash +DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") +STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") +STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") +ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") +ARTIFACTORY_LICENSE_1=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE1=" | sed "s/LICENSE1=//") +ARTIFACTORY_LICENSE_2=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE2=" | sed "s/LICENSE2=//") +ARTIFACTORY_LICENSE_3=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE3=" | sed "s/LICENSE3=//") +ARTIFACTORY_LICENSE_4=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE4=" | sed "s/LICENSE4=//") +ARTIFACTORY_LICENSE_5=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE5=" | sed "s/LICENSE5=//") + +UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") + +export DEBIAN_FRONTEND=noninteractive + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") +[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory + +ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") +[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +cat </etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +cat </etc/nginx/conf.d/artifactory.conf +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /artifactory/webapp/ redirect; + rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; + rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; + chunked_transfer_encoding on; + client_max_body_size 0; + location /artifactory/ { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8081/artifactory/; + proxy_set_header X-Artifactory-Override-Base-Url + \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } +} +EOF + +cat </var/opt/jfrog/artifactory/etc/artifactory.cluster.license +${ARTIFACTORY_LICENSE_1} + +${ARTIFACTORY_LICENSE_2} + +${ARTIFACTORY_LICENSE_3} + +${ARTIFACTORY_LICENSE_4} + +${ARTIFACTORY_LICENSE_5} +EOF + +cat </var/opt/jfrog/artifactory/etc/ha-node.properties +node.id=art1 +artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data +context.url=http://127.0.0.1:8081/artifactory +membership.port=10001 +hazelcast.interface=172.25.0.3 +primary=${IS_PRIMARY} +EOF + +cat </var/opt/jfrog/artifactory/etc/db.properties +type=mssql +driver=com.microsoft.sqlserver.jdbc.SQLServerDriver +url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository +username=${DB_USER} +password=${DB_PASSWORD} +EOF + +mkdir -p /var/opt/jfrog/artifactory/etc/security + +cat </var/opt/jfrog/artifactory/etc/security/master.key +${MASTER_KEY} +EOF + +cat </var/opt/jfrog/artifactory/etc/binarystore.xml + + + + + + + + + + + + + + + + + crossNetworkStrategy + crossNetworkStrategy + 2 + 1 + + + + + remote + + + + local + + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + https://${STORAGE_ACCT}.blob.core.windows.net/ + ${STORAGE_CONTAINER} + + +EOF + + +HOSTNAME=$(hostname -i) +sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem +rm /tmp/temp.pem + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key +rm /tmp/temp.key + +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' +echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep $((RANDOM % 120)) +service artifactory start +service nginx start +nginx -s reload +echo "INFO: Artifactory installation completed." diff --git a/AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory7.sh b/AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory7.sh new file mode 100644 index 0000000..75bf714 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/scripts/install_artifactory7.sh @@ -0,0 +1,267 @@ +#!/bin/bash + +# Script stdout and stderr are stored in /var/lib/waagent/custom-script/download on the VM +DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_TYPE=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_TYPE=" | sed "s/DB_TYPE=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") +STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") +STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") +ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") +CERTIFICATE=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//") +CERTIFICATE_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") +ARTIFACTORY_LICENSE_1=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE1=" | sed "s/LICENSE1=//") +ARTIFACTORY_LICENSE_2=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE2=" | sed "s/LICENSE2=//") +ARTIFACTORY_LICENSE_3=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE3=" | sed "s/LICENSE3=//") +ARTIFACTORY_LICENSE_4=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE4=" | sed "s/LICENSE4=//") +ARTIFACTORY_LICENSE_5=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE5=" | sed "s/LICENSE5=//") +export DEBIAN_FRONTEND=noninteractive + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +# Install Postgresql driver +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/postgresql-9.4.1212.jar https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar >> /tmp/install-databse-driver.log 2>&1 + +CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") +[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory + +ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") +[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +cat </etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +if [[ -n "${CERTIFICATE}" ]] || [[ -n "${CERTIFICATE_KEY}" ]]; then + +cat </etc/nginx/conf.d/artifactory.conf +ssl_protocols TLSv1 TLSv1.1 TLSv1.2; +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /ui/ redirect; + rewrite ^/ui$ /ui/ redirect; + chunked_transfer_encoding on; + client_max_body_size 0; + location / { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8082; + proxy_next_upstream error timeout non_idempotent; + proxy_next_upstream_tries 1; + proxy_set_header X-JFrog-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + + location ~ ^/artifactory/ { + proxy_pass http://127.0.0.1:8081; + } + } +} +EOF +else + +cat </etc/nginx/conf.d/artifactory.conf +## server configuration +server { + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /ui/ redirect; + rewrite ^/ui$ /ui/ redirect; + chunked_transfer_encoding on; + client_max_body_size 0; + location / { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8082; + proxy_next_upstream error timeout non_idempotent; + proxy_next_upstream_tries 1; + proxy_set_header X-JFrog-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + + location ~ ^/artifactory/ { + proxy_pass http://127.0.0.1:8081; + } + } +} +EOF + +fi + +mkdir -p /opt/jfrog/artifactory/var/etc/artifactory/ +cat </opt/jfrog/artifactory/var/etc/artifactory/artifactory.cluster.license +${ARTIFACTORY_LICENSE_1} + +${ARTIFACTORY_LICENSE_2} + +${ARTIFACTORY_LICENSE_3} + +${ARTIFACTORY_LICENSE_4} + +${ARTIFACTORY_LICENSE_5} +EOF + +HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') + +if [ "${IS_PRIMARY}" = "true" ]; then + NODE_NAME=art-primary +else + NODE_NAME=art-$(date +%s$RANDOM) +fi + +# Java options +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml + +# Node settings +HOSTNAME=$(hostname -i) +sed -i -e "s/#id: \"art1\"/id: \"${NODE_NAME}\"/" /var/opt/jfrog/artifactory/etc/system.yaml +sed -i -e "s/#ip:/ip: ${HOSTNAME}/" /var/opt/jfrog/artifactory/etc/system.yaml +sed -i -e "s/#primary: true/primary: ${IS_PRIMARY}/" /var/opt/jfrog/artifactory/etc/system.yaml +sed -i -e "s/#haEnabled:/haEnabled:/" /var/opt/jfrog/artifactory/etc/system.yaml + + +if [[ $DB_TYPE =~ "MSSQL" ]]; then + # Set MS SQL configuration + cat <>/var/opt/jfrog/artifactory/etc/system.yaml + ## One of: mysql, oracle, mssql, postgresql, mariadb + ## Default: Embedded derby + ## Example for mssql + type: mssql + driver: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository + username: ${DB_USER} + password: ${DB_PASSWORD} + +EOF +elif [[ $DB_TYPE =~ "Postgresql" ]]; then + # Set Postgresql settings (add if/else for Postgres/MSSQL) ATTENTION - RT VM 7.5.5 doesn't have Postgres driver!! + cat <>/var/opt/jfrog/artifactory/etc/system.yaml + ## One of: mysql, oracle, mssql, postgresql, mariadb + ## Default: Embedded derby + ## Example for postgresql + type: postgresql + driver: org.postgresql.Driver + url: ${DB_URL}/${DB_NAME} + username: ${DB_USER} + password: ${DB_PASSWORD} + +EOF +fi + +# Create master.key on each node +mkdir -p /opt/jfrog/artifactory/var/etc/security/ +cat </opt/jfrog/artifactory/var/etc/security/master.key +${MASTER_KEY} +EOF + +# Azure Blob Storage configuration +# https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-AzureBlobStorageClusterBinaryProvider +mkdir -p /var/opt/jfrog/artifactory/etc/artifactory/ +cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + https://${STORAGE_ACCT}.blob.core.windows.net/ + ${STORAGE_CONTAINER} + + +EOF + +if [[ -n "${CERTIFICATE}" ]] || [[ -n "${CERTIFICATE_KEY}" ]]; then +cat </tmp/temp.pem +${CERTIFICATE} +EOF +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem + rm /tmp/temp.pem + +cat </tmp/temp.key +${CERTIFICATE_KEY} +EOF +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key + rm /tmp/temp.key +fi + +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep 120 +systemctl start artifactory +systemctl start nginx +nginx -s reload +echo "INFO: Artifactory HA installation completed." +echo "" diff --git a/AzureResourceManager/Artifactory/MP_submission/scripts/version_selector.sh b/AzureResourceManager/Artifactory/MP_submission/scripts/version_selector.sh new file mode 100644 index 0000000..aab3104 --- /dev/null +++ b/AzureResourceManager/Artifactory/MP_submission/scripts/version_selector.sh @@ -0,0 +1,13 @@ +#!/bin/bash +ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") +IFS=$'\t' +SUPPORTED_VERSIONS=("6.8.0\t6.11.3\t6.15.0\t0.16.0\t0.17.0\t6.18.0") +unset IFS + +if [[ "\t${SUPPORTED_VERSIONS[@]}\t" =~ "\t${ARTIFACTORY_VERSION}\t" ]]; then + ./install_artifactory.sh + echo "\ninstall_artifactory.sh was selected" >> user-data.txt +else + ./install_artifactory7.sh + echo "\ninstall_artifactory7.sh was selected" >> user-data.txt +fi \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/README.md b/AzureResourceManager/Artifactory/README.md new file mode 100644 index 0000000..66d7be3 --- /dev/null +++ b/AzureResourceManager/Artifactory/README.md @@ -0,0 +1,81 @@ +# Setup Artifactory Enterprise + + + + + + + + +This template can help you setup the [Artifactory Enterprise](https://jfrog.com/artifactory) on Azure. + +## A. Deploy Artifactory Enterprise on Azure +![screenshot](images/HA_Diagram.png) + + +1. Click "Deploy to Azure" button. If you haven't got an Azure subscription, it will guide you on how to signup for a free trial. + +2. Enter a valid values to parameters. At least 1 license has to be provided. + + +![screenshot](images/Parameters.png) + +3. Click on Review + Create, then on Create to start deploying resources. It will deploy MsSQL or Postgresql database (or it can use existing), Azure Blob storage container, VM installing Nginx and Artifactory and Load balancer. + +4. Once deployment is done. Copy FQDN from Output of deployment template. + +5. Access artifactory using FQDN. + +6. You will see specified artifactory member nodes in 'Admin -> High Availability' page. + +### Note: +1. This template only supports Artifactory version 6.18.x and above. +2. Turn off daily backups. Read Documentation provided [here](https://www.jfrog.com/confluence/display/RTF/Managing+Backups) +3. Use SSL Certificate with valid wild card to you artifactory as docker registry with subdomain method. +4. Input values for 'adminUsername' and 'adminPassword' parameters needs to follow azure VM access rules. +5. One primary node is configured automatically. And, Minimum 1 member node is expected for the Artifactory HA installation. +6. This template provides support for max 5 licenses. To add more licenses, Edit the template (input fields, CustomScript sections) and install_artifactory.sh script. +7. Refer to [System Requirements](https://www.jfrog.com/confluence/display/RTF/System+Requirements) for changing 'extraJavaOptions' input parameter value. + +### Steps to setup Artifactory as secure docker registry +considering you have SSL certificate for `*.jfrog.team` +1. Pass your SSL Certificate in parameter `Certificate` as string +2. Pass your SSL Certificate Key in parameter `CertificateKey` as string +3. Set `CertificateDomain` as `jfrog.team` +4. Set `ArtifactoryServerName` as `artifactory` if you want to access artifactory with `https://artifactory.jfrog.team` +5. Create DNS record with entry `artifactory.jfrog.team` pointing to load balancer value provided as output in template deployment. +6. Create DNS record with entry `*.jfrog.team` pointing to load balancer value provided as output in template deployment. +7. If you have virtual docker registry with name `docker-virtual` in artifactory. You can access it via `docker-virtual.jfrog.team` + e.g ```docker pull docker-virtual.jfrog.team/nginx``` + +### Steps to upgrade Artifactory Version + +1. Login into Primary VM instance and sudo as root. Use the admin credentials provided in the install setup. +Note: Use load balancer's NAT entries under Azure resources, to get the allocated NAT port for accessing the VM instance. + +2. Stop nginx and artifactory services. + ``` + service nginx stop + service artifactory stop + ``` + +3. Upgrade artifactory with following apt-get install command. + ``` + apt-get update + apt-get -y install jfrog-artifactory-pro=${ARTIFACTORY_VERSION} + ``` +4. Start artifactory and nginx services. + ``` + service artifactory start + service nginx start + ``` +5. Repeat above steps for all member nodes. + +------ +#### Note: +Supported locations: `East US 2`, `Central US`, `West Central US` and `West Europe`. +Please check the Azure region support for `Standard Sku` property in load balancer for this template to work properly. +Check for SQL server support on specified location. If SQL server is not available in the location, Use 'DB_Location' to specify the location with SQL server support. + + + diff --git a/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json new file mode 100644 index 0000000..daf1497 --- /dev/null +++ b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json @@ -0,0 +1,982 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D4s_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "clusterName": { + "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." + } + }, + "db_type": { + "type": "string", + "defaultValue": "Postgresql_deploy.json", + "allowedValues": [ + "Postgresql_deploy.json", + "MSSQL_deploy.json", + "Postgresql_existing.json", + "MSSQL_existing.json" + ], + "metadata": { + "description": "Deploy new Postgresql, MSSQL or use existing DB" + } + }, + "manual_db_url": { + "type": "string", + "metadata": { + "description": "DB server URL, if existing DB server is used instead of a new deployment (jdbc:sqlserver://.. or jdbc:postgresql://..)" + } + }, + "db_server": { + "type": "string", + "metadata": { + "description": "DB server name, if pre-existing DB is used" + } + }, + "db_name": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "MSSQL Database name" + } + }, + "db_edition": { + "type": "string", + "minLength": 1, + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "MSSQL Database Edition" + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "nodeCount": { + "type": "int", + "defaultValue": 2, + "minValue": 1, + "maxValue": 100, + "metadata": { + "description": "Number of VM instances (100 or less) for member artifactory nodes. Minimum 1 node." + } + }, + "artifactoryVersion": { + "type": "string", + "defaultValue": "0.0.1", + "allowedValues": [ + "6.6.0", + "6.6.1", + "6.7.0", + "6.8.0", + "6.11.3", + "6.15.0", + "0.16.0", + "0.17.0", + "6.18.0", + "7.0.0717", + "7.0.4001", + "7.2.1", + "7.4.3", + "7.4.30", + "7.4.31", + "7.5.7", + "0.0.1" + ], + "metadata": { + "description": "Artifactory-vm image version to deploy." + } + }, + "masterKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" + } + }, + "joinKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Join key for Artifactory cluster. Generate join.key using command '$openssl rand -hex 16'" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." + } + }, + "artifactoryLicense1": { + "type": "string", + "metadata": { + "description": "Artifactory Enterprise License. Providing one license is mandatory" + } + }, + "artifactoryLicense2": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Artifactory Enterprise License" + } + }, + "artifactoryLicense3": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Artifactory Enterprise License" + } + }, + "artifactoryLicense4": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Artifactory Enterprise License" + } + }, + "artifactoryLicense5": { + "type": "string", + "defaultValue": "", + "metadata": { + "description": "Artifactory Enterprise License" + } + }, + "certificate": { + "type": "securestring", + "metadata": { + "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." + } + }, + "certificateKey": { + "type": "securestring", + "metadata": { + "description": "Provide your SSL Certificate key" + } + }, + "certificateDomain": { + "type": "string", + "minLength": 1, + "defaultValue": "artifactory", + "metadata": { + "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" + } + }, + "artifactoryServerName": { + "type": "string", + "minLength": 1, + "defaultValue": "artifactory", + "metadata": { + "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" + } + }, + "extraJavaOptions": { + "type": "string", + "minLength": 1, + "defaultValue": "-server -Xms2g -Xmx8g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", + "metadata": { + "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." + } + }, + "db_user": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database Admin user name" + } + }, + "db_password": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Database Admin password" + } + }, + "databases": { + "type": "object", + "defaultValue": { + "properties": [ + { + "name": "artdb", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account 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": "https://raw.githubusercontent.com/jfrog/JFrog-Cloud-Installers/arm-xray/AzureResourceManager/Artifactory/" + }, + "_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": { + "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrimaryPrefix": "10.0.1.0/24", + "subnetMemberPrefix": "10.0.2.0/24", + "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", + "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", + "subnetMemberName": "[concat(variables('namingInfix'), 'memberSubnet')]", + "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", + "scaleSetMemberName": "[concat(variables('namingInfix'), 'memberScaleset')]", + "lbName": "[concat(variables('namingInfix'), 'lb')]", + "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", + "bepoolMemberName": "[concat(variables('lbName'), 'memberBepool')]", + "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", + "fepoolMemberName": "[concat(variables('lbName'), 'memberFepool')]", + "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", + "bepoolMemberID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolMemberName'))]", + "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", + "feIpConfigMemberName": "[concat(variables('fepoolMemberName'), 'memberIpConfig')]", + "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", + "feIpConfigMemberId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigMemberName'))]", + "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", + "pipMemberName": "[concat(variables('namingInfix'), 'memberPip')]", + "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", + "nicMemberName": "[concat(variables('namingInfix'), 'memberNic')]", + "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", + "natPoolMemberName": "[concat(variables('lbName'), 'memberNatpool')]", + "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", + "httpProbePrimaryName": "primaryHttpProbe", + "httpsProbePrimaryName": "primaryHttpsProbe", + "httpProbeMemberName": "memberHttpProbe", + "httpsProbeMemberName": "memberHttpsProbe", + "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", + "vmStorageAccountContainerName": "filestore", + "azureSqlServerName": "[if(or(equals(parameters('db_type'), 'MSSQL_existing.json'),equals(parameters('db_type'),'Postgresql_existing.json')), parameters('db_server'), concat(variables('namingInfix'), 'sqlsrv'))]", + "artDBname": "[parameters('databases').properties[0].name]", + "postgres_db_user": "[concat(parameters('db_user'), '@', variables('azureSqlServerName'))]", + "db_user": "[if(or(equals(parameters('db_type'), 'Postgresql_deploy.json'),equals(parameters('db_type'),'Postgresql_existing.json')), variables('postgres_db_user'), parameters('db_user'))]", + "db_password": "[parameters('db_password')]", + "db_location": "[parameters('location')]", + "db_name": "[parameters('db_name')]", + "db_edition": "[parameters('db_edition')]", + "masterKey": "[parameters('masterKey')]", + "joinKey": "[parameters('joinKey')]", + "certificate": "[parameters('certificate')]", + "certificateKey": "[parameters('certificateKey')]", + "certificateDomain": "[parameters('certificateDomain')]", + "artifactoryServerName": "[parameters('artifactoryServerName')]", + "extraJavaOptions": "[parameters('extraJavaOptions')]", + "artifactoryLicense1": "[parameters('artifactoryLicense1')]", + "artifactoryLicense2": "[parameters('artifactoryLicense2')]", + "artifactoryLicense3": "[parameters('artifactoryLicense3')]", + "artifactoryLicense4": "[parameters('artifactoryLicense4')]", + "artifactoryLicense5": "[parameters('artifactoryLicense5')]", + "osType": { + "publisher": "jfrog", + "offer": "artifactory-vm", + "sku": "artifactory-vm", + "version": "[parameters('artifactoryVersion')]" + }, + "imageReference": "[variables('osType')]", + "dbTemplate": "[parameters('db_type')]", + "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "nsgName": "[concat(variables('namingInfix'), 'nsg')]" + }, + "resources": [ + { + "apiVersion": "2019-05-01", + "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[parameters('location')]", + "name": "[variables('nsgName')]", + "apiVersion": "2020-03-01", + "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-artifactory-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8081", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "http-nginx-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "https-nginx-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "membership-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10001", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[parameters('location')]", + "apiVersion": "2020-03-01", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('addressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[variables('subnetPrimaryName')]", + "properties": { + "addressPrefix": "[variables('subnetPrimaryPrefix')]", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "name": "[variables('subnetMemberName')]", + "properties": { + "addressPrefix": "[variables('subnetMemberPrefix')]", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + } + ] + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicPrimaryName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "apiVersion": "2020-03-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicMemberName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('pipPrimaryName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2020-03-01", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('namingInfix')]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('pipMemberName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2020-03-01", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(variables('namingInfix'),'2')]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[variables('lbName')]", + "location": "[parameters('location')]", + "apiVersion": "2020-03-01", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]" + ], + "tags":{ + "displayName": "Load Balancer" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "[variables('feIpConfigPrimaryName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" + } + } + }, + { + "name": "[variables('feIpConfigMemberName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipMemberName'))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[variables('bepoolPrimaryName')]" + }, + { + "name": "[variables('bepoolMemberName')]" + } + ], + "inboundNatPools": [ + { + "name": "[variables('natPoolPrimaryName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "protocol": "tcp", + "frontendPortRangeStart": 10022, + "frontendPortRangeEnd": 11022, + "backendPort": 22 + } + }, + { + "name": "[variables('natPoolMemberName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('feIpConfigMemberId')]" + }, + "protocol": "tcp", + "frontendPortRangeStart": 20022, + "frontendPortRangeEnd": 21022, + "backendPort": 22 + } + } + ], + "loadBalancingRules": [ + { + "name": "HTTPRulePrimary", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolPrimaryID')]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" + } + } + }, + { + "name": "HTTPSRulePrimary", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolPrimaryID')]" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" + } + } + }, + { + "name": "HTTPRuleMember", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigMemberId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolMemberID')]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbeMemberName'))]" + } + } + }, + { + "name": "HTTPSRuleMember", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigMemberId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolMemberID')]" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbeMemberName'))]" + } + } + } + ], + "probes": [ + { + "name": "[variables('httpProbePrimaryName')]", + "properties": { + "protocol": "Http", + "requestPath": "/artifactory/api/system/ping", + "port": 80, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpsProbePrimaryName')]", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpProbeMemberName')]", + "properties": { + "protocol": "Http", + "requestPath": "/artifactory/api/system/ping", + "port": 80, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpsProbeMemberName')]", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + } + ] + } + }, + { + "apiVersion": "2019-06-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "[parameters('storageAccountType')]" + }, + "tags":{ + "displayName": "Artifactory Storage Account" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "name": "deploySQLDB", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('dbTemplateLocation')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "db_user": { + "value": "[parameters('db_user')]" + }, + "db_password": { + "value": "[variables('db_password')]" + }, + "db_server": { + "value": "[variables('azureSqlServerName')]" + }, + "db_location": { + "value": "[variables('db_location')]" + }, + "databases": { + "value": "[parameters('databases')]" + }, + "db_name": { + "value": "[variables('db_name')]" + }, + "db_edition": { + "value": "[variables('db_edition')]" + }, + "manual_db_url": { + "value": "[parameters('manual_db_url')]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('scaleSetPrimaryName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[resourceId('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "plan": { + "name": "artifactory-vm", + "publisher": "jfrog", + "product": "artifactory-vm" + }, + "sku": { + "name": "[parameters('vmSku')]", + "tier": "Standard", + "capacity": "1" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": "250", + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nDB_TYPE=',parameters('db_type'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('artDBname'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\nIS_PRIMARY=','true','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicPrimaryName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" + } + } + } + ] + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('scaleSetMemberName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[resourceId('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Compute/virtualMachineScaleSets/', variables('scaleSetPrimaryName'))]", + "[resourceId('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "plan": { + "name": "artifactory-vm", + "publisher": "jfrog", + "product": "artifactory-vm" + }, + "sku": { + "name": "[parameters('vmSku')]", + "tier": "Standard", + "capacity": "[parameters('nodeCount')]" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": "250", + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nARTIFACTORY_VERSION=', parameters('artifactoryVersion'),'\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nDB_TYPE=',parameters('db_type'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('artDBname'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\nIS_PRIMARY=','false','\nLICENSE1=',variables('artifactoryLicense1'),'\nLICENSE2=',variables('artifactoryLicense2'),'\nLICENSE3=',variables('artifactoryLicense3'),'\nLICENSE4=',variables('artifactoryLicense4'),'\nLICENSE5=',variables('artifactoryLicense5'),'\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicMemberName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolMemberName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolMemberName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/version_selector.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "bash version_selector.sh && ls -al && pwd >> /var/lib/cloud/instance/user-data.txt" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipMemberName')),'2018-07-01').dnsSettings.fqdn]", + "type": "string" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json new file mode 100644 index 0000000..182f9f0 --- /dev/null +++ b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json @@ -0,0 +1,68 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "value": "rtha" + }, + "adminUsername": { + "value": "vmuser" + }, + "adminPassword": { + "value": "password" + }, + "db_type": { + "value": "Postgresql_deploy.json" + }, + "db_user": { + "value": "artifactory" + }, + "db_password": { + "value": "password" + }, + "db_name": { + "value": "artdb" + }, + "db_edition": { + "value": "Basic" + }, + "databases": { + "value": { + "properties": [ + { + "name": "artdb", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } + }, + "manual_db_url": { + "value": "jdbc:postgresql://postgressrvr.postgres.database.azure.com:5432" + }, + "db_server": { + "value": "postgressrvr" + }, + "masterKey": { + "value": "GEN-UNIQUE" + }, + "joinKey": { + "value": "GEN-UNIQUE" + }, + "certificate": { + "value": "-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----" + }, + "certificateKey": { + "value": "-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----" + }, + "artifactoryLicense1": { + "value": "" + }, + "artifactoryLicense2": { + "value": "" + }, + "artifactoryLicense3": { + "value": "" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/images/HA_Diagram.png b/AzureResourceManager/Artifactory/images/HA_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..98cd3ee932e26b5b9c84683003a5bb354697a5bd GIT binary patch literal 107764 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 S=x1>m@rV`RcFh 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 BfT;ig literal 0 HcmV?d00001 diff --git a/AzureResourceManager/Artifactory/images/Parameters.png b/AzureResourceManager/Artifactory/images/Parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..a735cef96bef5ebd41bd185ea0fa7849850124da GIT binary patch literal 103748 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Ð_5(tg@W4JnFS* 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 BRRjP4 literal 0 HcmV?d00001 diff --git a/AzureResourceManager/Artifactory/images/add_licenses.png b/AzureResourceManager/Artifactory/images/add_licenses.png new file mode 100644 index 0000000000000000000000000000000000000000..3a06f9dd43633fcad4353fde4947cf8895407c44 GIT binary patch literal 295712 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Çs+@ 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/etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +cat </etc/nginx/conf.d/artifactory.conf +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /artifactory/webapp/ redirect; + rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; + rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; + chunked_transfer_encoding on; + client_max_body_size 0; + location /artifactory/ { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8081/artifactory/; + proxy_set_header X-Artifactory-Override-Base-Url + \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } +} +EOF + +cat </var/opt/jfrog/artifactory/etc/artifactory.cluster.license +${ARTIFACTORY_LICENSE_1} + +${ARTIFACTORY_LICENSE_2} + +${ARTIFACTORY_LICENSE_3} + +${ARTIFACTORY_LICENSE_4} + +${ARTIFACTORY_LICENSE_5} +EOF + +cat </var/opt/jfrog/artifactory/etc/ha-node.properties +node.id=art1 +artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data +context.url=http://127.0.0.1:8081/artifactory +membership.port=10001 +hazelcast.interface=172.25.0.3 +primary=${IS_PRIMARY} +EOF + +cat </var/opt/jfrog/artifactory/etc/db.properties +type=mssql +driver=com.microsoft.sqlserver.jdbc.SQLServerDriver +url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository +username=${DB_USER} +password=${DB_PASSWORD} +EOF + +mkdir -p /var/opt/jfrog/artifactory/etc/security + +cat </var/opt/jfrog/artifactory/etc/security/master.key +${MASTER_KEY} +EOF + +cat </var/opt/jfrog/artifactory/etc/binarystore.xml + + + + + + + + + + + + + + + + + crossNetworkStrategy + crossNetworkStrategy + 2 + 1 + + + + + remote + + + + local + + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + https://${STORAGE_ACCT}.blob.core.windows.net/ + ${STORAGE_CONTAINER} + + +EOF + + +HOSTNAME=$(hostname -i) +sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem +rm /tmp/temp.pem + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key +rm /tmp/temp.key + +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' +echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep $((RANDOM % 120)) +service artifactory start +service nginx start +nginx -s reload +echo "INFO: Artifactory installation completed." diff --git a/AzureResourceManager/Artifactory/scripts/install_artifactory7.sh b/AzureResourceManager/Artifactory/scripts/install_artifactory7.sh new file mode 100644 index 0000000..75bf714 --- /dev/null +++ b/AzureResourceManager/Artifactory/scripts/install_artifactory7.sh @@ -0,0 +1,267 @@ +#!/bin/bash + +# Script stdout and stderr are stored in /var/lib/waagent/custom-script/download on the VM +DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_TYPE=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_TYPE=" | sed "s/DB_TYPE=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") +STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") +STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") +ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") +CERTIFICATE=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//") +CERTIFICATE_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") +ARTIFACTORY_LICENSE_1=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE1=" | sed "s/LICENSE1=//") +ARTIFACTORY_LICENSE_2=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE2=" | sed "s/LICENSE2=//") +ARTIFACTORY_LICENSE_3=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE3=" | sed "s/LICENSE3=//") +ARTIFACTORY_LICENSE_4=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE4=" | sed "s/LICENSE4=//") +ARTIFACTORY_LICENSE_5=$(cat /var/lib/cloud/instance/user-data.txt | grep "^LICENSE5=" | sed "s/LICENSE5=//") +export DEBIAN_FRONTEND=noninteractive + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +# Install Postgresql driver +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/postgresql-9.4.1212.jar https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar >> /tmp/install-databse-driver.log 2>&1 + +CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") +[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory + +ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") +[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +cat </etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +if [[ -n "${CERTIFICATE}" ]] || [[ -n "${CERTIFICATE_KEY}" ]]; then + +cat </etc/nginx/conf.d/artifactory.conf +ssl_protocols TLSv1 TLSv1.1 TLSv1.2; +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /ui/ redirect; + rewrite ^/ui$ /ui/ redirect; + chunked_transfer_encoding on; + client_max_body_size 0; + location / { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8082; + proxy_next_upstream error timeout non_idempotent; + proxy_next_upstream_tries 1; + proxy_set_header X-JFrog-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + + location ~ ^/artifactory/ { + proxy_pass http://127.0.0.1:8081; + } + } +} +EOF +else + +cat </etc/nginx/conf.d/artifactory.conf +## server configuration +server { + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /ui/ redirect; + rewrite ^/ui$ /ui/ redirect; + chunked_transfer_encoding on; + client_max_body_size 0; + location / { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8082; + proxy_next_upstream error timeout non_idempotent; + proxy_next_upstream_tries 1; + proxy_set_header X-JFrog-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + + location ~ ^/artifactory/ { + proxy_pass http://127.0.0.1:8081; + } + } +} +EOF + +fi + +mkdir -p /opt/jfrog/artifactory/var/etc/artifactory/ +cat </opt/jfrog/artifactory/var/etc/artifactory/artifactory.cluster.license +${ARTIFACTORY_LICENSE_1} + +${ARTIFACTORY_LICENSE_2} + +${ARTIFACTORY_LICENSE_3} + +${ARTIFACTORY_LICENSE_4} + +${ARTIFACTORY_LICENSE_5} +EOF + +HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') + +if [ "${IS_PRIMARY}" = "true" ]; then + NODE_NAME=art-primary +else + NODE_NAME=art-$(date +%s$RANDOM) +fi + +# Java options +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml + +# Node settings +HOSTNAME=$(hostname -i) +sed -i -e "s/#id: \"art1\"/id: \"${NODE_NAME}\"/" /var/opt/jfrog/artifactory/etc/system.yaml +sed -i -e "s/#ip:/ip: ${HOSTNAME}/" /var/opt/jfrog/artifactory/etc/system.yaml +sed -i -e "s/#primary: true/primary: ${IS_PRIMARY}/" /var/opt/jfrog/artifactory/etc/system.yaml +sed -i -e "s/#haEnabled:/haEnabled:/" /var/opt/jfrog/artifactory/etc/system.yaml + + +if [[ $DB_TYPE =~ "MSSQL" ]]; then + # Set MS SQL configuration + cat <>/var/opt/jfrog/artifactory/etc/system.yaml + ## One of: mysql, oracle, mssql, postgresql, mariadb + ## Default: Embedded derby + ## Example for mssql + type: mssql + driver: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository + username: ${DB_USER} + password: ${DB_PASSWORD} + +EOF +elif [[ $DB_TYPE =~ "Postgresql" ]]; then + # Set Postgresql settings (add if/else for Postgres/MSSQL) ATTENTION - RT VM 7.5.5 doesn't have Postgres driver!! + cat <>/var/opt/jfrog/artifactory/etc/system.yaml + ## One of: mysql, oracle, mssql, postgresql, mariadb + ## Default: Embedded derby + ## Example for postgresql + type: postgresql + driver: org.postgresql.Driver + url: ${DB_URL}/${DB_NAME} + username: ${DB_USER} + password: ${DB_PASSWORD} + +EOF +fi + +# Create master.key on each node +mkdir -p /opt/jfrog/artifactory/var/etc/security/ +cat </opt/jfrog/artifactory/var/etc/security/master.key +${MASTER_KEY} +EOF + +# Azure Blob Storage configuration +# https://www.jfrog.com/confluence/display/JFROG/Configuring+the+Filestore#ConfiguringtheFilestore-AzureBlobStorageClusterBinaryProvider +mkdir -p /var/opt/jfrog/artifactory/etc/artifactory/ +cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + https://${STORAGE_ACCT}.blob.core.windows.net/ + ${STORAGE_CONTAINER} + + +EOF + +if [[ -n "${CERTIFICATE}" ]] || [[ -n "${CERTIFICATE_KEY}" ]]; then +cat </tmp/temp.pem +${CERTIFICATE} +EOF +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem + rm /tmp/temp.pem + +cat </tmp/temp.key +${CERTIFICATE_KEY} +EOF +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key + rm /tmp/temp.key +fi + +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep 120 +systemctl start artifactory +systemctl start nginx +nginx -s reload +echo "INFO: Artifactory HA installation completed." +echo "" diff --git a/AzureResourceManager/Artifactory/scripts/version_selector.sh b/AzureResourceManager/Artifactory/scripts/version_selector.sh new file mode 100644 index 0000000..aab3104 --- /dev/null +++ b/AzureResourceManager/Artifactory/scripts/version_selector.sh @@ -0,0 +1,13 @@ +#!/bin/bash +ARTIFACTORY_VERSION=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_VERSION=" | sed "s/ARTIFACTORY_VERSION=//") +IFS=$'\t' +SUPPORTED_VERSIONS=("6.8.0\t6.11.3\t6.15.0\t0.16.0\t0.17.0\t6.18.0") +unset IFS + +if [[ "\t${SUPPORTED_VERSIONS[@]}\t" =~ "\t${ARTIFACTORY_VERSION}\t" ]]; then + ./install_artifactory.sh + echo "\ninstall_artifactory.sh was selected" >> user-data.txt +else + ./install_artifactory7.sh + echo "\ninstall_artifactory7.sh was selected" >> user-data.txt +fi \ No newline at end of file diff --git a/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh b/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh new file mode 100644 index 0000000..41d33cc --- /dev/null +++ b/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Upgrade version for every release +ARTIFACTORY_VERSION=7.6.2 +UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") + +export DEBIAN_FRONTEND=noninteractive + +# install the wget and curl +apt-get update +apt-get -y install wget curl>> /tmp/install-curl.log 2>&1 + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +# install the Artifactory PRO and Nginx +echo "deb https://jfrog.bintray.com/artifactory-pro-debs ${UBUNTU_CODENAME} main" | tee -a /etc/apt/sources.list +curl --retry 5 https://bintray.com/user/downloadSubjectPublicKey?username=jfrog | apt-key add - +apt-get update +apt-get -y install nginx>> /tmp/install-nginx.log 2>&1 +apt-get -y install jfrog-artifactory-pro=${ARTIFACTORY_VERSION} >> /tmp/install-artifactory.log 2>&1 + +# Add callhome metadata (allow us to collect information) +mkdir -p /var/opt/jfrog/artifactory/etc/info +cat </var/opt/jfrog/artifactory/etc/info/installer-info.json +{ + "productId": "ARM_artifactory-pro/1.0.0", + "features": [ + { + "featureId": "Partner/ACC-007221" + } + ] +} +EOF + +#Install database drivers (for Java 11, path is different for RT6 and RT7) +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/mysql-connector-java-5.1.38.jar https://bintray.com/artifact/download/bintray/jcenter/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar >> /tmp/install-databse-driver.log 2>&1 +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/mssql-jdbc-7.4.1.jre11.jar https://bintray.com/artifact/download/bintray/jcenter/com/microsoft/sqlserver/mssql-jdbc/7.4.1.jre11/mssql-jdbc-7.4.1.jre11.jar >> /tmp/install-databse-driver.log 2>&1 +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/postgresql-9.4.1212.jar https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar >> /tmp/install-databse-driver.log 2>&1 + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +printf "\nartifactory.ping.allowUnauthenticated=true" >> /var/opt/jfrog/artifactory/etc/artifactory/artifactory.system.properties + +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# Remove Artifactory service from boot up run +systemctl disable artifactory +systemctl disable nginx \ No newline at end of file diff --git a/AzureResourceManager/JCR/LICENSE b/AzureResourceManager/JCR/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/AzureResourceManager/JCR/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/AzureResourceManager/JCR/MP_submission_6/createUiDefinition.json b/AzureResourceManager/JCR/MP_submission_6/createUiDefinition.json new file mode 100644 index 0000000..a0b103d --- /dev/null +++ b/AzureResourceManager/JCR/MP_submission_6/createUiDefinition.json @@ -0,0 +1,332 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", + "handler": "Microsoft.Azure.CreateUIDef", + "version": "0.1.2-preview", + "parameters": { + "basics": [ + {} + ], + "steps": [ + { + "name": "vmCredentials", + "label": "VM Credential", + "bladeTitle": "VM Credential", + "subLabel": { + "preValidation": "Provide VM credentials", + "postValidation": "Great - let's move on!" + }, + "elements": [ + { + "name": "adminUsername", + "type": "Microsoft.Compute.UserNameTextBox", + "label": "Admin username", + "osPlatform": "Linux", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + }, + "toolTip": "Provide admin username for the virtual machine" + }, + { + "name": "adminPassword", + "type": "Microsoft.Compute.CredentialsCombo", + "label": { + "password": "Password", + "confirmPassword": "Confirm password" + }, + "osPlatform": "Linux", + "constraints": { + "required": true, + "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", + "customValidationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." + }, + "options": { + "hideConfirmation": false + }, + "toolTip": { + "password": "Provide admin password for the virtual machine" + }, + "visible": true + } + ] + }, + { + "name": "clusterConfig", + "label": "JFrog Container Registry Cluster settings", + "subLabel": { + "preValidation": "Configure JFrog Container Registry Cluster settings", + "postValidation": "Done!" + }, + "bladeTitle": "JFrog Container Registry Cluster Settings", + "elements": [ + { + "name": "clusterName", + "type": "Microsoft.Common.TextBox", + "label": "Cluster name", + "toolTip": "Cluster name", + "defaultValue": "", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + } + }, + { + "name": "vmSku", + "type": "Microsoft.Compute.SizeSelector", + "label": "Virtual machine size", + "toolTip": "The size of the virtual machine for JFrog Container Registry", + "recommendedSizes": [ + "Standard_A2_v2" + ], + "constraints": { + "allowedSizes": [ + "Standard_A2_v2", + "Standard_A4_v2", + "Standard_A4", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_DS2_v2", + "Standard_DS3_v2", + "Standard_D2_v2", + "Standard_D3_v2", + "Standard_DC2s", + "Standard_DC4s" + ] + }, + "osPlatform": "Linux", + "count": 1 + }, + { + "name": "artifactoryVersion", + "type": "Microsoft.Common.DropDown", + "label": "JFrog Container Registry-vm image version to deploy.", + "defaultValue": "0.16.0", + "toolTip": "Version of JFrog Container Registry to dpeloy", + "constraints": { + "allowedValues": [ + { + "label": "6.16.0", + "value": "0.16.0" + } + ], + "required": true + }, + "visible": true + }, + { + "name": "masterKey", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "JFrog Container Registry master Key", + "confirmPassword": "Confirm master Key" + }, + "defaultValue": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "toolTip": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,32}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "certificate", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Provide your SSL Certificate.", + "confirmPassword": "Confirm SSL Certificate." + }, + "toolTip": "To use JFrog Container Registry as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate.", + "constraints": { + "required": true, + "regex": "^(-----BEGIN CERTIFICATE-----)(.+)(-----END CERTIFICATE-----)$", + "validationMessage": "Provide SSL Certificate." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "certificateKey", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Provide your SSL Certificate key.", + "confirmPassword": "Confirm SSL Certificate key." + }, + "toolTip": "Provide your SSL Certificate key", + "constraints": { + "required": true, + "regex": "^(-----BEGIN PRIVATE KEY-----)(.+)(-----END PRIVATE KEY-----)$", + "validationMessage": "Provide SSL Certificate Key." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "certificateDomain", + "type": "Microsoft.Common.TextBox", + "label": "Provide your Certificate Domain Name.", + "defaultValue": "artifactory", + "toolTip": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team", + "constraints": { + "required": true, + "regex": "^(\\*)*([\\w-\\.])+$", + "validationMessage": "Must be a valid fully-qualified domain name." + } + }, + { + "name": "artifactoryServerName", + "type": "Microsoft.Common.TextBox", + "label": "Provide JFrog Container Registry server name to be used in Nginx.", + "defaultValue": "artifactory", + "toolTip": "Provide JFrog Container Registry server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,20}$", + "validationMessage": "Only letters and numbers are allowed, and the value must be 1-20 characters long." + } + }, + { + "name": "extraJavaOptions", + "type": "Microsoft.Common.TextBox", + "label": "Setting Java Memory Parameters for JFrog Container Registry", + "defaultValue": "-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", + "toolTip": "Setting Java Memory Parameters for JFrog Container Registry. Learn about system requirements for JFrog Container Registry https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware", + "constraints": { + "required": false + } + } + ] + }, + { + "name": "databaseConfig", + "label": "Database Configuration", + "subLabel": { + "preValidation": "Configure the Database", + "postValidation": "Done" + }, + "bladeTitle": "Database Credential", + "elements": [ + { + "name": "dbAdminUsername", + "type": "Microsoft.Compute.UserNameTextBox", + "label": "User name", + "toolTip": "Admin username for the database", + "osPlatform": "Linux", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + } + }, + { + "name": "dbAdminPassword", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Password", + "confirmPassword": "Confirm password" + }, + "toolTip": "Admin password for the database", + "constraints": { + "required": true, + "regex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", + "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." + }, + "options": { + "hideConfirmation": false + }, + "visible": true + }, + { + "name": "dbName", + "type": "Microsoft.Common.TextBox", + "label": "Database name", + "toolTip": "Database name", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,15}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-15 characters long." + } + }, + { + "name": "dbEdition", + "type": "Microsoft.Common.DropDown", + "label": "Database Edition", + "defaultValue": "Basic", + "toolTip": "Edition of Database to use", + "constraints": { + "allowedValues": [ + { + "label": "Basic", + "value": "Basic" + }, + { + "label": "Standard", + "value": "Standard" + }, + { + "label": "Premium", + "value": "Premium" + } + ], + "required": true + }, + "visible": true + } + ] + }, + { + "name": "storageConfig", + "label": "Storage settings", + "subLabel": { + "preValidation": "Configure the infrastructure settings", + "postValidation": "Done" + }, + "bladeTitle": "Storage settings", + "elements": [ + { + "name": "storageAccountsType", + "type": "Microsoft.Common.DropDown", + "label": "Storage account type", + "defaultValue": "Standard_LRS", + "toolTip": "Storage account type", + "constraints": { + "allowedValues": [ + { + "label": "Standard_LRS", + "value": "Standard_LRS" + } + ], + "required": true + }, + "visible": true + } + ] + } + ], + "outputs": { + "clusterName": "[steps('clusterConfig').clusterName]", + "vmSku": "[steps('clusterConfig').vmSku]", + "location": "[location()]", + "artifactoryVersion": "[steps('clusterConfig').artifactoryVersion]", + "masterKey": "[steps('clusterConfig').masterKey]", + "certificate": "[steps('clusterConfig').certificate]", + "certificateKey": "[steps('clusterConfig').certificateKey]", + "certificateDomain": "[steps('clusterConfig').certificateDomain]", + "artifactoryServerName": "[steps('clusterConfig').artifactoryServerName]", + "extraJavaOptions": "[steps('clusterConfig').extraJavaOptions]", + "adminUsername": "[steps('vmCredentials').adminUsername]", + "adminPassword": "[steps('vmCredentials').adminPassword.password]", + "DB_Admin_User": "[steps('databaseConfig').dbAdminUsername]", + "DB_Admin_Password": "[steps('databaseConfig').dbAdminPassword]", + "DB_Name": "[steps('databaseConfig').dbName]", + "DB_Edition": "[steps('databaseConfig').dbEdition]", + "storageAccountType": "[steps('storageConfig').storageAccountsType]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/JCR/MP_submission_6/jfrog-container-registry-artifactory-6-16-0-7.zip b/AzureResourceManager/JCR/MP_submission_6/jfrog-container-registry-artifactory-6-16-0-7.zip new file mode 100644 index 0000000000000000000000000000000000000000..c73b5e99aa0302dc9c3cade688fde8d543037029 GIT binary patch literal 11289 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 literal 0 HcmV?d00001 diff --git a/AzureResourceManager/JCR/MP_submission_6/mainTemplate.json b/AzureResourceManager/JCR/MP_submission_6/mainTemplate.json new file mode 100644 index 0000000..08f765c --- /dev/null +++ b/AzureResourceManager/JCR/MP_submission_6/mainTemplate.json @@ -0,0 +1,766 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_A4", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "clusterName": { + "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." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "artifactoryVersion": { + "type": "string", + "defaultValue": "0.16.0", + "allowedValues": [ + "6.6.0", + "6.6.1", + "6.7.0", + "6.8.0", + "0.16.0" + ], + "metadata": { + "description": "JFrog Container Registry-vm image version to deploy." + } + }, + "masterKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." + } + }, + "certificate": { + "type": "securestring", + "metadata": { + "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." + } + }, + "certificateKey": { + "type": "securestring", + "metadata": { + "description": "Provide your SSL Certificate key" + } + }, + "certificateDomain": { + "type": "string", + "minLength": 1, + "defaultValue": "artifactory", + "metadata": { + "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" + } + }, + "artifactoryServerName": { + "type": "string", + "minLength": 1, + "defaultValue": "artifactory", + "metadata": { + "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" + } + }, + "extraJavaOptions": { + "type": "string", + "minLength": 1, + "defaultValue": "-server -Xms2g -Xmx12g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", + "metadata": { + "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." + } + }, + "DB_Admin_User": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database Admin user name" + } + }, + "DB_Admin_Password": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Database Admin password" + } + }, + "DB_Name": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database name" + } + }, + "DB_Edition": { + "type": "string", + "minLength": 1, + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Database Edition" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account 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": { + "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrimaryPrefix": "10.0.1.0/24", + "subnetMemberPrefix": "10.0.2.0/24", + "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", + "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", + "subnetMemberName": "[concat(variables('namingInfix'), 'memberSubnet')]", + "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", + "lbName": "[concat(variables('namingInfix'), 'lb')]", + "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", + "bepoolMemberName": "[concat(variables('lbName'), 'memberBepool')]", + "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", + "fepoolMemberName": "[concat(variables('lbName'), 'memberFepool')]", + "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", + "bepoolMemberID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolMemberName'))]", + "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", + "feIpConfigMemberName": "[concat(variables('fepoolMemberName'), 'memberIpConfig')]", + "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", + "feIpConfigMemberId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigMemberName'))]", + "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", + "pipMemberName": "[concat(variables('namingInfix'), 'memberPip')]", + "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", + "nicMemberName": "[concat(variables('namingInfix'), 'memberNic')]", + "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", + "natPoolMemberName": "[concat(variables('lbName'), 'memberNatpool')]", + "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", + "httpProbePrimaryName": "primaryHttpProbe", + "httpsProbePrimaryName": "primaryHttpsProbe", + "httpProbeMemberName": "memberHttpProbe", + "httpsProbeMemberName": "memberHttpsProbe", + "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", + "vmStorageAccountContainerName": "filestore", + "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", + "DB_Name": "[parameters('DB_Name')]", + "DB_Admin_User": "[parameters('DB_Admin_User')]", + "DB_Admin_Password": "[parameters('DB_Admin_Password')]", + "DB_Edition": "[parameters('DB_Edition')]", + "DB_Location": "[parameters('location')]", + "masterKey": "[parameters('masterKey')]", + "certificate": "[parameters('certificate')]", + "certificateKey": "[parameters('certificateKey')]", + "certificateDomain": "[parameters('certificateDomain')]", + "artifactoryServerName": "[parameters('artifactoryServerName')]", + "extraJavaOptions": "[parameters('extraJavaOptions')]", + "osType": { + "publisher": "jfrog", + "offer": "jfrogcontainerregistry-vm", + "sku": "artifactory-jcr", + "version": "[parameters('artifactoryVersion')]" + }, + "imageReference": "[variables('osType')]", + "dbTemplate": "azureDBDeploy.json", + "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "nsgName": "[concat(variables('namingInfix'), 'nsg')]" + }, + "resources": [ + { + "apiVersion": "2019-05-01", + "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[parameters('location')]", + "name": "[variables('nsgName')]", + "apiVersion": "2018-07-01", + "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-artifactory-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8081", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "http-nginx-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "https-nginx-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "membership-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10001", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-07-01", + "dependsOn": [ + "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('addressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[variables('subnetPrimaryName')]", + "properties": { + "addressPrefix": "[variables('subnetPrimaryPrefix')]", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "name": "[variables('subnetMemberName')]", + "properties": { + "addressPrefix": "[variables('subnetMemberPrefix')]", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + } + ] + } + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicPrimaryName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicMemberName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('pipMemberName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetMemberName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('pipPrimaryName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2018-07-01", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('namingInfix')]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('pipMemberName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2018-07-01", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[concat(variables('namingInfix'),'2')]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[variables('lbName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-07-01", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" + ], + "tags":{ + "displayName": "Load Balancer" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "[variables('feIpConfigPrimaryName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" + } + } + }, + { + "name": "[variables('feIpConfigMemberName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipMemberName'))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[variables('bepoolPrimaryName')]" + }, + { + "name": "[variables('bepoolMemberName')]" + } + ], + "inboundNatPools": [ + { + "name": "[variables('natPoolPrimaryName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "protocol": "tcp", + "frontendPortRangeStart": 10022, + "frontendPortRangeEnd": 11022, + "backendPort": 22 + } + }, + { + "name": "[variables('natPoolMemberName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('feIpConfigMemberId')]" + }, + "protocol": "tcp", + "frontendPortRangeStart": 20022, + "frontendPortRangeEnd": 21022, + "backendPort": 22 + } + } + ], + "loadBalancingRules": [ + { + "name": "HTTPRulePrimary", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolPrimaryID')]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" + } + } + }, + { + "name": "HTTPSRulePrimary", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolPrimaryID')]" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" + } + } + }, + { + "name": "HTTPRuleMember", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigMemberId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolMemberID')]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbeMemberName'))]" + } + } + }, + { + "name": "HTTPSRuleMember", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigMemberId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolMemberID')]" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbeMemberName'))]" + } + } + } + ], + "probes": [ + { + "name": "[variables('httpProbePrimaryName')]", + "properties": { + "protocol": "Http", + "requestPath": "/artifactory/api/system/ping", + "port": 80, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpsProbePrimaryName')]", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpProbeMemberName')]", + "properties": { + "protocol": "Http", + "requestPath": "/artifactory/api/system/ping", + "port": 80, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpsProbeMemberName')]", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + } + ] + } + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "[parameters('storageAccountType')]" + }, + "tags":{ + "displayName": "Artifactory Storage Account" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "name": "deploySQLDB", + "apiVersion": "2018-07-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('dbTemplateLocation')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "db_user": { + "value": "[parameters('DB_Admin_User')]" + }, + "db_password": { + "value": "[parameters('DB_Admin_Password')]" + }, + "db_server": { + "value": "[variables('azureSqlServerName')]" + }, + "db_name": { + "value": "[parameters('DB_Name')]" + }, + "db_edition": { + "value": "[variables('DB_Edition')]" + }, + "db_location": { + "value": "[variables('DB_Location')]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('scaleSetPrimaryName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "plan": { + "name": "artifactory-jcr", + "publisher": "jfrog", + "product": "jfrogcontainerregistry-vm" + }, + "sku": { + "name": "[parameters('vmSku')]", + "tier": "Standard", + "capacity": "1" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": "250", + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','true','\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicPrimaryName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_artifactory.sh" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipPrimaryName')),'2018-07-01').dnsSettings.fqdn]", + "type": "string" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/JCR/MP_submission_6/nested/azureDBDeploy.json b/AzureResourceManager/JCR/MP_submission_6/nested/azureDBDeploy.json new file mode 100644 index 0000000..70c31a5 --- /dev/null +++ b/AzureResourceManager/JCR/MP_submission_6/nested/azureDBDeploy.json @@ -0,0 +1,96 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "artifactory", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "artmssqlsrv", + "minLength": 1 + }, + "db_name": { + "type": "string", + "defaultValue": "artdb", + "minLength": 1 + }, + "db_location": { + "type": "string", + "defaultValue": "" + }, + "db_edition": { + "type": "string", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + } + }, + "variables": { + "rtdbCollation": "Latin1_General_100_CS_AS", + "db_location": "[parameters('db_location')]" + }, + "resources": [ + { + "name": "[parameters('db_server')]", + "type": "Microsoft.Sql/servers", + "kind": "v12.0", + "location": "[variables('db_location')]", + "apiVersion": "2019-06-01-preview", + "tags": { + "displayName": "artifactoryDB" + }, + "properties": { + "administratorLogin": "[parameters('db_user')]", + "administratorLoginPassword": "[parameters('db_password')]", + "version": "12.0" + }, + "resources": [ + { + "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallrules", + "location": "[variables('db_location')]", + "apiVersion": "2019-06-01-preview", + "dependsOn": [ + "[concat('Microsoft.Sql/servers/', parameters('db_server'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "name": "[parameters('db_name')]", + "type": "databases", + "kind": "v12.0,user", + "location": "[variables('db_location')]", + "apiVersion": "2019-06-01-preview", + "dependsOn": [ + "[parameters('db_server')]" + ], + "tags": { + "displayName": "artifactoryDB" + }, + "properties": { + "edition": "[parameters('db_edition')]", + "maxSizeBytes": "1073741824", + "collation": "[variables('rtdbCollation')]" + } + } + ] + } + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[concat('jdbc:sqlserver://', reference(concat('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" + } + } +} diff --git a/AzureResourceManager/JCR/MP_submission_6/scripts/install_artifactory.sh b/AzureResourceManager/JCR/MP_submission_6/scripts/install_artifactory.sh new file mode 100644 index 0000000..d033b1d --- /dev/null +++ b/AzureResourceManager/JCR/MP_submission_6/scripts/install_artifactory.sh @@ -0,0 +1,206 @@ +#!/bin/bash +DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") +STORAGE_ACT_ENDPOINT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_ENDPOINT=" | sed "s/STO_ACT_ENDPOINT=//") +STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") +STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") + + +UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") + +export DEBIAN_FRONTEND=noninteractive + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") +[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory + +ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") +[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +cat </etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +cat </etc/nginx/conf.d/artifactory.conf +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /artifactory/webapp/ redirect; + rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; + rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; + chunked_transfer_encoding on; + client_max_body_size 0; + location /artifactory/ { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8081/artifactory/; + proxy_set_header X-Artifactory-Override-Base-Url + \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } +} +EOF + +HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') + +if [ "${IS_PRIMARY}" = "true" ]; then + NODE_NAME=art-primary +else + NODE_NAME=art-$(date +%s$RANDOM) +fi + +cat </var/opt/jfrog/artifactory/etc/ha-node.properties +node.id=${NODE_NAME} +artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data +context.url=http://${HOSTNAME}:8081/artifactory +access.context.url=http://${HOSTNAME}:8081/access +membership.port=10001 +hazelcast.interface=${HOSTNAME} +primary=${IS_PRIMARY} +EOF + +cat </var/opt/jfrog/artifactory/etc/db.properties +type=mssql +driver=com.microsoft.sqlserver.jdbc.SQLServerDriver +url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository +username=${DB_USER} +password=${DB_PASSWORD} +EOF + +mkdir -p /var/opt/jfrog/artifactory/etc/security + +cat </var/opt/jfrog/artifactory/etc/security/master.key +${MASTER_KEY} +EOF + +cat </var/opt/jfrog/artifactory/etc/binarystore.xml + + + + + + + + + + + + + + + + + crossNetworkStrategy + crossNetworkStrategy + 2 + 1 + + + + + remote + + + + local + + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + ${STORAGE_ACT_ENDPOINT} + ${STORAGE_CONTAINER} + + +EOF + +HOSTNAME=$(hostname -i) +sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem +rm /tmp/temp.pem + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key +rm /tmp/temp.key + +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' +echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep $((RANDOM % 240)) +service artifactory start +service nginx start +nginx -s reload +echo "INFO: Artifactory installation completed." > /tmp/artifactory-install.log diff --git a/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json b/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json new file mode 100644 index 0000000..e61080f --- /dev/null +++ b/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json @@ -0,0 +1,340 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", + "handler": "Microsoft.Azure.CreateUIDef", + "version": "0.1.2-preview", + "parameters": { + "basics": [ + {} + ], + "steps": [ + { + "name": "vmCredentials", + "label": "VM Credential", + "bladeTitle": "VM Credential", + "subLabel": { + "preValidation": "Provide VM credentials", + "postValidation": "Great - let's move on!" + }, + "elements": [ + { + "name": "adminUsername", + "type": "Microsoft.Compute.UserNameTextBox", + "label": "Admin username", + "osPlatform": "Linux", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + }, + "toolTip": "Provide admin username for the virtual machine" + }, + { + "name": "adminPassword", + "type": "Microsoft.Compute.CredentialsCombo", + "label": { + "password": "Password", + "confirmPassword": "Confirm password" + }, + "osPlatform": "Linux", + "constraints": { + "required": true, + "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", + "customValidationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." + }, + "options": { + "hideConfirmation": false + }, + "toolTip": { + "password": "Provide admin password for the virtual machine" + }, + "visible": true + } + ] + }, + { + "name": "clusterConfig", + "label": "JFrog Container Registry Cluster settings", + "subLabel": { + "preValidation": "Configure JFrog Container Registry Cluster settings", + "postValidation": "Done!" + }, + "bladeTitle": "JFrog Container Registry Cluster Settings", + "elements": [ + { + "name": "clusterName", + "type": "Microsoft.Common.TextBox", + "label": "Cluster name", + "toolTip": "Cluster name", + "defaultValue": "", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + } + }, + { + "name": "vmSku", + "type": "Microsoft.Compute.SizeSelector", + "label": "Virtual machine size", + "toolTip": "The size of the virtual machine for JFrog Container Registry", + "recommendedSizes": [ + "Standard_D2s_v3" + ], + "constraints": { + "allowedSizes": [ + "Standard_A4_v2", + "Standard_A4", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_DS2_v2", + "Standard_DS3_v2", + "Standard_D2_v2", + "Standard_D3_v2", + "Standard_DC2s", + "Standard_DC4s" + ] + }, + "osPlatform": "Linux", + "count": 1 + }, + { + "name": "artifactoryVersion", + "type": "Microsoft.Common.DropDown", + "label": "JFrog Container Registry-vm image version to deploy.", + "defaultValue": "7.4.3", + "toolTip": "Version of JFrog Container Registry to deploy", + "constraints": { + "allowedValues": [ + { + "label": "7.2.1", + "value": "7.2.1" + }, + { + "label": "7.3.2", + "value": "7.3.2" + }, + { + "label": "7.4.3", + "value": "7.4.3" + } + ], + "required": true + }, + "visible": true + }, + { + "name": "masterKey", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "JFrog Container Registry master Key", + "confirmPassword": "Confirm master Key" + }, + "toolTip": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,32}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "certificate", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Provide your SSL Certificate.", + "confirmPassword": "Confirm SSL Certificate." + }, + "toolTip": "To use JFrog Container Registry as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate.", + "constraints": { + "required": true, + "regex": "^(-----BEGIN CERTIFICATE-----)(.+)(-----END CERTIFICATE-----)$", + "validationMessage": "Provide SSL Certificate." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "certificateKey", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Provide your SSL Certificate key.", + "confirmPassword": "Confirm SSL Certificate key." + }, + "toolTip": "Provide your SSL Certificate key", + "constraints": { + "required": true, + "regex": "^(-----BEGIN)(.+)(PRIVATE KEY-----)(.+)(-----END)(.+)(PRIVATE KEY-----)$", + "validationMessage": "Provide SSL Certificate Key." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "certificateDomain", + "type": "Microsoft.Common.TextBox", + "label": "Provide your Certificate Domain Name.", + "defaultValue": "artifactory", + "toolTip": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team", + "constraints": { + "required": true, + "regex": "^(\\*)*([\\w-\\.])+$", + "validationMessage": "Must be a valid fully-qualified domain name." + } + }, + { + "name": "artifactoryServerName", + "type": "Microsoft.Common.TextBox", + "label": "Provide JFrog Container Registry server name to be used in Nginx.", + "defaultValue": "artifactory", + "toolTip": "Provide JFrog Container Registry server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,20}$", + "validationMessage": "Only letters and numbers are allowed, and the value must be 1-20 characters long." + } + }, + { + "name": "extraJavaOptions", + "type": "Microsoft.Common.TextBox", + "label": "Setting Java Memory Parameters for JFrog Container Registry", + "defaultValue": "-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", + "toolTip": "Setting Java Memory Parameters for JFrog Container Registry. Learn about system requirements for JFrog Container Registry https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware", + "constraints": { + "required": false, + "regex": "[^a-zA-Z0-9]+\\S+\\D", + "validationMessage": "Example: -server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"" + } + } + ] + }, + { + "name": "databaseConfig", + "label": "Database Configuration", + "subLabel": { + "preValidation": "Configure the Database", + "postValidation": "Done" + }, + "bladeTitle": "Database Credential", + "elements": [ + { + "name": "dbAdminUsername", + "type": "Microsoft.Compute.UserNameTextBox", + "label": "User name", + "toolTip": "Admin username for the database", + "osPlatform": "Linux", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + } + }, + { + "name": "dbAdminPassword", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Password", + "confirmPassword": "Confirm password" + }, + "toolTip": "Admin password for the database", + "constraints": { + "required": true, + "regex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", + "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." + }, + "options": { + "hideConfirmation": false + }, + "visible": true + }, + { + "name": "dbName", + "type": "Microsoft.Common.TextBox", + "label": "Database name", + "toolTip": "Database name", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,15}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-15 characters long." + } + }, + { + "name": "dbEdition", + "type": "Microsoft.Common.DropDown", + "label": "Database Edition", + "defaultValue": "Basic", + "toolTip": "Edition of Database to use", + "constraints": { + "allowedValues": [ + { + "label": "Basic", + "value": "Basic" + }, + { + "label": "Standard", + "value": "Standard" + }, + { + "label": "Premium", + "value": "Premium" + } + ], + "required": true + }, + "visible": true + } + ] + }, + { + "name": "storageConfig", + "label": "Storage settings", + "subLabel": { + "preValidation": "Configure the infrastructure settings", + "postValidation": "Done" + }, + "bladeTitle": "Storage settings", + "elements": [ + { + "name": "storageAccountsType", + "type": "Microsoft.Common.DropDown", + "label": "Storage account type", + "defaultValue": "Standard_LRS", + "toolTip": "Storage account type", + "constraints": { + "allowedValues": [ + { + "label": "Standard_LRS", + "value": "Standard_LRS" + } + ], + "required": true + }, + "visible": true + } + ] + } + ], + "outputs": { + "clusterName": "[steps('clusterConfig').clusterName]", + "vmSku": "[steps('clusterConfig').vmSku]", + "location": "[location()]", + "artifactoryVersion": "[steps('clusterConfig').artifactoryVersion]", + "masterKey": "[steps('clusterConfig').masterKey]", + "certificate": "[steps('clusterConfig').certificate]", + "certificateKey": "[steps('clusterConfig').certificateKey]", + "certificateDomain": "[steps('clusterConfig').certificateDomain]", + "artifactoryServerName": "[steps('clusterConfig').artifactoryServerName]", + "extraJavaOptions": "[steps('clusterConfig').extraJavaOptions]", + "adminUsername": "[steps('vmCredentials').adminUsername]", + "adminPassword": "[steps('vmCredentials').adminPassword.password]", + "DB_Admin_User": "[steps('databaseConfig').dbAdminUsername]", + "DB_Admin_Password": "[steps('databaseConfig').dbAdminPassword]", + "DB_Name": "[steps('databaseConfig').dbName]", + "DB_Edition": "[steps('databaseConfig').dbEdition]", + "storageAccountType": "[steps('storageConfig').storageAccountsType]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-2-1-7.zip b/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-2-1-7.zip new file mode 100644 index 0000000000000000000000000000000000000000..11a77276b0c7af91288dfbfa088ae7d4975dcbc6 GIT binary patch literal 10710 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 literal 0 HcmV?d00001 diff --git a/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-4-3-1.zip b/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-4-3-1.zip new file mode 100644 index 0000000000000000000000000000000000000000..f36955f39e6a84beaf543b5833b387237e55ca0b GIT binary patch literal 10739 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 z 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

n$sp#Gc0Us(/etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +cat </etc/nginx/conf.d/artifactory.conf +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /artifactory/webapp/ redirect; + rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; + chunked_transfer_encoding on; + client_max_body_size 0; + location /artifactory/ { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8081/artifactory/; + proxy_set_header X-Artifactory-Override-Base-Url + \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } + location / { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8082; + proxy_set_header X-Artifactory-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } + +} +EOF + +HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') + +if [ "${IS_PRIMARY}" = "true" ]; then + NODE_NAME=art-primary +else + NODE_NAME=art-$(date +%s$RANDOM) +fi + +# Java options +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml + +# Set MS SQL configuration +cat <>/var/opt/jfrog/artifactory/etc/system.yaml + ## One of: mysql, oracle, mssql, postgresql, mariadb + ## Default: Embedded derby + ## Example for mysql + type: mssql + driver: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository + username: ${DB_USER} + password: ${DB_PASSWORD} + +EOF + +mkdir -p /var/opt/jfrog/artifactory/etc/security + +cat </opt/jfrog/artifactory/var/etc/security/master.key +${MASTER_KEY} +EOF + +# NOTE: Path is changed in Artifactory 7. Non-HA configuration +mkdir -p /var/opt/jfrog/artifactory/etc/artifactory +cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + https://${STORAGE_ACCT}.blob.core.windows.net/ + ${STORAGE_CONTAINER} + + +EOF + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem +rm /tmp/temp.pem + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key +rm /tmp/temp.key + +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep $((RANDOM % 240)) +service artifactory start +service nginx start +nginx -s reload +echo "INFO: Artifactory installation completed." >> /tmp/artifactory-install.log diff --git a/AzureResourceManager/JCR/README.md b/AzureResourceManager/JCR/README.md new file mode 100644 index 0000000..5408864 --- /dev/null +++ b/AzureResourceManager/JCR/README.md @@ -0,0 +1,58 @@ +# Setup JFrog Container Registry + + + + + + + + +This template can help you setup the [JFrog Container Registry](https://www.jfrog.com/confluence/display/JCR/Welcome+to+JFrog+Container+Registry) on Azure. + +## A. Deploy JFrog Container Registry on Azure + +1. Click the "Deploy to Azure" button. + +2. Fill out the settings. Make sure to provide a valid SSL certificate. If using no certificate or one that is self-signed, see [Docker's documentation on client configuration](https://docs.docker.com/registry/insecure/). + +3. Click on "Purchase" to start deploying resources. It will deploy: + * Microsoft SQL database + * Azure Blob storage service + * A VM with NGINX and JFrog Container Registry + * Azure Load Balancer + +4. Once deployment is done. Copy FQDN from Output of deployment template. + +5. Access artifactory using FQDN. + +### Note: +1. Turn off daily backups. Read Documentation provided [here](https://www.jfrog.com/confluence/display/RTF/Managing+Backups) +2. Add an SSL Certificate to access Docker without using the insecure option +3. Input values for 'adminUsername' and 'adminPassword' parameters needs to follow azure VM access rules. +4. Refer to [System Requirements](https://www.jfrog.com/confluence/display/RTF/System+Requirements) for changing 'extraJavaOptions' input parameter value. + +### Steps to setup Artifactory as secure docker registry +You will need a valid SSL certificate for a domain name (for example, artifactory.jfrog.team) +1. Pass your SSL Certificate in parameter `Certificate` as string +2. Pass your SSL Certificate Key in parameter `CertificateKey` as string +3. Create DNS record with an entry that matches your domain name pointing to the load balancer value provided as output in template deployment. +4. You should now be able to access any docker registry using the path method. + * Login: `docker login [domain name]` in our example, that would be `docker login artifactory.jfrog.team` + * Pull/Push to a particular repository: `docker pull [domain name]/[repository name]/[image name]:[tag]` + * Example with our domain, pull from repository `docker-local`, the `latest` `busybox` image + * `docker pull artifactory.jfrog.team/docker-local/busybox:latest` + +### Steps to upgrade Artifactory Version + +1. Login into the VM instance and sudo as root. Use the admin credentials provided in the install setup. +Note: Use load balancer's NAT entries under Azure resources, to get the allocated NAT port for accessing the VM instance. + +2. Upgrade artifactory with following [RPM instructions](https://www.jfrog.com/confluence/display/JCR/Upgrading+JFrog+Container+Registry#UpgradingJFrogContainerRegistry-RPMInstallation). +------ +#### Note: +Supported locations: `East US 2`, `Central US`, `West Central US` and `West Europe`. +Please check the Azure region support for `Standard Sku` property in load balancer for this template to work properly. +Check for SQL server support on specified location. If SQL server is not available in the location, Use 'DB_Location' to specify the location with SQL server support. + + + \ No newline at end of file diff --git a/AzureResourceManager/JCR/azuredeploy.json b/AzureResourceManager/JCR/azuredeploy.json new file mode 100644 index 0000000..1a5878c --- /dev/null +++ b/AzureResourceManager/JCR/azuredeploy.json @@ -0,0 +1,622 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "vmSku": { + "type": "string", + "defaultValue": "Standard_D2s_v3", + "metadata": { + "description": "Size of VMs in the VM Scale Set." + } + }, + "clusterName": { + "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." + } + }, + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "artifactoryVersion": { + "type": "string", + "defaultValue": "7.4.3", + "allowedValues": [ + "7.2.1", + "7.3.2", + "7.4.3" + ], + "metadata": { + "description": "JFrog Container Registry-vm image version to deploy." + } + }, + "masterKey": { + "type": "string", + "defaultValue": "1ce2be4490ca2c662cb79636cf9b7b8e", + "maxLength": 64, + "metadata": { + "description": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'" + } + }, + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username on all VMs. Follow conventions for azure VM admin user name." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password on all VMs. Follow conventions for azure VM admin password rules." + } + }, + "certificate": { + "type": "string", + "defaultValue": "-----BEGIN CERTIFICATE----- MIIFhzCCA2+gAwIBAgIJALC4r5BQWZE4MA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRMwEQYDVQQHDApTYW50YUNsYXJh MQswCQYDVQQKDAJJVDEUMBIGA1UEAwwLKi5sb2NhbGhvc3QwHhcNMTgwMTE3MTk0 NjI4WhcNMTkwMTA4MTk0NjI4WjBaMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs aWZvcm5pYTETMBEGA1UEBwwKU2FudGFDbGFyYTELMAkGA1UECgwCSVQxFDASBgNV BAMMCyoubG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA 7KfOWDQlov8cMa8r/lcJqiWZaH9myQC74Vbe0HXsntQbcvljkjG2P7ebm5dd9Bzc sauNOJpbKf5AhFK1iwJUAkciGc1LR4k8wfWmQM3NPS8hrqrtH20zqNpdFRpNYjja JofwccPNm030GhhZkZ95TpruvmswMDwspl3jfqdcc/eiQsHcKyGnV2a+UAeoqe7J mHhmhRy1MLqAjF5U1GrUYUONA+22iRDJb4c9B91QoWvsnXpdA9NKV/mmA3/rIdx6 Ld2IPRdrIw2K5sAnXsh3bx2oCSvSfussf0x+4XDrnsaHVfjwvfNL8ECOuac2Oi/E WOp9528gOohpFAuwEt63Vl5p8/CC9m0HJDTZBKm2l5eD1kdPIj4PvP9Sn9CxGXKQ E1bxWoFxGX8EyRW0b0NK31N7b8JPZ1SoFNiB5amOMNLvR26a7cQrKumTuJeYK9Ja JaxhMXM7R0DA0Ev8ZG2xmyCygox+1KPSmJOIEpT70BFbj3rKLNqP22ET+zvPuh+2 DdgyrpHFeYkGWjMbWPjK7wJsD2zM8ccoJQfepPz8I4rT0JfrKAQgCGuGOggneaNJ KTVGNOFbj5AXdZ/Q+GvNommyRdq4J7EnqY6L+P25fo5qZ6UZ/iS0tPcvxgn0Fdhs pUPbQyQIDZyxZd3Q1lUIE38ol8P66mS2zbzf8EeOCoUCAwEAAaNQME4wHQYDVR0O BBYEFETAQM/5P7XJ8kevHFj6BPndQOFaMB8GA1UdIwQYMBaAFETAQM/5P7XJ8kev HFj6BPndQOFaMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAJ1TepKv LWYhFmVQcgZwZf/qt1a1cohzJSm6da9RCnnAWC7WC/U117bgSomtrH1v0OysHFhB zBBUeBqI7+OmzAX8dhj+roKkcnFUM/IwlK1eueIIA//CWvEf/o0XExilVS2yCc9d PTpOQBXwk9QinxK36kHdBiGxa7dW0JPnOEEmuMgGORKeLy4J6Ik8iSeFY1SZVcOI +6WWvoKciPlmIeccC+6YVmkeBwhP2o5r5w/UAaO2hSnGvmm4UIj/VJv4VQu7xTUp cIfFz5NtIr80DbqcyPiEMS2ETJ4L/kO4MS5FfeEXyQuXCzmiIDVY6tE3C7+kZmK4 JzPLuWm9ndQoyQySOGfQqvlUR1+YxUdvmu3LrOS5dOA354Q36wHa4wEGUoHU/7GV fYQmmmDSDaNSpXW5PFey6scFyDBS/yYJ0H9EjYb/11HeWYj8Yv5xTWj8nhzJONC8 D6Y5ydlU4PifM2pOf88pTYpmogNwLJWXbql5I9cvMa8APo4yLVqcISU5ynsvFke+ Non+T0mHpJai/hrA9NK+s6EGC1dAX58jy61h6FhOPI1d4s/mov/KMa2t3SfZp5SF 81aR6dHvO56teiK5M1xMkrqG75zh3TMFJJLRFe9XxeB4JeN76URB3mgADOUqkBxd ibSgVqfKwOw4IujEcqMUc5mqSnbLY1Dv+oby -----END CERTIFICATE-----", + "metadata": { + "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." + } + }, + "certificateKey": { + "type": "string", + "defaultValue": "-----BEGIN PRIVATE KEY----- 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 S+j1+iUKGGhwVmhqh75q5do3+VF3XlAh -----END PRIVATE KEY-----", + "metadata": { + "description": "Provide your SSL Certificate key" + } + }, + "certificateDomain": { + "type": "string", + "minLength": 1, + "defaultValue": "artifactory", + "metadata": { + "description": "Provide your Certificate Domain Name. For e.g jfrog.team for certificate with *.jfrog.team" + } + }, + "artifactoryServerName": { + "type": "string", + "minLength": 1, + "defaultValue": "artifactory", + "metadata": { + "description": "Provide artifactory server name to be used in Nginx. e.g artifactory for artifactory.jfrog.team" + } + }, + "extraJavaOptions": { + "type": "string", + "minLength": 1, + "defaultValue": "-server -Xms2g -Xmx12g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\\\"kill -9 %p\\\"", + "metadata": { + "description": "Setting Java Memory Parameters for Artifactory. Learn about system requirements for Artifactory https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware." + } + }, + "DB_Admin_User": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database Admin user name" + } + }, + "DB_Admin_Password": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Database Admin password" + } + }, + "DB_Name": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database name" + } + }, + "DB_Edition": { + "type": "string", + "minLength": 1, + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ], + "metadata": { + "description": "Database Edition" + } + }, + "storageAccountType": { + "type": "string", + "defaultValue": "Standard_LRS", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS", + "Standard_ZRS" + ], + "metadata": { + "description": "Storage Account 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": "https://raw.githubusercontent.com/JFrogDev/JFrog-Cloud-Installers/master/AzureResourceManager/JCR/" + }, + "_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": { + "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", + "addressPrefix": "10.0.0.0/16", + "subnetPrimaryPrefix": "10.0.1.0/24", + "virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", + "subnetPrimaryName": "[concat(variables('namingInfix'), 'primarySubnet')]", + "scaleSetPrimaryName": "[concat(variables('namingInfix'), 'primaryScaleset')]", + "lbName": "[concat(variables('namingInfix'), 'lb')]", + "bepoolPrimaryName": "[concat(variables('lbName'), 'primaryBepool')]", + "fepoolPrimaryName": "[concat(variables('lbName'), 'primaryFepool')]", + "bepoolPrimaryID": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bepoolPrimaryName'))]", + "feIpConfigPrimaryName": "[concat(variables('fepoolPrimaryName'), 'primaryIpConfig')]", + "feIpConfigPrimaryId": "[resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', variables('lbName'), variables('feIpConfigPrimaryName'))]", + "pipPrimaryName": "[concat(variables('namingInfix'), 'primaryPip')]", + "nicPrimaryName": "[concat(variables('namingInfix'), 'primaryNic')]", + "natPoolPrimaryName": "[concat(variables('lbName'), 'primaryNatpool')]", + "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", + "httpProbePrimaryName": "primaryHttpProbe", + "httpsProbePrimaryName": "primaryHttpsProbe", + "storageAccountName": "[concat(variables('namingInfix'), 'storage')]", + "vmStorageAccountContainerName": "filestore", + "azureSqlServerName": "[concat(variables('namingInfix'), 'sqlsrv')]", + "DB_Name": "[parameters('DB_Name')]", + "DB_Admin_User": "[parameters('DB_Admin_User')]", + "DB_Admin_Password": "[parameters('DB_Admin_Password')]", + "DB_Edition": "[parameters('DB_Edition')]", + "DB_Location": "[parameters('location')]", + "masterKey": "[parameters('masterKey')]", + "certificate": "[parameters('certificate')]", + "certificateKey": "[parameters('certificateKey')]", + "certificateDomain": "[parameters('certificateDomain')]", + "artifactoryServerName": "[parameters('artifactoryServerName')]", + "extraJavaOptions": "[parameters('extraJavaOptions')]", + "osType": { + "publisher": "jfrog", + "offer": "jfrogcontainerregistry-vm", + "sku": "artifactory-jcr-private", + "version": "[parameters('artifactoryVersion')]" + }, + "imageReference": "[variables('osType')]", + "dbTemplate": "azureDBDeploy.json", + "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "nsgName": "[concat(variables('namingInfix'), 'nsg')]" + }, + "resources": [ + { + "apiVersion": "2019-05-01", + "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "location": "[parameters('location')]", + "name": "[variables('nsgName')]", + "apiVersion": "2018-07-01", + "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-artifactory-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "8081", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 101, + "direction": "Inbound" + } + }, + { + "name": "http-nginx-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "80", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 102, + "direction": "Inbound" + } + }, + { + "name": "https-nginx-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "443", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 103, + "direction": "Inbound" + } + }, + { + "name": "membership-rule", + "properties": { + "description": "Allow HTTP", + "protocol": "Tcp", + "sourcePortRange": "*", + "destinationPortRange": "10001", + "sourceAddressPrefix": "Internet", + "destinationAddressPrefix": "*", + "access": "Allow", + "priority": 105, + "direction": "Inbound" + } + } + ] + } + }, + { + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-07-01", + "dependsOn": [ + "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + ], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('addressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[variables('subnetPrimaryName')]", + "properties": { + "addressPrefix": "[variables('subnetPrimaryPrefix')]", + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + } + ] + } + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicPrimaryName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + } + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('pipPrimaryName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard" + }, + "apiVersion": "2018-07-01", + "properties": { + "publicIPAllocationMethod": "Static", + "dnsSettings": { + "domainNameLabel": "[variables('namingInfix')]" + } + } + }, + { + "type": "Microsoft.Network/loadBalancers", + "name": "[variables('lbName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-07-01", + "sku": { + "name": "Standard" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" + ], + "tags":{ + "displayName": "Load Balancer" + }, + "properties": { + "frontendIPConfigurations": [ + { + "name": "[variables('feIpConfigPrimaryName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('pipPrimaryName'))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "[variables('bepoolPrimaryName')]" + } + ], + "inboundNatPools": [ + { + "name": "[variables('natPoolPrimaryName')]", + "properties": { + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "protocol": "tcp", + "frontendPortRangeStart": 10022, + "frontendPortRangeEnd": 11022, + "backendPort": 22 + } + } + ], + "loadBalancingRules": [ + { + "name": "HTTPRulePrimary", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolPrimaryID')]" + }, + "protocol": "Tcp", + "frontendPort": 80, + "backendPort": 80, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpProbePrimaryName'))]" + } + } + }, + { + "name": "HTTPSRulePrimary", + "properties": { + "loadDistribution": "Default", + "frontendIPConfiguration": { + "id": "[variables('feIpConfigPrimaryId')]" + }, + "backendAddressPool": { + "id": "[variables('bepoolPrimaryID')]" + }, + "protocol": "Tcp", + "frontendPort": 443, + "backendPort": 443, + "enableFloatingIP": false, + "idleTimeoutInMinutes": 5, + "probe": { + "id": "[resourceId('Microsoft.Network/loadBalancers/probes', variables('lbName'), variables('httpsProbePrimaryName'))]" + } + } + } + ], + "probes": [ + { + "name": "[variables('httpProbePrimaryName')]", + "properties": { + "protocol": "Http", + "requestPath": "/artifactory/api/system/ping", + "port": 80, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + }, + { + "name": "[variables('httpsProbePrimaryName')]", + "properties": { + "protocol": "Tcp", + "port": 443, + "intervalInSeconds": 60, + "numberOfProbes": 5 + } + } + ] + } + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "[parameters('storageAccountType')]" + }, + "tags":{ + "displayName": "Artifactory Storage Account" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "name": "deploySQLDB", + "apiVersion": "2018-07-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('dbTemplateLocation')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "db_user": { + "value": "[parameters('DB_Admin_User')]" + }, + "db_password": { + "value": "[parameters('DB_Admin_Password')]" + }, + "db_server": { + "value": "[variables('azureSqlServerName')]" + }, + "db_name": { + "value": "[parameters('DB_Name')]" + }, + "db_edition": { + "value": "[variables('DB_Edition')]" + }, + "db_location": { + "value": "[variables('DB_Location')]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('scaleSetPrimaryName')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + ], + "plan": { + "name": "artifactory-jcr-private", + "publisher": "jfrog", + "product": "jfrogcontainerregistry-vm" + }, + "sku": { + "name": "[parameters('vmSku')]", + "tier": "Standard", + "capacity": "1" + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": "false", + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": "250", + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nCERTIFICATE_KEY=',variables('certificateKey'),'\nCERTIFICATE=', variables('certificate'),'\nCERTIFICATE_DOMAIN=',variables('certificateDomain'),'\nARTIFACTORY_SERVER_NAME=',variables('artifactoryServerName'),'\nEXTRA_JAVA_OPTS=',variables('extraJavaOptions'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nDB_NAME=',variables('DB_Name'),'\nDB_ADMIN_USER=',variables('DB_Admin_User'),'\nDB_ADMIN_PASSWD=',variables('DB_Admin_Password'),'\nSTO_ACT_NAME=',variables('storageAccountName'),'\nSTO_ACT_ENDPOINT=',reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob,'\nSTO_CTR_NAME=',variables('vmStorageAccountContainerName'),'\nSTO_ACT_KEY=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2018-07-01').keys[0].value,'\nMASTER_KEY=',variables('masterKey'),'\nIS_PRIMARY=','true','\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicPrimaryName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetPrimaryName'))]" + }, + "loadBalancerBackendAddressPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', variables('lbName'), variables('bePoolPrimaryName'))]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[resourceId('Microsoft.Network/loadBalancers/inboundNatPools', variables('lbName'), variables('natPoolPrimaryName'))]" + } + ] + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_artifactory7.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "sh install_artifactory7.sh" + } + } + } + ] + } + } + } + } + ], + "outputs": { + "fqdn": { + "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses',variables('pipPrimaryName')),'2018-07-01').dnsSettings.fqdn]", + "type": "string" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/JCR/azuredeploy.parameters.json b/AzureResourceManager/JCR/azuredeploy.parameters.json new file mode 100644 index 0000000..c73c281 --- /dev/null +++ b/AzureResourceManager/JCR/azuredeploy.parameters.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "DB_Admin_User": { + "value": "GEN-UNIQUE" + }, + "DB_Admin_Password": { + "value": "GEN-PASSWORD" + }, + "DB_Name": { + "value": "GEN-UNIQUE" + }, + "masterKey": { + "value": "GEN-UNIQUE" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/JCR/images/HA_Diagram.png b/AzureResourceManager/JCR/images/HA_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..98cd3ee932e26b5b9c84683003a5bb354697a5bd GIT binary patch literal 107764 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 S=x1>m@rV`RcFh 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 BfT;ig literal 0 HcmV?d00001 diff --git a/AzureResourceManager/JCR/images/add_licenses.png b/AzureResourceManager/JCR/images/add_licenses.png new file mode 100644 index 0000000000000000000000000000000000000000..3a06f9dd43633fcad4353fde4947cf8895407c44 GIT binary patch literal 295712 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Çs+@ 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/etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +cat </etc/nginx/conf.d/artifactory.conf +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /artifactory/webapp/ redirect; + rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; + rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/\$repo/\$1/\$2; + chunked_transfer_encoding on; + client_max_body_size 0; + location /artifactory/ { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8081/artifactory/; + proxy_set_header X-Artifactory-Override-Base-Url + \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } +} +EOF + +HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') + +if [ "${IS_PRIMARY}" = "true" ]; then + NODE_NAME=art-primary +else + NODE_NAME=art-$(date +%s$RANDOM) +fi + +cat </var/opt/jfrog/artifactory/etc/ha-node.properties +node.id=${NODE_NAME} +artifactory.ha.data.dir=/var/opt/jfrog/artifactory/data +context.url=http://${HOSTNAME}:8081/artifactory +access.context.url=http://${HOSTNAME}:8081/access +membership.port=10001 +hazelcast.interface=${HOSTNAME} +primary=${IS_PRIMARY} +EOF + +cat </var/opt/jfrog/artifactory/etc/db.properties +type=mssql +driver=com.microsoft.sqlserver.jdbc.SQLServerDriver +url=${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository +username=${DB_USER} +password=${DB_PASSWORD} +EOF + +mkdir -p /var/opt/jfrog/artifactory/etc/security + +cat </var/opt/jfrog/artifactory/etc/security/master.key +${MASTER_KEY} +EOF + +cat </var/opt/jfrog/artifactory/etc/binarystore.xml + + + + + + + + + + + + + + + + + crossNetworkStrategy + crossNetworkStrategy + 2 + 1 + + + + + remote + + + + local + + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + ${STORAGE_ACT_ENDPOINT} + ${STORAGE_CONTAINER} + + +EOF + +HOSTNAME=$(hostname -i) +sed -i -e "s/art1/art-$(date +%s$RANDOM)/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/127.0.0.1/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties +sed -i -e "s/172.25.0.3/$HOSTNAME/" /var/opt/jfrog/artifactory/etc/ha-node.properties + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem +rm /tmp/temp.pem + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key +rm /tmp/temp.key + +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +[ -z "$EXTRA_JAVA_OPTS" ] && EXTRA_JAVA_OPTS='-server -Xms2g -Xmx6g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError="kill -9 %p"' +echo "export JAVA_OPTIONS=\"${EXTRA_JAVA_OPTS}\"" >> /var/opt/jfrog/artifactory/etc/default +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep $((RANDOM % 240)) +service artifactory start +service nginx start +nginx -s reload +echo "INFO: Artifactory installation completed." > /tmp/artifactory-install.log diff --git a/AzureResourceManager/JCR/scripts/install_artifactory7.sh b/AzureResourceManager/JCR/scripts/install_artifactory7.sh new file mode 100644 index 0000000..77a62b7 --- /dev/null +++ b/AzureResourceManager/JCR/scripts/install_artifactory7.sh @@ -0,0 +1,178 @@ +#!/bin/bash +DB_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JDBC_STR" | sed "s/JDBC_STR=//") +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +STORAGE_ACCT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_NAME=" | sed "s/STO_ACT_NAME=//") +STORAGE_ACT_ENDPOINT=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_ENDPOINT=" | sed "s/STO_ACT_ENDPOINT=//") +STORAGE_CONTAINER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_CTR_NAME=" | sed "s/STO_CTR_NAME=//") +STORAGE_ACCT_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^STO_ACT_KEY=" | sed "s/STO_ACT_KEY=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +IS_PRIMARY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^IS_PRIMARY=" | sed "s/IS_PRIMARY=//") + + +export DEBIAN_FRONTEND=noninteractive + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +CERTIFICATE_DOMAIN=$(cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_DOMAIN=" | sed "s/CERTIFICATE_DOMAIN=//") +[ -z "$CERTIFICATE_DOMAIN" ] && CERTIFICATE_DOMAIN=artifactory + +ARTIFACTORY_SERVER_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_SERVER_NAME=" | sed "s/ARTIFACTORY_SERVER_NAME=//") +[ -z "$ARTIFACTORY_SERVER_NAME" ] && ARTIFACTORY_SERVER_NAME=artifactory + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +cat </etc/nginx/nginx.conf + #user nobody; + worker_processes 1; + error_log /var/log/nginx/error.log info; + #pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + variables_hash_max_size 1024; + variables_hash_bucket_size 64; + server_names_hash_max_size 4096; + server_names_hash_bucket_size 128; + types_hash_max_size 2048; + types_hash_bucket_size 64; + proxy_read_timeout 2400s; + client_header_timeout 2400s; + client_body_timeout 2400s; + proxy_connect_timeout 75s; + proxy_send_timeout 2400s; + proxy_buffer_size 32k; + proxy_buffers 40 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 250m; + proxy_http_version 1.1; + client_body_buffer_size 128k; + + include /etc/nginx/conf.d/*.conf; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + #tcp_nopush on; + #keepalive_timeout 0; + keepalive_timeout 65; + } +EOF + +cat </etc/nginx/conf.d/artifactory.conf +ssl_certificate /etc/pki/tls/certs/cert.pem; +ssl_certificate_key /etc/pki/tls/private/cert.key; +ssl_session_cache shared:SSL:1m; +ssl_prefer_server_ciphers on; +## server configuration +server { + listen 443 ssl; + listen 80 ; + server_name ~(?.+)\\.${CERTIFICATE_DOMAIN} artifactory ${ARTIFACTORY_SERVER_NAME}.${CERTIFICATE_DOMAIN}; + if (\$http_x_forwarded_proto = '') { + set \$http_x_forwarded_proto \$scheme; + } + ## Application specific logs + ## access_log /var/log/nginx/artifactory-access.log timing; + ## error_log /var/log/nginx/artifactory-error.log; + rewrite ^/$ /artifactory/webapp/ redirect; + rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect; + chunked_transfer_encoding on; + client_max_body_size 0; + location /artifactory/ { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8081/artifactory/; + proxy_set_header X-Artifactory-Override-Base-Url + \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } + location / { + proxy_read_timeout 2400; + proxy_pass_header Server; + proxy_cookie_path ~*^/.* /; + proxy_pass http://127.0.0.1:8082; + proxy_set_header X-Artifactory-Override-Base-Url \$http_x_forwarded_proto://\$host:\$server_port/artifactory; + proxy_set_header X-Forwarded-Port \$server_port; + proxy_set_header X-Forwarded-Proto \$http_x_forwarded_proto; + proxy_set_header Host \$http_host; + proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; + } + +} +EOF + +HOSTNAME=$(ip route get 8.8.8.8 | awk '{print $NF; exit}') + +if [ "${IS_PRIMARY}" = "true" ]; then + NODE_NAME=art-primary +else + NODE_NAME=art-$(date +%s$RANDOM) +fi + +# Java options +EXTRA_JAVA_OPTS=$(cat /var/lib/cloud/instance/user-data.txt | grep "^EXTRA_JAVA_OPTS=" | sed "s/EXTRA_JAVA_OPTS=//") +sed -i -e "s/#extraJavaOpts: \"-Xms512m -Xmx2g\"/extraJavaOpts: ${EXTRA_JAVA_OPTS}/" /var/opt/jfrog/artifactory/etc/system.yaml + +# Set MS SQL configuration +cat <>/var/opt/jfrog/artifactory/etc/system.yaml + ## One of: mysql, oracle, mssql, postgresql, mariadb + ## Default: Embedded derby + ## Example for mysql + type: mssql + driver: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: ${DB_URL};databaseName=${DB_NAME};sendStringParametersAsUnicode=false;applicationName=Artifactory Binary Repository + username: ${DB_USER} + password: ${DB_PASSWORD} + +EOF + +mkdir -p /var/opt/jfrog/artifactory/etc/security + +cat </opt/jfrog/artifactory/var/etc/security/master.key +${MASTER_KEY} +EOF + +# NOTE: Path is changed in Artifactory 7. Non-HA configuration +mkdir -p /var/opt/jfrog/artifactory/etc/artifactory +cat </var/opt/jfrog/artifactory/etc/artifactory/binarystore.xml + + + + ${STORAGE_ACCT} + ${STORAGE_ACCT_KEY} + https://${STORAGE_ACCT}.blob.core.windows.net/ + ${STORAGE_CONTAINER} + + +EOF + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE=" | sed "s/CERTIFICATE=//" > /tmp/temp.pem +cat /tmp/temp.pem | sed 's/CERTIFICATE----- /&\n/g' | sed 's/ -----END/\n-----END/g' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/certs/cert.pem +rm /tmp/temp.pem + +cat /var/lib/cloud/instance/user-data.txt | grep "^CERTIFICATE_KEY=" | sed "s/CERTIFICATE_KEY=//" > /tmp/temp.key +cat /tmp/temp.key | sed 's/KEY----- /&\n/' | sed 's/ -----END/\n-----END/' | awk '{if($0 ~ /----/) {print;} else { gsub(/ /,"\n");print;}}' > /etc/pki/tls/private/cert.key +rm /tmp/temp.key + +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/security && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# start Artifactory +sleep $((RANDOM % 240)) +service artifactory start +service nginx start +nginx -s reload +echo "INFO: Artifactory installation completed." >> /tmp/artifactory-install.log diff --git a/AzureResourceManager/Postgresql/azurePostgresDBDeploy.json b/AzureResourceManager/Postgresql/azurePostgresDBDeploy.json new file mode 100644 index 0000000..b06316e --- /dev/null +++ b/AzureResourceManager/Postgresql/azurePostgresDBDeploy.json @@ -0,0 +1,175 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "xray", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_name": { + "type": "string", + "defaultValue": "xrayrtdb", + "minLength": 1 + }, + "db_location": { + "type": "string", + "defaultValue": "" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2 + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5" + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2" + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 5120 + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose" + }, + "version": { + "type": "string", + "defaultValue": "9.6" + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7 + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled" + }, + "databases": { + "type": "object", + "defaultValue": + { + "name": "xray", + "charset": "UTF8", + "collation": "English_United States.1252" + } + }, + "sslEnforcement": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "SSL Enforcement" + } + }, + "publicNetworkAccess": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Enabled", + "metadata": { + "description": "Public Network Access" + } + } + }, + "variables": { + "db_location": "[if(equals(parameters('db_location'), ''), resourceGroup().location, parameters('db_location'))]" + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "location": "[variables('db_location')]", + "name": "[parameters('db_server')]", + "properties": { + "version": "[parameters('version')]", + "administratorLogin": "[parameters('db_user')]", + "administratorLoginPassword": "[parameters('db_password')]", + "publicNetworkAccess": "[parameters('publicNetworkAccess')]", + "sslEnforcement": "[parameters('sslEnforcement')]", + "storageProfile": { + "storageMB": "[parameters('skuSizeMB')]", + "backupRetentionDays": "[parameters('backupRetentionDays')]", + "geoRedundantBackup": "[parameters('geoRedundantBackup')]" + } + }, + "sku": { + "name": "[parameters('skuName')]", + "tier": "[parameters('skuTier')]", + "capacity": "[parameters('skuCapacity')]", + "size": "[parameters('skuSizeMB')]", + "family": "[parameters('skuFamily')]" + }, + "resources": [ + { + "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallRules", + "apiVersion": "2017-12-01", + "location": "[variables('db_location')]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/databases", + "apiversion": "2017-12-01", + "name": "[concat(parameters('db_server'), '/', parameters('databases').properties[0].name)]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "charset": "[parameters('databases').properties[0].charset]", + "collation": "[parameters('databases').properties[0].collation]" + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/databases", + "apiversion": "2017-12-01", + "name": "[concat(parameters('db_server'), '/', parameters('databases').properties[1].name)]", + "condition": "[greater(length(parameters('databases').properties), 0)]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "charset": "[parameters('databases').properties[1].charset]", + "collation": "[parameters('databases').properties[1].collation]" + } + } + ] + } + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[concat('jdbc:postgresql://', reference(concat('Microsoft.DBforPostgreSQL/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':5432')]" + }, + "dbServerName": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "xrayConnString": { + "type": "string", + "value": "[concat('postgres://', reference(concat('Microsoft.DBforPostgreSQL/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':5432')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Postgresql/postgres.parameters.json b/AzureResourceManager/Postgresql/postgres.parameters.json new file mode 100644 index 0000000..5aad362 --- /dev/null +++ b/AzureResourceManager/Postgresql/postgres.parameters.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "value": "GEN-UNIQUE" + }, + "db_password": { + "value": "GEN-UNIQUE" + }, + "db_server": { + "value": "postgressrvr" + }, + "databases": { + "value": { + "properties": [ + { + "name": "artdb", + "charset": "UTF8", + "collation": "English_United States.1252" + }, + { + "name": "xray", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/LICENSE b/AzureResourceManager/Xray/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/AzureResourceManager/Xray/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/AzureResourceManager/Xray/MP_submission/createUiDefinition.json b/AzureResourceManager/Xray/MP_submission/createUiDefinition.json new file mode 100644 index 0000000..e27c5ed --- /dev/null +++ b/AzureResourceManager/Xray/MP_submission/createUiDefinition.json @@ -0,0 +1,315 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", + "handler": "Microsoft.Azure.CreateUIDef", + "version": "0.1.2-preview", + "parameters": { + "basics": [], + "steps": [ + { + "name": "vmCredential", + "label": "VM Credential", + "bladeTitle": "VM Credential", + "subLabel": { + "preValidation": "Provide VM credentials", + "postValidation": "Great - let's move on!" + }, + "elements": [ + { + "name": "virtualMachine", + "type": "Microsoft.Common.Section", + "elements": [ + { + "name": "adminUsername", + "type": "Microsoft.Compute.UserNameTextBox", + "label": "Admin username", + "osPlatform": "Linux", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + }, + "toolTip": "Provide admin username for the virtual machine" + }, + { + "name": "adminPassword", + "type": "Microsoft.Compute.CredentialsCombo", + "label": { + "password": "Password", + "confirmPassword": "Confirm password" + }, + "osPlatform": "Linux", + "constraints": { + "required": true, + "customPasswordRegex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", + "customValidationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." + }, + "options": { + "hideConfirmation": false + }, + "toolTip": { + "password": "Provide admin password for the virtual machine" + }, + "visible": true + } + ], + "visible": true + }, + { + "name": "vnet", + "type": "Microsoft.Network.VirtualNetworkCombo", + "toolTip": "Provide Virtual Network information", + "label": { + "virtualNetwork": "Virtual Network", + "subnets": "Subnets" + }, + "defaultValue": { + "name": "vmx-vnet", + "addressPrefixSize": "/16" + }, + "constraints": { + "minAddressPrefixSize": "/24" + }, + "subnets": { + "subnet1": { + "label": "Subnet", + "defaultValue": { + "name": "vmx-subnet", + "addressPrefixSize": "/24" + }, + "constraints": { + "minAddressPrefixSize": "/29", + "minAddressCount": 8, + "requireContiguousAddresses": true + } + } + } + }, + { + "name": "vmSku", + "type": "Microsoft.Compute.SizeSelector", + "label": "Virtual machine size", + "toolTip": "The size of the virtual machine for Xray", + "recommendedSizes": [ + "Standard_D4s_v3" + ], + "constraints": { + "allowedSizes": [ + "Standard_A4_v2", + "Standard_A4", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3", + "Standard_DS3_v2", + "Standard_D3_v2", + "Standard_DC4s" + ] + }, + "osPlatform": "Linux", + "count": 1 + } + ] + }, + { + "name": "xrayConfig", + "label": "Xray settings", + "subLabel": { + "preValidation": "Configure Xray Deployment", + "postValidation": "Done!" + }, + "bladeTitle": "Xray Settings", + "elements": [ + { + "name": "xrayVersion", + "type": "Microsoft.Common.DropDown", + "label": "Xray-vm image version to deploy.", + "defaultValue": "3.6.2", + "toolTip": "Version of Xray to deploy", + "constraints": { + "allowedValues": [ + { + "label": "3.6.2", + "value": "0.0.3" + } + ], + "required": true + }, + "visible": true + }, + { + "name": "clusterName", + "type": "Microsoft.Common.TextBox", + "label": "Cluster name", + "toolTip": "Cluster name", + "defaultValue": "", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + } + }, + { + "name": "masterKey", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Xray master Key", + "confirmPassword": "Confirm master Key" + }, + "toolTip": "Master key for Xray instance. Generate master.key using command '$openssl rand -hex 16'", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,32}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "joinKey", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Artifactory join Key", + "confirmPassword": "Confirm join Key" + }, + "toolTip": "Join key from Artifactory cluster. You can copy Join key from the Artifactory UI, Security -> Settings -> Connection details", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,32}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." + }, + "options": { + "hideConfirmation": true + } + }, + { + "name": "artifactoryURL", + "type": "Microsoft.Common.TextBox", + "label": "Provide artifactory URL to connect Xray instance", + "defaultValue": "https://myorgartifactory.com", + "toolTip": "Provide Artifactory URL", + "constraints": { + "required": true, + "regex": "^(https?)://[^\\s/$.?#].[^\\s]*$", + "validationMessage": "URL is not valid" + } + } + ] + }, + { + "name": "databaseConfig", + "label": "Database Configuration", + "subLabel": { + "preValidation": "Configure the Database", + "postValidation": "Done" + }, + "bladeTitle": "Database Credential", + "elements": [ + { + "name": "infoMessage", + "type": "Microsoft.Common.InfoBox", + "visible": true, + "options": { + "icon": "Info", + "text": "You can deploy a new Postgresql server or use your existing Postgres server and database. Please make sure Postgresql instance is set up correctly before Xray deployment. Check README.md https://github.com/jfrog/JFrog-Cloud-Installers/blob/arm-xray/AzureResourceManager/Xray/README.md#postgresql-deployment. You can use Postgresql template from here https://github.com/jfrog/JFrog-Cloud-Installers/tree/arm-xray/AzureResourceManager/Postgresql" + } + }, + { + "name": "db_type", + "type": "Microsoft.Common.DropDown", + "label": "Database options", + "toolTip": "Deploy a new DB instance or use an existing DB", + "constraints": { + "required": true, + "allowedValues": [ + { + "label": "Deploy a new Postgresql instance", + "value": "Postgresql_deploy.json" + }, + { + "label": "Use existing Postgresql instance", + "value": "Postgresql_existing.json" + } + ] + }, + "visible": true + }, + { + "name": "db_server", + "type": "Microsoft.Common.TextBox", + "label": "Database server name. Skip if a new deployment is selected", + "toolTip": "Database server name", + "constraints": { + "required": false, + "regex": "^[a-z0-9A-Z]{1,15}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-15 characters long." + } + }, + { + "name": "manual_db_url", + "type": "Microsoft.Common.TextBox", + "label": "Database connection string. Skip if a new deployment is selected", + "toolTip": "Jdbc connection string for MSSQL or Postgresql", + "constraints": { + "required": false, + "regex": "..*", + "validationMessage": "DB connection string is not valid" + } + }, + { + "name": "db_user", + "type": "Microsoft.Compute.UserNameTextBox", + "label": "User name", + "toolTip": "Admin username for the database", + "osPlatform": "Linux", + "constraints": { + "required": true, + "regex": "^[a-z0-9A-Z]{1,30}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-30 characters long." + } + }, + { + "name": "db_password", + "type": "Microsoft.Common.PasswordBox", + "label": { + "password": "Password", + "confirmPassword": "Confirm password" + }, + "toolTip": "Admin password for the database", + "constraints": { + "required": true, + "regex": "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{12,}$", + "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." + }, + "options": { + "hideConfirmation": false + }, + "visible": true + } + ] + } + ], + "outputs": { + "location": "[location()]", + "adminUsername": "[steps('vmCredential').virtualMachine.adminUsername]", + "adminPassword": "[steps('vmCredential').virtualMachine.adminPassword.password]", + "virtualNetworkName": "[steps('vmCredential').vnet.name]", + "virtualNetworkNewOrExisting": "[steps('vmCredential').vnet.newOrExisting]", + "virtualNetworkAddressPrefix": "[first(steps('vmCredential').vnet.addressPrefixes)]", + "virtualNetworkResourceGroup": "[steps('vmCredential').vnet.resourceGroup]", + "virtualMachineSize": "[steps('vmCredential').vmSku]", + "subnetName": "[steps('vmCredential').vnet.subnets.subnet1.name]", + "subnetAddressPrefix": "[steps('vmCredential').vnet.subnets.subnet1.addressPrefix]", + "xrayVersion": "[steps('xrayConfig').xrayVersion]", + "clusterName": "[steps('xrayConfig').clusterName]", + "artifactoryURL": "[steps('xrayConfig').artifactoryURL]", + "masterKey": "[steps('xrayConfig').masterKey]", + "joinKey": "[steps('xrayConfig').joinKey]", + "db_type": "[steps('databaseConfig').db_type]", + "db_server": "[steps('databaseConfig').db_server]", + "manual_db_url": "[steps('databaseConfig').manual_db_url]", + "db_user": "[steps('databaseConfig').db_user]", + "db_password": "[steps('databaseConfig').db_password]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-0.zip b/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-0.zip new file mode 100644 index 0000000000000000000000000000000000000000..14c300e3256d1a2ee961de00f361c6344709f9b5 GIT binary patch literal 8490 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 U!ofcSBK-Q4|1x+jNuNjm1^7_((f|Me literal 0 HcmV?d00001 diff --git a/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-1.zip b/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-1.zip new file mode 100644 index 0000000000000000000000000000000000000000..3c564190480c8b179f3cfdd8fe55ec0020b80e89 GIT binary patch literal 8633 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 literal 0 HcmV?d00001 diff --git a/AzureResourceManager/Xray/MP_submission/mainTemplate.json b/AzureResourceManager/Xray/MP_submission/mainTemplate.json new file mode 100644 index 0000000..9232cc5 --- /dev/null +++ b/AzureResourceManager/Xray/MP_submission/mainTemplate.json @@ -0,0 +1,400 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "clusterName": { + "type": "string", + "defaultValue": "xray", + "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." + } + }, + "xrayVersion": { + "type": "string", + "defaultValue": "0.0.3", + "allowedValues": [ + "0.0.3" + ], + "metadata": { + "description": "Xray-vm image version to deploy." + } + }, + "artifactoryURL": { + "type": "string", + "metadata": { + "description": "Artifactory URL" + } + }, + "masterKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" + } + }, + "joinKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Join key for Artifactory cluster. Generate join.key using command '$openssl rand -hex 16'" + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "testadmin", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "New or Existing VNet Name" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "metadata": { + "description": "Boolean indicating whether the VNet is new or existing" + } + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "metadata": { + "description": "VNet address prefix" + } + }, + "virtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the VNet" + } + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "The size of the VM" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "New or Existing subnet Name" + } + }, + "subnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Subnet address prefix" + } + }, + "db_type": { + "type": "string", + "defaultValue": "Postgresql_deploy.json", + "allowedValues": [ + "Postgresql_deploy.json", + "Postgresql_existing.json" + ], + "metadata": { + "description": "Deploy new Postgresql, MSSQL or use existing DB" + } + }, + "manual_db_url": { + "type": "string", + "metadata": { + "description": "DB server URL, if existing DB server is used instead of a new deployment (jdbc:sqlserver://.. or jdbc:postgresql://..)" + } + }, + "db_server": { + "type": "string", + "metadata": { + "description": "DB server name, if pre-existing DB is used" + } + }, + "db_user": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database Admin user name" + } + }, + "db_password": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Database Admin password" + } + }, + "databases": { + "type": "object", + "defaultValue": { + "properties": [ + { + "name": "xray", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } + }, + "_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": { + "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", + "publicIPAddressName": "[concat(uniqueString(resourceGroup().id),'IP')]", + "clusterName": "[parameters('clusterName')]", + "nicName": "[concat(variables('clusterName'),'Nic')]", + "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", + "vnetId": { + "new": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", + "existing": "[resourceId(parameters('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]" + }, + "subnetId": "[concat(variables('vnetId')[parameters('virtualNetworkNewOrExisting')],'/subnets/',parameters('subnetName'))]", + "publicIPAddressType": "Dynamic", + "db_server": "[parameters('db_server')]", + "db_user": "[concat(parameters('db_user'), '@', parameters('db_server'))]", + "db_password": "[parameters('db_password')]", + "db_location": "[parameters('location')]", + "db_name": "[parameters('databases').properties[0].name]", + "masterKey": "[parameters('masterKey')]", + "joinKey": "[parameters('joinKey')]", + "osType": { + "publisher": "jfrog", + "offer": "x-ray-vm", + "sku": "x-ray-vm", + "version": "[parameters('xrayVersion')]" + }, + "imageReference": "[variables('osType')]", + "dbTemplate": "[parameters('db_type')]", + "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "artifactoryURL": "[parameters('artifactoryURL')]" + }, + "resources": [ + { + "apiVersion": "2019-05-01", + "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "condition": "[equals(parameters('virtualNetworkNewOrExisting'),'new')]", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[parameters('virtualNetworkName')]", + "location": "[parameters('location')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[parameters('virtualNetworkAddressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[parameters('subnetName')]", + "properties": { + "addressPrefix": "[parameters('subnetAddressPrefix')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "apiVersion": "2020-05-01", + "location": "[parameters('location')]", + "properties": { + "publicIPAllocationMethod": "[variables('publicIPAddressType')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "apiVersion": "2020-05-01", + "location": "[parameters('location')]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetId')]" + } + } + } + ], + "enableIPForwarding": true + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2018-11-01", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "name": "deploySQLDB", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('dbTemplateLocation')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "db_user": { + "value": "[parameters('db_user')]" + }, + "db_password": { + "value": "[variables('db_password')]" + }, + "db_server": { + "value": "[variables('db_server')]" + }, + "db_location": { + "value": "[variables('db_location')]" + }, + "databases": { + "value": "[parameters('databases')]" + }, + "manual_db_url": { + "value": "[parameters('manual_db_url')]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[concat(variables('namingInfix'), 'xrayScaleset')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "plan": { + "name": "x-ray-vm", + "publisher": "jfrog", + "product": "x-ray-vm" + }, + "sku": { + "name": "[parameters('virtualMachineSize')]", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": 250, + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nXRAY_VERSION=', parameters('xrayVersion'),'\nARTIFACTORY_URL=',variables('artifactoryURL'),'\nDB_SERVER=',variables('db_server'),'\nDB_NAME=',variables('db_name'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[variables('subnetId')]" + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_xray.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "./install_xray.sh >> /opt/installation_log1.txt" + } + } + } + ] + } + } + } + } + ] +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/MP_submission/nested/Postgresql_deploy.json b/AzureResourceManager/Xray/MP_submission/nested/Postgresql_deploy.json new file mode 100644 index 0000000..4f6d8ce --- /dev/null +++ b/AzureResourceManager/Xray/MP_submission/nested/Postgresql_deploy.json @@ -0,0 +1,161 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "xray", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2 + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5" + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2" + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 5120 + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose" + }, + "version": { + "type": "string", + "defaultValue": "9.6" + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7 + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled" + }, + "databases": { + "type": "object" + }, + "sslEnforcement": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "SSL Enforcement" + } + }, + "publicNetworkAccess": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Enabled", + "metadata": { + "description": "Public Network Access" + } + }, + "db_edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "location": "[parameters('db_location')]", + "name": "[parameters('db_server')]", + "properties": { + "version": "[parameters('version')]", + "administratorLogin": "[parameters('db_user')]", + "administratorLoginPassword": "[parameters('db_password')]", + "publicNetworkAccess": "[parameters('publicNetworkAccess')]", + "sslEnforcement": "[parameters('sslEnforcement')]", + "storageProfile": { + "storageMB": "[parameters('skuSizeMB')]", + "backupRetentionDays": "[parameters('backupRetentionDays')]", + "geoRedundantBackup": "[parameters('geoRedundantBackup')]" + } + }, + "sku": { + "name": "[parameters('skuName')]", + "tier": "[parameters('skuTier')]", + "capacity": "[parameters('skuCapacity')]", + "size": "[parameters('skuSizeMB')]", + "family": "[parameters('skuFamily')]" + }, + "resources": [ + { + "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallRules", + "apiVersion": "2017-12-01", + "location": "[parameters('db_location')]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/databases", + "apiversion": "2017-12-01", + "name": "[concat(parameters('db_server'), '/', parameters('databases').properties[0].name)]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "charset": "[parameters('databases').properties[0].charset]", + "collation": "[parameters('databases').properties[0].collation]" + } + } + ] + } + ], + "outputs": { + "dbServerName": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "db_edition": { + "type": "string", + "value": "[parameters('db_edition')]" + }, + "manual_db_url": { + "type": "string", + "value": "[parameters('manual_db_url')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/MP_submission/nested/Postgresql_existing.json b/AzureResourceManager/Xray/MP_submission/nested/Postgresql_existing.json new file mode 100644 index 0000000..6e8be3a --- /dev/null +++ b/AzureResourceManager/Xray/MP_submission/nested/Postgresql_existing.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "artifactory", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "databases": { + "type": "object" + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[parameters('manual_db_url')]" + }, + "db_user": { + "type": "string", + "value": "[parameters('db_user')]" + }, + "db_server": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "db_location": { + "type": "string", + "value": "[parameters('db_location')]" + }, + "databases": { + "type": "object", + "value": "[parameters('databases')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh b/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh new file mode 100644 index 0000000..5828c61 --- /dev/null +++ b/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh @@ -0,0 +1,35 @@ +#!/bin/bash +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +DB_SERVER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_SERVER=" | sed "s/DB_SERVER=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +JOIN_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JOIN_KEY=" | sed "s/JOIN_KEY=//") +ARTIFACTORY_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_URL=" | sed "s/ARTIFACTORY_URL=//") + +export DEBIAN_FRONTEND=noninteractive + +# Create master.key on each node +sudo mkdir -p /opt/jfrog/xray/var/etc/security/ +cat </opt/jfrog/xray/var/etc/security/master.key +${MASTER_KEY} +EOF + +# Xray should have the same join key as the Artifactory instance +# Both application should be deployed in the same Virtual Networks +HOSTNAME=$(hostname -i) +sed -i -e "s/ip:..*/ip: ${HOSTNAME}/" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s#jfrogUrl:..*#jfrogUrl: \"${ARTIFACTORY_URL}\"#" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s/joinKey:..*/joinKey: ${JOIN_KEY}/" /var/opt/jfrog/xray/etc/system.yaml +# DB configuration +sed -i -e "s/url: postgres:..*/url: \"postgres:\/\/${DB_SERVER}.postgres.database.azure.com:5432\/${DB_NAME}?sslmode=disable\"/" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s/username:..*/username: \"${DB_USER}\"/" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s/password:..*/password: \"${DB_PASSWORD}\"/" /var/opt/jfrog/xray/etc/system.yaml + +chown xray:xray -R /opt/jfrog/xray/var/etc/security/* && chown xray:xray -R /opt/jfrog/xray/var/etc/security/ + + +# Enable and start Xray service +sudo systemctl enable xray.service +sudo systemctl start xray.service +sudo systemctl restart xray.service diff --git a/AzureResourceManager/Xray/README.md b/AzureResourceManager/Xray/README.md new file mode 100644 index 0000000..6c6a61e --- /dev/null +++ b/AzureResourceManager/Xray/README.md @@ -0,0 +1,101 @@ +# Setup JFrog Xray +The recommended way of deploying is through the Azure marketplace. + + + + + +This template can help you setup [JFrog Xray](https://jfrog.com/xray/) on Azure. + +## Prerequisites +1. JFrog Xray is an addition to JFrog Artifactory. + * To be able to use it, you need to have an Artifactory instance deployed in Azure with the appropriate license. If you do not have an Xray compatible license, you can [get a free trial](https://jfrog.com/xray/free-trial/). + +2. Deployed Postgresql instance (if "existing DB" is selected as a parameter). + +## Postgresql deployment +Xray could fail to connect to "out of the box" Azure Postgresql. You can deploy a compatible Postgresql instance using this link: + + + + + +In the Databases field, use the object: + +``` + { + "properties": [ + { + "name": "xray", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } +``` +Before deploying Xray, please do following steps: +1. Use the admin role given by Azure that you initially connected with to PSDB (for example xray) - Remember the password of this role to connect when setting up with Xray. + +2. Create a new role named xray@{hostname}, where {hostname} is a DB server name. + +3. Add xray@{hostname} membership to the base Azure user. In the client tab (PgAdmin for example) right click on properties of role "azure_pg_admin" and under Membership tab, add the relevant "xray@{hostname}", click on the checkbox on the tag, save. + +4. Change ownership of Xray database. Right click On the name of the database and change owner to "xray@{hostname}" + +After these steps are done, run Xray deployment. + +## Installation +1. Click "Deploy to Azure" button. If you don't have an Azure subscription, it will guide you on how to signup for a free trial. + +2. Fill out the form. Make sure to use the Artifactory Join key, which you can copy from the Artifactory UI, Security -> Settings -> Connection details + +3. Click Review + Create, then click Create to start the deployment + +4. Once deployment is done, access Xray thru Artifactory UI, Security & Compliance menu + + + + +### Note: +1. This template only supports Xray versions 3.2.x and above. +2. Input values for 'adminUsername' and 'adminPassword' parameters needs to follow azure VM access rules. + +### Steps to upgrade JFrog Xray version + +ARM templates uses a debian installation and you can follow the [official instructions](https://www.jfrog.com/confluence/display/JFROG/Upgrading+Xray#UpgradingXray-InteractiveScriptUpgrade(recommended).1) but for your convenience, you can use this method. + +SSH to the Xray VM and CD to the /opt/ folder. Create an empty file upgrade.sh + +``touch upgrade.sh`` + +Make the file executable: + +```chmod +x upgrade.sh``` + +Open the file + +```vi upgrade.sh``` + +Paste the commands below (check the version of Xray you want to upgrade to): +``` +cd /opt/ +echo "### Stopping Xray service before upgrade ###" +systemctl stop xray.service +XRAY_VERSION=3.6.2 +wget -O jfrog-xray-${XRAY_VERSION}-deb.tar.gz https://api.bintray.com/content/jfrog/jfrog-xray/xray-deb/${XRAY_VERSION}/jfrog-xray-${XRAY_VERSION}-deb.tar.gz?bt_package=jfrog-xray +tar -xvf jfrog-xray-${XRAY_VERSION}-deb.tar.gz +rm jfrog-xray-${XRAY_VERSION}-deb.tar.gz +cd jfrog-xray-${XRAY_VERSION}-deb +echo "### Run Xray installation script ###" +echo "y" | ./install.sh +echo "### Start Xray service ###" +systemctl start xray.service +``` +Run the script + +```./upgrade.sh``` + +The script will upgrade existing 3.x version of Xray to the given version. Check /var/opt/jfrog/xray/console.log to make sure that the service was properly started. Look for the message: +```All services started successfully in 10.743 seconds``` +and check the application version in the log. + diff --git a/AzureResourceManager/Xray/azuredeploy_xray.json b/AzureResourceManager/Xray/azuredeploy_xray.json new file mode 100644 index 0000000..fa5829a --- /dev/null +++ b/AzureResourceManager/Xray/azuredeploy_xray.json @@ -0,0 +1,389 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "vmName": { + "type": "string", + "metadata": { + "title": "VM Name", + "description": "This is the name of the your VM" + } + }, + "xrayVersion": { + "type": "string", + "defaultValue": "3.5.2", + "allowedValues": [ + "3.5.2" + ], + "metadata": { + "description": "Xray-vm image version to deploy." + } + }, + "artifactoryURL": { + "type": "string", + "metadata": { + "description": "Artifactory URL" + } + }, + "masterKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" + } + }, + "joinKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Join key for Artifactory cluster. Generate join.key using command '$openssl rand -hex 16'" + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "testadmin", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "New or Existing VNet Name" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "metadata": { + "description": "Boolean indicating whether the VNet is new or existing" + } + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "metadata": { + "description": "VNet address prefix" + } + }, + "virtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the VNet" + } + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "The size of the VM" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "New or Existing subnet Name" + } + }, + "subnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Subnet address prefix" + } + }, + "db_type": { + "type": "string", + "defaultValue": "Postgresql_deploy.json", + "allowedValues": [ + "Postgresql_deploy.json", + "Postgresql_existing.json" + ], + "metadata": { + "description": "Deploy new Postgresql, MSSQL or use existing DB" + } + }, + "manual_db_url": { + "type": "string", + "metadata": { + "description": "DB server URL, if existing DB server is used instead of a new deployment (jdbc:sqlserver://.. or jdbc:postgresql://..)" + } + }, + "db_server": { + "type": "string", + "metadata": { + "description": "DB server name, if pre-existing DB is used" + } + }, + "db_user": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database Admin user name" + } + }, + "db_password": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Database Admin password" + } + }, + "databases": { + "type": "object", + "defaultValue": { + "properties": [ + { + "name": "xray", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } + }, + "_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/jfrog/JFrog-Cloud-Installers/arm-xray/AzureResourceManager/Xray/" + }, + "_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), 'sawinvm')]", + "publicIPAddressName": "[concat(uniqueString(resourceGroup().id),'IP')]", + "vmName": "[parameters('vmName')]", + "nicName": "[concat(parameters('vmName'),'Nic')]", + "vnetId": { + "new": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", + "existing": "[resourceId(parameters('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]" + }, + "subnetId": "[concat(variables('vnetId')[parameters('virtualNetworkNewOrExisting')],'/subnets/',parameters('subnetName'))]", + "publicIPAddressType": "Dynamic", + "db_server": "[parameters('db_server')]", + "db_user": "[concat(parameters('db_user'), '@', parameters('db_server'))]", + "db_password": "[parameters('db_password')]", + "db_location": "[parameters('location')]", + "db_name": "[parameters('databases').properties[0].name]", + "masterKey": "[parameters('masterKey')]", + "joinKey": "[parameters('joinKey')]", + "osType": { + "publisher": "Canonical", + "offer": "UbuntuServer", + "sku": "18.04-LTS", + "version": "latest" + }, + "imageReference": "[variables('osType')]", + "dbTemplate": "[parameters('db_type')]", + "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "artifactoryURL": "[parameters('artifactoryURL')]" + }, + "resources": [ + { + "apiVersion": "2019-05-01", + "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "condition": "[equals(parameters('virtualNetworkNewOrExisting'),'new')]", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2017-09-01", + "name": "[parameters('virtualNetworkName')]", + "location": "[parameters('location')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[parameters('virtualNetworkAddressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[parameters('subnetName')]", + "properties": { + "addressPrefix": "[parameters('subnetAddressPrefix')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "apiVersion": "2015-06-15", + "location": "[parameters('location')]", + "properties": { + "publicIPAllocationMethod": "[variables('publicIPAddressType')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "apiVersion": "2016-03-30", + "location": "[parameters('location')]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetId')]" + } + } + } + ], + "enableIPForwarding": true + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2018-11-01", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "name": "deploySQLDB", + "apiVersion": "2018-07-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('dbTemplateLocation')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "db_user": { + "value": "[parameters('db_user')]" + }, + "db_password": { + "value": "[variables('db_password')]" + }, + "db_server": { + "value": "[variables('db_server')]" + }, + "db_location": { + "value": "[variables('db_location')]" + }, + "databases": { + "value": "[parameters('databases')]" + }, + "manual_db_url": { + "value": "[parameters('manual_db_url')]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2018-10-01", + "name": "[variables('vmName')]", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "properties": { + "hardwareProfile": { + "vmSize": "[parameters('virtualMachineSize')]" + }, + "osProfile": { + "computerName": "[variables('vmName')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nXRAY_VERSION=', parameters('xrayVersion'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nARTIFACTORY_URL=',variables('artifactoryURL'),'\nDB_SERVER=',variables('db_server'),'\nDB_NAME=',variables('db_name'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\n'))]" + }, + "storageProfile": { + "imageReference": "[variables('imageReference')]", + "osDisk": { + "createOption": "FromImage" + }, + "dataDisks": [ + { + "diskSizeGB": 1023, + "lun": 0, + "createOption": "Empty" + } + ] + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" + } + ] + }, + "diagnosticsProfile": { + "bootDiagnostics": { + "enabled": true, + "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" + } + } + }, + "resources": [ + { + "apiVersion": "2019-03-01", + "type": "extensions", + "name": "config-app", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" + ], + "tags": { + "displayName": "config-app" + }, + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.1", + "autoUpgradeMinorVersion": true, + "settings": { + }, + "protectedSettings": { + "commandToExecute": "echo 'hello!' >> /opt/installation_log.txt", + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('vm_install/install_xray_to_vm.sh', parameters('_artifactsLocationSasToken')))]", + "[uri(parameters('_artifactsLocation'), concat('scripts/install_xray.sh', parameters('_artifactsLocationSasToken')))]" + ] + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/azuredeploy_xray.parameters.json b/AzureResourceManager/Xray/azuredeploy_xray.parameters.json new file mode 100644 index 0000000..2af13e3 --- /dev/null +++ b/AzureResourceManager/Xray/azuredeploy_xray.parameters.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "clusterName": { + "value": "GEN-UNIQUE" + }, + "adminUsername": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-UNIQUE" + }, + "virtualNetworkName": { + "value": "existing-vm-network-name" + }, + "subnetName": { + "value": "existing-subnet-name" + }, + "virtualNetworkNewOrExisting": { + "value": "existing" + }, + "virtualNetworkAddressPrefix": { + "value": "10.0.0.0/16" + }, + "virtualNetworkResourceGroup": { + "value": "resource-group-name" + }, + "virtualMachineSize": { + "value": "Standard_D4s_v3" + }, + "subnetAddressPrefix": { + "value": "10.0.1.0/24" + }, + "xrayVersion": { + "value": "0.0.3" + }, + "artifactoryURL": { + "value": "http://artifactory-url.cloudapp.azure.com" + }, + "masterKey": { + "value": "GEN-UNIQUE" + }, + "joinKey": { + "value": "GEN-UNIQUE" + }, + "db_type": { + "value": "Postgresql_existing.json" + }, + "db_user": { + "value": "GEN-UNIQUE" + }, + "db_password": { + "value": "GEN-UNIQUE" + }, + "manual_db_url": { + "value": "jdbc:postgresql://postgressrvr.postgres.database.azure.com:5432" + }, + "db_server": { + "value": "postgressrvr" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/azuredeploy_xray_vmss.json b/AzureResourceManager/Xray/azuredeploy_xray_vmss.json new file mode 100644 index 0000000..711d6bb --- /dev/null +++ b/AzureResourceManager/Xray/azuredeploy_xray_vmss.json @@ -0,0 +1,400 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "location": { + "type": "string", + "defaultValue": "[resourceGroup().location]", + "metadata": { + "description": "Location for the resources." + } + }, + "clusterName": { + "type": "string", + "defaultValue": "xray", + "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." + } + }, + "xrayVersion": { + "type": "string", + "defaultValue": "0.0.3", + "allowedValues": [ + "0.0.3" + ], + "metadata": { + "description": "Xray-vm image version to deploy." + } + }, + "artifactoryURL": { + "type": "string", + "metadata": { + "description": "Artifactory URL" + } + }, + "masterKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" + } + }, + "joinKey": { + "type": "securestring", + "maxLength": 64, + "metadata": { + "description": "Join key for Artifactory cluster. Generate join.key using command '$openssl rand -hex 16'" + } + }, + "adminUsername": { + "type": "string", + "defaultValue": "testadmin", + "metadata": { + "description": "Username for the Virtual Machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Password for the Virtual Machine." + } + }, + "virtualNetworkName": { + "type": "string", + "metadata": { + "description": "New or Existing VNet Name" + } + }, + "virtualNetworkNewOrExisting": { + "type": "string", + "metadata": { + "description": "Boolean indicating whether the VNet is new or existing" + } + }, + "virtualNetworkAddressPrefix": { + "type": "string", + "metadata": { + "description": "VNet address prefix" + } + }, + "virtualNetworkResourceGroup": { + "type": "string", + "metadata": { + "description": "Resource group of the VNet" + } + }, + "virtualMachineSize": { + "type": "string", + "metadata": { + "description": "The size of the VM" + } + }, + "subnetName": { + "type": "string", + "metadata": { + "description": "New or Existing subnet Name" + } + }, + "subnetAddressPrefix": { + "type": "string", + "metadata": { + "description": "Subnet address prefix" + } + }, + "db_type": { + "type": "string", + "defaultValue": "Postgresql_deploy.json", + "allowedValues": [ + "Postgresql_deploy.json", + "Postgresql_existing.json" + ], + "metadata": { + "description": "Deploy new Postgresql, MSSQL or use existing DB" + } + }, + "manual_db_url": { + "type": "string", + "metadata": { + "description": "DB server URL, if existing DB server is used instead of a new deployment (jdbc:sqlserver://.. or jdbc:postgresql://..)" + } + }, + "db_server": { + "type": "string", + "metadata": { + "description": "DB server name, if pre-existing DB is used" + } + }, + "db_user": { + "type": "string", + "minLength": 1, + "metadata": { + "description": "Database Admin user name" + } + }, + "db_password": { + "type": "securestring", + "minLength": 1, + "metadata": { + "description": "Database Admin password" + } + }, + "databases": { + "type": "object", + "defaultValue": { + "properties": [ + { + "name": "xray", + "charset": "UTF8", + "collation": "English_United States.1252" + } + ] + } + }, + "_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/jfrog/JFrog-Cloud-Installers/arm-xray/AzureResourceManager/Xray/" + }, + "_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": { + "namingInfix": "[toLower(substring(concat(parameters('clusterName'), uniqueString(resourceGroup().id)), 0, 9))]", + "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'sawinvm')]", + "publicIPAddressName": "[concat(uniqueString(resourceGroup().id),'IP')]", + "clusterName": "[parameters('clusterName')]", + "nicName": "[concat(variables('clusterName'),'Nic')]", + "ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", + "vnetId": { + "new": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", + "existing": "[resourceId(parameters('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]" + }, + "subnetId": "[concat(variables('vnetId')[parameters('virtualNetworkNewOrExisting')],'/subnets/',parameters('subnetName'))]", + "publicIPAddressType": "Dynamic", + "db_server": "[parameters('db_server')]", + "db_user": "[concat(parameters('db_user'), '@', parameters('db_server'))]", + "db_password": "[parameters('db_password')]", + "db_location": "[parameters('location')]", + "db_name": "[parameters('databases').properties[0].name]", + "masterKey": "[parameters('masterKey')]", + "joinKey": "[parameters('joinKey')]", + "osType": { + "publisher": "jfrog", + "offer": "x-ray-vm", + "sku": "x-ray-vm", + "version": "[parameters('xrayVersion')]" + }, + "imageReference": "[variables('osType')]", + "dbTemplate": "[parameters('db_type')]", + "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", + "artifactoryURL": "[parameters('artifactoryURL')]" + }, + "resources": [ + { + "apiVersion": "2019-05-01", + "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", + "type": "Microsoft.Resources/deployments", + "properties": { + "mode": "Incremental", + "template": { + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "resources": [] + } + } + }, + { + "condition": "[equals(parameters('virtualNetworkNewOrExisting'),'new')]", + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2020-05-01", + "name": "[parameters('virtualNetworkName')]", + "location": "[parameters('location')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[parameters('virtualNetworkAddressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[parameters('subnetName')]", + "properties": { + "addressPrefix": "[parameters('subnetAddressPrefix')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "name": "[variables('publicIPAddressName')]", + "apiVersion": "2020-05-01", + "location": "[parameters('location')]", + "properties": { + "publicIPAllocationMethod": "[variables('publicIPAddressType')]" + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "name": "[variables('nicName')]", + "apiVersion": "2020-05-01", + "location": "[parameters('location')]", + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" + }, + "subnet": { + "id": "[variables('subnetId')]" + } + } + } + ], + "enableIPForwarding": true + }, + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]" + ] + }, + { + "type": "Microsoft.Storage/storageAccounts", + "apiVersion": "2018-11-01", + "name": "[variables('storageAccountName')]", + "location": "[parameters('location')]", + "sku": { + "name": "Standard_LRS" + }, + "kind": "Storage", + "properties": {} + }, + { + "type": "Microsoft.Resources/deployments", + "name": "deploySQLDB", + "apiVersion": "2019-09-01", + "properties": { + "mode": "Incremental", + "templateLink": { + "uri": "[variables('dbTemplateLocation')]", + "contentVersion": "1.0.0.0" + }, + "parameters": { + "db_user": { + "value": "[parameters('db_user')]" + }, + "db_password": { + "value": "[variables('db_password')]" + }, + "db_server": { + "value": "[variables('db_server')]" + }, + "db_location": { + "value": "[variables('db_location')]" + }, + "databases": { + "value": "[parameters('databases')]" + }, + "manual_db_url": { + "value": "[parameters('manual_db_url')]" + } + } + } + }, + { + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[concat(variables('namingInfix'), 'xrayScaleset')]", + "location": "[parameters('location')]", + "apiVersion": "2018-10-01", + "dependsOn": [ + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", + "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" + ], + "plan": { + "name": "x-ray-vm", + "publisher": "jfrog", + "product": "x-ray-vm" + }, + "sku": { + "name": "[parameters('virtualMachineSize')]", + "tier": "Standard", + "capacity": 1 + }, + "properties": { + "singlePlacementGroup": true, + "overprovision": false, + "upgradePolicy": { + "mode": "Manual" + }, + "virtualMachineProfile": { + "storageProfile": { + "osDisk": { + "caching": "ReadWrite", + "diskSizeGB": 250, + "createOption": "FromImage" + }, + "imageReference": "[variables('imageReference')]" + }, + "osProfile": { + "computerNamePrefix": "[variables('namingInfix')]", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]", + "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nXRAY_VERSION=', parameters('xrayVersion'),'\nARTIFACTORY_URL=',variables('artifactoryURL'),'\nDB_SERVER=',variables('db_server'),'\nDB_NAME=',variables('db_name'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\n'))]" + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[variables('nicName')]", + "properties": { + "primary": true, + "ipConfigurations": [ + { + "name": "[concat(variables('ipConfigName'),'1')]", + "properties": { + "subnet": { + "id": "[variables('subnetId')]" + } + } + } + ] + } + } + ] + }, + "extensionProfile": { + "extensions": [ + { + "name": "extension1", + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.0", + "autoUpgradeMinorVersion": false, + "settings": { + "fileUris": [ + "[uri(parameters('_artifactsLocation'), concat('scripts/install_xray.sh', parameters('_artifactsLocationSasToken')))]" + ] + }, + "protectedSettings": { + "commandToExecute": "./install_xray.sh >> /opt/installation_log1.txt" + } + } + } + ] + } + } + } + } + ] +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/nested/Postgresql_deploy.json b/AzureResourceManager/Xray/nested/Postgresql_deploy.json new file mode 100644 index 0000000..4f6d8ce --- /dev/null +++ b/AzureResourceManager/Xray/nested/Postgresql_deploy.json @@ -0,0 +1,161 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "xray", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "skuCapacity": { + "type": "int", + "defaultValue": 2 + }, + "skuFamily": { + "type": "string", + "defaultValue": "Gen5" + }, + "skuName": { + "type": "string", + "defaultValue": "GP_Gen5_2" + }, + "skuSizeMB": { + "type": "int", + "defaultValue": 5120 + }, + "skuTier": { + "type": "string", + "defaultValue": "GeneralPurpose" + }, + "version": { + "type": "string", + "defaultValue": "9.6" + }, + "backupRetentionDays": { + "type": "int", + "defaultValue": 7 + }, + "geoRedundantBackup": { + "type": "string", + "defaultValue": "Disabled" + }, + "databases": { + "type": "object" + }, + "sslEnforcement": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Disabled", + "metadata": { + "description": "SSL Enforcement" + } + }, + "publicNetworkAccess": { + "type": "string", + "allowedValues": [ + "Enabled", + "Disabled" + ], + "defaultValue": "Enabled", + "metadata": { + "description": "Public Network Access" + } + }, + "db_edition": { + "type": "string", + "defaultValue": "Basic", + "allowedValues": [ + "Basic", + "Standard", + "Premium" + ] + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + { + "type": "Microsoft.DBforPostgreSQL/servers", + "apiVersion": "2017-12-01", + "location": "[parameters('db_location')]", + "name": "[parameters('db_server')]", + "properties": { + "version": "[parameters('version')]", + "administratorLogin": "[parameters('db_user')]", + "administratorLoginPassword": "[parameters('db_password')]", + "publicNetworkAccess": "[parameters('publicNetworkAccess')]", + "sslEnforcement": "[parameters('sslEnforcement')]", + "storageProfile": { + "storageMB": "[parameters('skuSizeMB')]", + "backupRetentionDays": "[parameters('backupRetentionDays')]", + "geoRedundantBackup": "[parameters('geoRedundantBackup')]" + } + }, + "sku": { + "name": "[parameters('skuName')]", + "tier": "[parameters('skuTier')]", + "capacity": "[parameters('skuCapacity')]", + "size": "[parameters('skuSizeMB')]", + "family": "[parameters('skuFamily')]" + }, + "resources": [ + { + "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", + "type": "firewallRules", + "apiVersion": "2017-12-01", + "location": "[parameters('db_location')]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "startIpAddress": "0.0.0.0", + "endIpAddress": "0.0.0.0" + } + }, + { + "type": "Microsoft.DBforPostgreSQL/servers/databases", + "apiversion": "2017-12-01", + "name": "[concat(parameters('db_server'), '/', parameters('databases').properties[0].name)]", + "dependsOn": [ + "[resourceId('Microsoft.DBforPostgreSQL/servers', parameters('db_server'))]" + ], + "properties": { + "charset": "[parameters('databases').properties[0].charset]", + "collation": "[parameters('databases').properties[0].collation]" + } + } + ] + } + ], + "outputs": { + "dbServerName": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "db_edition": { + "type": "string", + "value": "[parameters('db_edition')]" + }, + "manual_db_url": { + "type": "string", + "value": "[parameters('manual_db_url')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/nested/Postgresql_existing.json b/AzureResourceManager/Xray/nested/Postgresql_existing.json new file mode 100644 index 0000000..6e8be3a --- /dev/null +++ b/AzureResourceManager/Xray/nested/Postgresql_existing.json @@ -0,0 +1,54 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "db_user": { + "type": "string", + "defaultValue": "artifactory", + "minLength": 1 + }, + "db_password": { + "type": "securestring" + }, + "db_server": { + "type": "string", + "defaultValue": "xraypostgressrv", + "minLength": 1 + }, + "db_location": { + "type": "string" + }, + "databases": { + "type": "object" + }, + "manual_db_url": { + "type": "string" + } + }, + "variables": { + }, + "resources": [ + ], + "outputs": { + "jdbcConnString": { + "type": "string", + "value": "[parameters('manual_db_url')]" + }, + "db_user": { + "type": "string", + "value": "[parameters('db_user')]" + }, + "db_server": { + "type": "string", + "value": "[parameters('db_server')]" + }, + "db_location": { + "type": "string", + "value": "[parameters('db_location')]" + }, + "databases": { + "type": "object", + "value": "[parameters('databases')]" + } + } +} \ No newline at end of file diff --git a/AzureResourceManager/Xray/scripts/install_xray.sh b/AzureResourceManager/Xray/scripts/install_xray.sh new file mode 100644 index 0000000..5828c61 --- /dev/null +++ b/AzureResourceManager/Xray/scripts/install_xray.sh @@ -0,0 +1,35 @@ +#!/bin/bash +DB_NAME=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_NAME=" | sed "s/DB_NAME=//") +DB_USER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_USER=" | sed "s/DB_ADMIN_USER=//") +DB_PASSWORD=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_ADMIN_PASSWD=" | sed "s/DB_ADMIN_PASSWD=//") +DB_SERVER=$(cat /var/lib/cloud/instance/user-data.txt | grep "^DB_SERVER=" | sed "s/DB_SERVER=//") +MASTER_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^MASTER_KEY=" | sed "s/MASTER_KEY=//") +JOIN_KEY=$(cat /var/lib/cloud/instance/user-data.txt | grep "^JOIN_KEY=" | sed "s/JOIN_KEY=//") +ARTIFACTORY_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY_URL=" | sed "s/ARTIFACTORY_URL=//") + +export DEBIAN_FRONTEND=noninteractive + +# Create master.key on each node +sudo mkdir -p /opt/jfrog/xray/var/etc/security/ +cat </opt/jfrog/xray/var/etc/security/master.key +${MASTER_KEY} +EOF + +# Xray should have the same join key as the Artifactory instance +# Both application should be deployed in the same Virtual Networks +HOSTNAME=$(hostname -i) +sed -i -e "s/ip:..*/ip: ${HOSTNAME}/" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s#jfrogUrl:..*#jfrogUrl: \"${ARTIFACTORY_URL}\"#" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s/joinKey:..*/joinKey: ${JOIN_KEY}/" /var/opt/jfrog/xray/etc/system.yaml +# DB configuration +sed -i -e "s/url: postgres:..*/url: \"postgres:\/\/${DB_SERVER}.postgres.database.azure.com:5432\/${DB_NAME}?sslmode=disable\"/" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s/username:..*/username: \"${DB_USER}\"/" /var/opt/jfrog/xray/etc/system.yaml +sed -i -e "s/password:..*/password: \"${DB_PASSWORD}\"/" /var/opt/jfrog/xray/etc/system.yaml + +chown xray:xray -R /opt/jfrog/xray/var/etc/security/* && chown xray:xray -R /opt/jfrog/xray/var/etc/security/ + + +# Enable and start Xray service +sudo systemctl enable xray.service +sudo systemctl start xray.service +sudo systemctl restart xray.service diff --git a/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh b/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh new file mode 100644 index 0000000..79a0d15 --- /dev/null +++ b/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Upgrade version for every release +XRAY_VERSION=3.6.2 + +export DEBIAN_FRONTEND=noninteractive + +apt-get update -y +apt-get upgrade -y + +# Download Xray +cd /opt/ +wget -O jfrog-xray-${XRAY_VERSION}-deb.tar.gz 'https://bintray.com/jfrog/jfrog-xray/download_file?agree=true&artifactPath=/jfrog/jfrog-xray/xray-deb/'${XRAY_VERSION}'/jfrog-xray-'${XRAY_VERSION}'-deb.tar.gz&callback_id=&product=org.grails.taglib.NamespacedTagDispatcher' \ +>> /var/log/download-xray.log 2>&1 +tar -xvf jfrog-xray-${XRAY_VERSION}-deb.tar.gz +rm jfrog-xray-${XRAY_VERSION}-deb.tar.gz +cd jfrog-xray-${XRAY_VERSION}-deb + +# Generate txt file with the parameters to use in the interactive installation script +cat </opt/jfrog-xray-${XRAY_VERSION}-deb/input.txt +/var/opt/jfrog/xray +http:// +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +replace_with_host_ip +N +n +postgres://{postgres_server_name}.postgres.database.azure.com:5432/xray?sslmode=disable +xray@postgres_server_name +password +EOF + +# Run interactive installation script with default parameters +cat "/opt/jfrog-xray-${XRAY_VERSION}-deb/input.txt" | ./install.sh >> /var/log/install-xray.log 2>&1 + +# Add Callhome to the Xray instance +cat <>/opt/jfrog/xray/app/bin/xray.default +export PARTNER_ID=Partner/ACC-007221 +export INTEGRATION_NAME=ARM_xray/1.0.0 +EOF + +# Remove Xray service from boot up run +sudo systemctl disable xray.service \ No newline at end of file From d56935b274c6e76f8d2219cd834bac7861419d40 Mon Sep 17 00:00:00 2001 From: Daniel Miakotkin <55418063+danielmkn@users.noreply.github.com> Date: Tue, 8 Sep 2020 13:35:04 -0700 Subject: [PATCH 18/20] 7.7.3 (#39) * ARM templates - 7.7.3 support added. Pro and JCR * ARM templates - Xray 3.8.2 support * ARM templates - Nginx configuration changed for JCR * ARM templates - Xray ARM extension script, yq added, Rabbitmq default password added * ARM templates - Xray, Extension script changes * ARM templates - RT readme updated, branch for extensions scripts switched back to master * ARM templates - JCR, updated API, best practives * ARM templates - Nginx configuration changed for JCR * ARM templates - MP submissions, Xray installation script changes, master key minimun char number added in JCR * ARM templates - Parameters draft --- .../MP_submission/artifactory-pro-7-7-3-0.zip | Bin 0 -> 19278 bytes .../MP_submission/createUiDefinition.json | 6 +- .../MP_submission/mainTemplate.json | 5 +- AzureResourceManager/Artifactory/README.md | 7 +- .../Artifactory/azuredeploy_ms_ps.json | 7 +- .../azuredeploy_ms_ps.parameters.json | 4 +- .../vm_install/install_pro7_to_vm.sh | 2 +- .../MP_submission_7/createUiDefinition.json | 8 +- ...container-registry-artifactory-7-7-3-0.zip | Bin 0 -> 10772 bytes .../JCR/MP_submission_7/mainTemplate.json | 37 +- .../MP_submission_7/nested/azureDBDeploy.json | 10 +- AzureResourceManager/JCR/azuredeploy.json | 52 ++- .../JCR/azuredeploy.parameters.json | 8 +- .../JCR/nested/azureDBDeploy.json | 18 +- .../JCR/vm_install/install_jcr7_to_vm.sh | 51 +++ .../Postgresql/postgres.parameters.json | 4 +- .../MP_submission/createUiDefinition.json | 10 +- .../Xray/MP_submission/jfrog-xray-3-8-2-0.zip | Bin 0 -> 8714 bytes .../Xray/MP_submission/mainTemplate.json | 5 +- .../MP_submission/scripts/install_xray.sh | 19 +- .../Xray/azuredeploy_xray.json | 389 ------------------ .../Xray/azuredeploy_xray.parameters.json | 2 +- .../Xray/azuredeploy_xray_vmss.json | 11 +- .../Xray/scripts/install_xray.sh | 19 +- .../Xray/vm_install/install_xray_to_vm.sh | 3 +- 25 files changed, 185 insertions(+), 492 deletions(-) create mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-7-3-0.zip create mode 100644 AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-7-3-0.zip create mode 100644 AzureResourceManager/JCR/vm_install/install_jcr7_to_vm.sh create mode 100644 AzureResourceManager/Xray/MP_submission/jfrog-xray-3-8-2-0.zip delete mode 100644 AzureResourceManager/Xray/azuredeploy_xray.json diff --git a/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-7-3-0.zip b/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-7-3-0.zip new file mode 100644 index 0000000000000000000000000000000000000000..dd67abd6980e8897c111c91eeeaed00249e503c5 GIT binary patch literal 19278 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 aBciVz;LQr0{AFO^2EuUQnyrU!ARYjS(>`wi literal 0 HcmV?d00001 diff --git a/AzureResourceManager/Artifactory/MP_submission/createUiDefinition.json b/AzureResourceManager/Artifactory/MP_submission/createUiDefinition.json index acfeb1a..e91512a 100644 --- a/AzureResourceManager/Artifactory/MP_submission/createUiDefinition.json +++ b/AzureResourceManager/Artifactory/MP_submission/createUiDefinition.json @@ -132,7 +132,7 @@ "name": "artifactoryVersion", "type": "Microsoft.Common.DropDown", "label": "Artifactory-vm image version to deploy.", - "defaultValue": "7.6.2", + "defaultValue": "7.7.3", "toolTip": "Version of Artifactory to deploy", "constraints": { "allowedValues": [ @@ -163,6 +163,10 @@ { "label": "7.6.2", "value": "0.0.1" + }, + { + "label": "7.7.3", + "value": "0.0.2" } ], "required": true diff --git a/AzureResourceManager/Artifactory/MP_submission/mainTemplate.json b/AzureResourceManager/Artifactory/MP_submission/mainTemplate.json index 1c04533..76b323c 100644 --- a/AzureResourceManager/Artifactory/MP_submission/mainTemplate.json +++ b/AzureResourceManager/Artifactory/MP_submission/mainTemplate.json @@ -79,7 +79,7 @@ }, "artifactoryVersion": { "type": "string", - "defaultValue": "0.0.1", + "defaultValue": "0.0.2", "allowedValues": [ "6.6.0", "6.6.1", @@ -94,7 +94,8 @@ "0.3.2", "7.4.3", "7.4.30", - "0.0.1" + "0.0.1", + "0.0.2" ], "metadata": { "description": "Artifactory-vm image version to deploy." diff --git a/AzureResourceManager/Artifactory/README.md b/AzureResourceManager/Artifactory/README.md index 66d7be3..48053c8 100644 --- a/AzureResourceManager/Artifactory/README.md +++ b/AzureResourceManager/Artifactory/README.md @@ -50,12 +50,11 @@ considering you have SSL certificate for `*.jfrog.team` ### Steps to upgrade Artifactory Version -1. Login into Primary VM instance and sudo as root. Use the admin credentials provided in the install setup. +1. Login into first member VM instance and sudo as root. Use the admin credentials provided in the install setup. Note: Use load balancer's NAT entries under Azure resources, to get the allocated NAT port for accessing the VM instance. 2. Stop nginx and artifactory services. ``` - service nginx stop service artifactory stop ``` @@ -67,9 +66,9 @@ Note: Use load balancer's NAT entries under Azure resources, to get the allocate 4. Start artifactory and nginx services. ``` service artifactory start - service nginx start ``` -5. Repeat above steps for all member nodes. +5. Repeat above steps for all member nodes then for primary node. +6. To check the version of each node, open Administration -> Monitoring -> Service status ------ #### Note: diff --git a/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json index daf1497..7ae66b3 100644 --- a/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json +++ b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.json @@ -79,7 +79,7 @@ }, "artifactoryVersion": { "type": "string", - "defaultValue": "0.0.1", + "defaultValue": "0.0.2", "allowedValues": [ "6.6.0", "6.6.1", @@ -97,7 +97,8 @@ "7.4.30", "7.4.31", "7.5.7", - "0.0.1" + "0.0.1", + "0.0.2" ], "metadata": { "description": "Artifactory-vm image version to deploy." @@ -242,7 +243,7 @@ "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/jfrog/JFrog-Cloud-Installers/arm-xray/AzureResourceManager/Artifactory/" + "defaultValue": "https://raw.githubusercontent.com/jfrog/JFrog-Cloud-Installers/master/AzureResourceManager/Artifactory/" }, "_artifactsLocationSasToken": { "type": "securestring", diff --git a/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json index 182f9f0..8e4317e 100644 --- a/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json +++ b/AzureResourceManager/Artifactory/azuredeploy_ms_ps.parameters.json @@ -44,10 +44,10 @@ "value": "postgressrvr" }, "masterKey": { - "value": "GEN-UNIQUE" + "value": "GENERATE_MASTER_KEY" }, "joinKey": { - "value": "GEN-UNIQUE" + "value": "GENERATE_JOIN_KEY" }, "certificate": { "value": "-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----" diff --git a/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh b/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh index 41d33cc..7900216 100644 --- a/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh +++ b/AzureResourceManager/Artifactory/vm_install/install_pro7_to_vm.sh @@ -1,7 +1,7 @@ #!/bin/bash # Upgrade version for every release -ARTIFACTORY_VERSION=7.6.2 +ARTIFACTORY_VERSION=7.7.3 UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") export DEBIAN_FRONTEND=noninteractive diff --git a/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json b/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json index e61080f..990c3ba 100644 --- a/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json +++ b/AzureResourceManager/JCR/MP_submission_7/createUiDefinition.json @@ -101,7 +101,7 @@ "name": "artifactoryVersion", "type": "Microsoft.Common.DropDown", "label": "JFrog Container Registry-vm image version to deploy.", - "defaultValue": "7.4.3", + "defaultValue": "7.7.3", "toolTip": "Version of JFrog Container Registry to deploy", "constraints": { "allowedValues": [ @@ -116,6 +116,10 @@ { "label": "7.4.3", "value": "7.4.3" + }, + { + "label": "7.7.3", + "value": "0.0.2" } ], "required": true @@ -132,7 +136,7 @@ "toolTip": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'", "constraints": { "required": true, - "regex": "^[a-z0-9A-Z]{1,32}$", + "regex": "^[a-z0-9A-Z]{12,32}$", "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." }, "options": { diff --git a/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-7-3-0.zip b/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-7-3-0.zip new file mode 100644 index 0000000000000000000000000000000000000000..b218f467b5daea009ff00785cdc7279bcfb66297 GIT binary patch literal 10772 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 literal 0 HcmV?d00001 diff --git a/AzureResourceManager/JCR/MP_submission_7/mainTemplate.json b/AzureResourceManager/JCR/MP_submission_7/mainTemplate.json index bd39da3..8456a9e 100644 --- a/AzureResourceManager/JCR/MP_submission_7/mainTemplate.json +++ b/AzureResourceManager/JCR/MP_submission_7/mainTemplate.json @@ -25,11 +25,12 @@ }, "artifactoryVersion": { "type": "string", - "defaultValue": "7.4.3", + "defaultValue": "0.0.2", "allowedValues": [ "7.2.1", "7.3.2", - "7.4.3" + "7.4.3", + "0.0.2" ], "metadata": { "description": "JFrog Container Registry-vm image version to deploy." @@ -213,7 +214,7 @@ "type": "Microsoft.Network/networkSecurityGroups", "location": "[parameters('location')]", "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "properties": { "securityRules": [ { @@ -293,9 +294,9 @@ "type": "Microsoft.Network/virtualNetworks", "name": "[variables('virtualNetworkName')]", "location": "[parameters('location')]", - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" ], "properties": { "addressSpace": { @@ -317,14 +318,14 @@ } }, { - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "type": "Microsoft.Network/networkInterfaces", "name": "[variables('nicPrimaryName')]", "location": "[parameters('location')]", "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" ], "properties": { "ipConfigurations": [ @@ -350,7 +351,7 @@ "sku": { "name": "Standard" }, - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "properties": { "publicIPAllocationMethod": "Static", "dnsSettings": { @@ -362,12 +363,12 @@ "type": "Microsoft.Network/loadBalancers", "name": "[variables('lbName')]", "location": "[parameters('location')]", - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "sku": { "name": "Standard" }, "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" ], "tags":{ "displayName": "Load Balancer" @@ -468,7 +469,7 @@ } }, { - "apiVersion": "2018-07-01", + "apiVersion": "2019-06-01", "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", @@ -484,7 +485,7 @@ { "type": "Microsoft.Resources/deployments", "name": "deploySQLDB", - "apiVersion": "2018-07-01", + "apiVersion": "2019-09-01", "properties": { "mode": "Incremental", "templateLink": { @@ -519,10 +520,10 @@ "location": "[parameters('location')]", "apiVersion": "2018-10-01", "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + "[resourceId('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" ], "plan": { "name": "artifactory-jcr", diff --git a/AzureResourceManager/JCR/MP_submission_7/nested/azureDBDeploy.json b/AzureResourceManager/JCR/MP_submission_7/nested/azureDBDeploy.json index 70c31a5..44b6f3d 100644 --- a/AzureResourceManager/JCR/MP_submission_7/nested/azureDBDeploy.json +++ b/AzureResourceManager/JCR/MP_submission_7/nested/azureDBDeploy.json @@ -43,7 +43,7 @@ "type": "Microsoft.Sql/servers", "kind": "v12.0", "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", + "apiVersion": "2020-02-02-preview", "tags": { "displayName": "artifactoryDB" }, @@ -57,9 +57,9 @@ "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", "type": "firewallrules", "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", + "apiVersion": "2020-02-02-preview", "dependsOn": [ - "[concat('Microsoft.Sql/servers/', parameters('db_server'))]" + "[resourceId('Microsoft.Sql/servers/', parameters('db_server'))]" ], "properties": { "startIpAddress": "0.0.0.0", @@ -71,7 +71,7 @@ "type": "databases", "kind": "v12.0,user", "location": "[variables('db_location')]", - "apiVersion": "2019-06-01-preview", + "apiVersion": "2020-02-02-preview", "dependsOn": [ "[parameters('db_server')]" ], @@ -90,7 +90,7 @@ "outputs": { "jdbcConnString": { "type": "string", - "value": "[concat('jdbc:sqlserver://', reference(concat('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" + "value": "[concat('jdbc:sqlserver://', reference(resourceId('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" } } } diff --git a/AzureResourceManager/JCR/azuredeploy.json b/AzureResourceManager/JCR/azuredeploy.json index 1a5878c..a2cc4f9 100644 --- a/AzureResourceManager/JCR/azuredeploy.json +++ b/AzureResourceManager/JCR/azuredeploy.json @@ -25,19 +25,19 @@ }, "artifactoryVersion": { "type": "string", - "defaultValue": "7.4.3", + "defaultValue": "0.0.2", "allowedValues": [ "7.2.1", "7.3.2", - "7.4.3" + "7.4.3", + "0.0.2" ], "metadata": { "description": "JFrog Container Registry-vm image version to deploy." } }, "masterKey": { - "type": "string", - "defaultValue": "1ce2be4490ca2c662cb79636cf9b7b8e", + "type": "securestring", "maxLength": 64, "metadata": { "description": "Master key for JFrog Container Registry cluster. Generate master.key using command '$openssl rand -hex 16'" @@ -56,15 +56,13 @@ } }, "certificate": { - "type": "string", - "defaultValue": "-----BEGIN CERTIFICATE----- MIIFhzCCA2+gAwIBAgIJALC4r5BQWZE4MA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRMwEQYDVQQHDApTYW50YUNsYXJh MQswCQYDVQQKDAJJVDEUMBIGA1UEAwwLKi5sb2NhbGhvc3QwHhcNMTgwMTE3MTk0 NjI4WhcNMTkwMTA4MTk0NjI4WjBaMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2Fs aWZvcm5pYTETMBEGA1UEBwwKU2FudGFDbGFyYTELMAkGA1UECgwCSVQxFDASBgNV BAMMCyoubG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA 7KfOWDQlov8cMa8r/lcJqiWZaH9myQC74Vbe0HXsntQbcvljkjG2P7ebm5dd9Bzc sauNOJpbKf5AhFK1iwJUAkciGc1LR4k8wfWmQM3NPS8hrqrtH20zqNpdFRpNYjja JofwccPNm030GhhZkZ95TpruvmswMDwspl3jfqdcc/eiQsHcKyGnV2a+UAeoqe7J mHhmhRy1MLqAjF5U1GrUYUONA+22iRDJb4c9B91QoWvsnXpdA9NKV/mmA3/rIdx6 Ld2IPRdrIw2K5sAnXsh3bx2oCSvSfussf0x+4XDrnsaHVfjwvfNL8ECOuac2Oi/E WOp9528gOohpFAuwEt63Vl5p8/CC9m0HJDTZBKm2l5eD1kdPIj4PvP9Sn9CxGXKQ E1bxWoFxGX8EyRW0b0NK31N7b8JPZ1SoFNiB5amOMNLvR26a7cQrKumTuJeYK9Ja JaxhMXM7R0DA0Ev8ZG2xmyCygox+1KPSmJOIEpT70BFbj3rKLNqP22ET+zvPuh+2 DdgyrpHFeYkGWjMbWPjK7wJsD2zM8ccoJQfepPz8I4rT0JfrKAQgCGuGOggneaNJ KTVGNOFbj5AXdZ/Q+GvNommyRdq4J7EnqY6L+P25fo5qZ6UZ/iS0tPcvxgn0Fdhs pUPbQyQIDZyxZd3Q1lUIE38ol8P66mS2zbzf8EeOCoUCAwEAAaNQME4wHQYDVR0O BBYEFETAQM/5P7XJ8kevHFj6BPndQOFaMB8GA1UdIwQYMBaAFETAQM/5P7XJ8kev HFj6BPndQOFaMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAJ1TepKv LWYhFmVQcgZwZf/qt1a1cohzJSm6da9RCnnAWC7WC/U117bgSomtrH1v0OysHFhB zBBUeBqI7+OmzAX8dhj+roKkcnFUM/IwlK1eueIIA//CWvEf/o0XExilVS2yCc9d PTpOQBXwk9QinxK36kHdBiGxa7dW0JPnOEEmuMgGORKeLy4J6Ik8iSeFY1SZVcOI +6WWvoKciPlmIeccC+6YVmkeBwhP2o5r5w/UAaO2hSnGvmm4UIj/VJv4VQu7xTUp cIfFz5NtIr80DbqcyPiEMS2ETJ4L/kO4MS5FfeEXyQuXCzmiIDVY6tE3C7+kZmK4 JzPLuWm9ndQoyQySOGfQqvlUR1+YxUdvmu3LrOS5dOA354Q36wHa4wEGUoHU/7GV fYQmmmDSDaNSpXW5PFey6scFyDBS/yYJ0H9EjYb/11HeWYj8Yv5xTWj8nhzJONC8 D6Y5ydlU4PifM2pOf88pTYpmogNwLJWXbql5I9cvMa8APo4yLVqcISU5ynsvFke+ Non+T0mHpJai/hrA9NK+s6EGC1dAX58jy61h6FhOPI1d4s/mov/KMa2t3SfZp5SF 81aR6dHvO56teiK5M1xMkrqG75zh3TMFJJLRFe9XxeB4JeN76URB3mgADOUqkBxd ibSgVqfKwOw4IujEcqMUc5mqSnbLY1Dv+oby -----END CERTIFICATE-----", + "type": "securestring", "metadata": { "description": "To use Artifactory as docker registry you need to provide wild card valid Certificate. Provide your SSL Certificate." } }, "certificateKey": { - "type": "string", - "defaultValue": "-----BEGIN PRIVATE KEY----- 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 S+j1+iUKGGhwVmhqh75q5do3+VF3XlAh -----END PRIVATE KEY-----", + "type": "securestring", "metadata": { "description": "Provide your SSL Certificate key" } @@ -144,7 +142,7 @@ "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/JFrogDev/JFrog-Cloud-Installers/master/AzureResourceManager/JCR/" + "defaultValue": "https://raw.githubusercontent.com/jfrog/JFrog-Cloud-Installers/master/AzureResourceManager/JCR/" }, "_artifactsLocationSasToken": { "type": "securestring", @@ -190,7 +188,7 @@ "osType": { "publisher": "jfrog", "offer": "jfrogcontainerregistry-vm", - "sku": "artifactory-jcr-private", + "sku": "artifactory-jcr", "version": "[parameters('artifactoryVersion')]" }, "imageReference": "[variables('osType')]", @@ -216,7 +214,7 @@ "type": "Microsoft.Network/networkSecurityGroups", "location": "[parameters('location')]", "name": "[variables('nsgName')]", - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "properties": { "securityRules": [ { @@ -296,9 +294,9 @@ "type": "Microsoft.Network/virtualNetworks", "name": "[variables('virtualNetworkName')]", "location": "[parameters('location')]", - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "dependsOn": [ - "[concat('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" ], "properties": { "addressSpace": { @@ -320,14 +318,14 @@ } }, { - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "type": "Microsoft.Network/networkInterfaces", "name": "[variables('nicPrimaryName')]", "location": "[parameters('location')]", "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]" + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]" ], "properties": { "ipConfigurations": [ @@ -353,7 +351,7 @@ "sku": { "name": "Standard" }, - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "properties": { "publicIPAllocationMethod": "Static", "dnsSettings": { @@ -365,12 +363,12 @@ "type": "Microsoft.Network/loadBalancers", "name": "[variables('lbName')]", "location": "[parameters('location')]", - "apiVersion": "2018-07-01", + "apiVersion": "2020-03-01", "sku": { "name": "Standard" }, "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" + "[resourceId('Microsoft.Network/publicIPAddresses/', variables('pipPrimaryName'))]" ], "tags":{ "displayName": "Load Balancer" @@ -471,7 +469,7 @@ } }, { - "apiVersion": "2018-07-01", + "apiVersion": "2019-06-01", "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", @@ -487,7 +485,7 @@ { "type": "Microsoft.Resources/deployments", "name": "deploySQLDB", - "apiVersion": "2018-07-01", + "apiVersion": "2019-09-01", "properties": { "mode": "Incremental", "templateLink": { @@ -522,13 +520,13 @@ "location": "[parameters('location')]", "apiVersion": "2018-10-01", "dependsOn": [ - "[concat('Microsoft.Network/loadBalancers/', variables('lbName'))]", - "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", - "[concat('Microsoft.Resources/deployments/', 'deploySQLDB')]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" + "[resourceId('Microsoft.Network/loadBalancers/', variables('lbName'))]", + "[resourceId('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[resourceId('Microsoft.Resources/deployments/', 'deploySQLDB')]", + "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]" ], "plan": { - "name": "artifactory-jcr-private", + "name": "artifactory-jcr", "publisher": "jfrog", "product": "jfrogcontainerregistry-vm" }, diff --git a/AzureResourceManager/JCR/azuredeploy.parameters.json b/AzureResourceManager/JCR/azuredeploy.parameters.json index c73c281..513b9d9 100644 --- a/AzureResourceManager/JCR/azuredeploy.parameters.json +++ b/AzureResourceManager/JCR/azuredeploy.parameters.json @@ -21,7 +21,13 @@ "value": "GEN-UNIQUE" }, "masterKey": { - "value": "GEN-UNIQUE" + "value": "GENERATE_MASTER_KEY" + }, + "certificate": { + "value": "-----BEGIN CERTIFICATE----- -----END CERTIFICATE-----" + }, + "certificateKey": { + "value": "-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----" } } } \ No newline at end of file diff --git a/AzureResourceManager/JCR/nested/azureDBDeploy.json b/AzureResourceManager/JCR/nested/azureDBDeploy.json index 8c608f5..44b6f3d 100644 --- a/AzureResourceManager/JCR/nested/azureDBDeploy.json +++ b/AzureResourceManager/JCR/nested/azureDBDeploy.json @@ -1,9 +1,10 @@ { - "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "db_user": { "type": "string", + "defaultValue": "artifactory", "minLength": 1 }, "db_password": { @@ -11,10 +12,12 @@ }, "db_server": { "type": "string", + "defaultValue": "artmssqlsrv", "minLength": 1 }, "db_name": { "type": "string", + "defaultValue": "artdb", "minLength": 1 }, "db_location": { @@ -40,10 +43,7 @@ "type": "Microsoft.Sql/servers", "kind": "v12.0", "location": "[variables('db_location')]", - "apiVersion": "2015-05-01-preview", - "dependsOn": [ - - ], + "apiVersion": "2020-02-02-preview", "tags": { "displayName": "artifactoryDB" }, @@ -57,9 +57,9 @@ "name": "[uniqueString(parameters('db_server'), 'AllowAllWindowsAzureIps' )]", "type": "firewallrules", "location": "[variables('db_location')]", - "apiVersion": "2015-05-01-preview", + "apiVersion": "2020-02-02-preview", "dependsOn": [ - "[concat('Microsoft.Sql/servers/', parameters('db_server'))]" + "[resourceId('Microsoft.Sql/servers/', parameters('db_server'))]" ], "properties": { "startIpAddress": "0.0.0.0", @@ -71,7 +71,7 @@ "type": "databases", "kind": "v12.0,user", "location": "[variables('db_location')]", - "apiVersion": "2015-05-01-preview", + "apiVersion": "2020-02-02-preview", "dependsOn": [ "[parameters('db_server')]" ], @@ -90,7 +90,7 @@ "outputs": { "jdbcConnString": { "type": "string", - "value": "[concat('jdbc:sqlserver://', reference(concat('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" + "value": "[concat('jdbc:sqlserver://', reference(resourceId('Microsoft.Sql/servers/', parameters('db_server'))).fullyQualifiedDomainName, ':1433')]" } } } diff --git a/AzureResourceManager/JCR/vm_install/install_jcr7_to_vm.sh b/AzureResourceManager/JCR/vm_install/install_jcr7_to_vm.sh new file mode 100644 index 0000000..00e3894 --- /dev/null +++ b/AzureResourceManager/JCR/vm_install/install_jcr7_to_vm.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Upgrade version for every release +ARTIFACTORY_VERSION=7.7.3 +UBUNTU_CODENAME=$(cat /etc/lsb-release | grep "^DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//") + +export DEBIAN_FRONTEND=noninteractive + +# install the wget and curl +apt-get update +apt-get -y install wget curl>> /tmp/install-curl.log 2>&1 + +#Generate Self-Signed Cert +mkdir -p /etc/pki/tls/private/ /etc/pki/tls/certs/ +openssl req -nodes -x509 -newkey rsa:4096 -keyout /etc/pki/tls/private/example.key -out /etc/pki/tls/certs/example.pem -days 356 -subj "/C=US/ST=California/L=SantaClara/O=IT/CN=*.localhost" + +# install the Artifactory JCR and Nginx +echo "deb https://jfrog.bintray.com/artifactory-debs ${UBUNTU_CODENAME} main" | tee -a /etc/apt/sources.list +curl --retry 5 https://bintray.com/user/downloadSubjectPublicKey?username=jfrog | apt-key add - +apt-get update +apt-get -y install nginx>> /tmp/install-nginx.log 2>&1 +apt-get -y install jfrog-artifactory-jcr=${ARTIFACTORY_VERSION} >> /tmp/install-artifactory.log 2>&1 + +# Add callhome metadata (allow us to collect information) +mkdir -p /var/opt/jfrog/artifactory/etc/info +cat </var/opt/jfrog/artifactory/etc/info/installer-info.json +{ + "productId": "ARM_artifactory-jcr/1.0.0", + "features": [ + { + "featureId": "Partner/ACC-007221" + } + ] +} +EOF + +#Install database drivers (for Java 11, path is different for RT6 and RT7) +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/mysql-connector-java-5.1.38.jar https://bintray.com/artifact/download/bintray/jcenter/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar >> /tmp/install-databse-driver.log 2>&1 +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/mssql-jdbc-7.4.1.jre11.jar https://bintray.com/artifact/download/bintray/jcenter/com/microsoft/sqlserver/mssql-jdbc/7.4.1.jre11/mssql-jdbc-7.4.1.jre11.jar >> /tmp/install-databse-driver.log 2>&1 +curl --retry 5 -L -o /opt/jfrog/artifactory/app/artifactory/tomcat/lib/postgresql-9.4.1212.jar https://jdbc.postgresql.org/download/postgresql-9.4.1212.jar >> /tmp/install-databse-driver.log 2>&1 + +#Configuring nginx +rm /etc/nginx/sites-enabled/default + +printf "\nartifactory.ping.allowUnauthenticated=true" >> /var/opt/jfrog/artifactory/etc/artifactory/artifactory.system.properties + +chown artifactory:artifactory -R /var/opt/jfrog/artifactory/* && chown artifactory:artifactory -R /var/opt/jfrog/artifactory/etc/* + +# Remove Artifactory service from boot up run +systemctl disable artifactory +systemctl disable nginx \ No newline at end of file diff --git a/AzureResourceManager/Postgresql/postgres.parameters.json b/AzureResourceManager/Postgresql/postgres.parameters.json index 5aad362..892a315 100644 --- a/AzureResourceManager/Postgresql/postgres.parameters.json +++ b/AzureResourceManager/Postgresql/postgres.parameters.json @@ -3,10 +3,10 @@ "contentVersion": "1.0.0.0", "parameters": { "db_user": { - "value": "GEN-UNIQUE" + "value": "xray" }, "db_password": { - "value": "GEN-UNIQUE" + "value": "Password123!" }, "db_server": { "value": "postgressrvr" diff --git a/AzureResourceManager/Xray/MP_submission/createUiDefinition.json b/AzureResourceManager/Xray/MP_submission/createUiDefinition.json index e27c5ed..80c03e4 100644 --- a/AzureResourceManager/Xray/MP_submission/createUiDefinition.json +++ b/AzureResourceManager/Xray/MP_submission/createUiDefinition.json @@ -123,13 +123,17 @@ "name": "xrayVersion", "type": "Microsoft.Common.DropDown", "label": "Xray-vm image version to deploy.", - "defaultValue": "3.6.2", + "defaultValue": "3.8.2", "toolTip": "Version of Xray to deploy", "constraints": { "allowedValues": [ { "label": "3.6.2", "value": "0.0.3" + }, + { + "label": "3.8.2", + "value": "0.0.4" } ], "required": true @@ -158,7 +162,7 @@ "toolTip": "Master key for Xray instance. Generate master.key using command '$openssl rand -hex 16'", "constraints": { "required": true, - "regex": "^[a-z0-9A-Z]{1,32}$", + "regex": "^[a-z0-9A-Z]{12,32}$", "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." }, "options": { @@ -175,7 +179,7 @@ "toolTip": "Join key from Artifactory cluster. You can copy Join key from the Artifactory UI, Security -> Settings -> Connection details", "constraints": { "required": true, - "regex": "^[a-z0-9A-Z]{1,32}$", + "regex": "^[a-z0-9A-Z]{12,32}$", "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1-32 characters long." }, "options": { diff --git a/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-8-2-0.zip b/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-8-2-0.zip new file mode 100644 index 0000000000000000000000000000000000000000..6c0a6b006917add3942c0f93297ea3f5a444bef4 GIT binary patch literal 8714 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 literal 0 HcmV?d00001 diff --git a/AzureResourceManager/Xray/MP_submission/mainTemplate.json b/AzureResourceManager/Xray/MP_submission/mainTemplate.json index 9232cc5..391dcd4 100644 --- a/AzureResourceManager/Xray/MP_submission/mainTemplate.json +++ b/AzureResourceManager/Xray/MP_submission/mainTemplate.json @@ -19,9 +19,10 @@ }, "xrayVersion": { "type": "string", - "defaultValue": "0.0.3", + "defaultValue": "0.0.4", "allowedValues": [ - "0.0.3" + "0.0.3", + "0.0.4" ], "metadata": { "description": "Xray-vm image version to deploy." diff --git a/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh b/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh index 5828c61..95db4a2 100644 --- a/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh +++ b/AzureResourceManager/Xray/MP_submission/scripts/install_xray.sh @@ -9,6 +9,11 @@ ARTIFACTORY_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY export DEBIAN_FRONTEND=noninteractive +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64 +sudo add-apt-repository ppa:rmescandon/yq -y +sudo apt update -y +sudo apt install yq -y + # Create master.key on each node sudo mkdir -p /opt/jfrog/xray/var/etc/security/ cat </opt/jfrog/xray/var/etc/security/master.key @@ -18,13 +23,13 @@ EOF # Xray should have the same join key as the Artifactory instance # Both application should be deployed in the same Virtual Networks HOSTNAME=$(hostname -i) -sed -i -e "s/ip:..*/ip: ${HOSTNAME}/" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s#jfrogUrl:..*#jfrogUrl: \"${ARTIFACTORY_URL}\"#" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s/joinKey:..*/joinKey: ${JOIN_KEY}/" /var/opt/jfrog/xray/etc/system.yaml -# DB configuration -sed -i -e "s/url: postgres:..*/url: \"postgres:\/\/${DB_SERVER}.postgres.database.azure.com:5432\/${DB_NAME}?sslmode=disable\"/" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s/username:..*/username: \"${DB_USER}\"/" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s/password:..*/password: \"${DB_PASSWORD}\"/" /var/opt/jfrog/xray/etc/system.yaml +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.database.url postgres://${DB_SERVER}.postgres.database.azure.com:5432/${DB_NAME}?sslmode=disable +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.database.username ${DB_USER} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.database.password ${DB_PASSWORD} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.rabbitMq.password JFXR_RABBITMQ_COOKIE +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.jfrogUrl ${ARTIFACTORY_URL} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.security.joinKey ${JOIN_KEY} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.node.ip ${HOSTNAME} chown xray:xray -R /opt/jfrog/xray/var/etc/security/* && chown xray:xray -R /opt/jfrog/xray/var/etc/security/ diff --git a/AzureResourceManager/Xray/azuredeploy_xray.json b/AzureResourceManager/Xray/azuredeploy_xray.json deleted file mode 100644 index fa5829a..0000000 --- a/AzureResourceManager/Xray/azuredeploy_xray.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "location": { - "type": "string", - "defaultValue": "[resourceGroup().location]", - "metadata": { - "description": "Location for the resources." - } - }, - "vmName": { - "type": "string", - "metadata": { - "title": "VM Name", - "description": "This is the name of the your VM" - } - }, - "xrayVersion": { - "type": "string", - "defaultValue": "3.5.2", - "allowedValues": [ - "3.5.2" - ], - "metadata": { - "description": "Xray-vm image version to deploy." - } - }, - "artifactoryURL": { - "type": "string", - "metadata": { - "description": "Artifactory URL" - } - }, - "masterKey": { - "type": "securestring", - "maxLength": 64, - "metadata": { - "description": "Master key for Artifactory cluster. Generate master.key using command '$openssl rand -hex 16'" - } - }, - "joinKey": { - "type": "securestring", - "maxLength": 64, - "metadata": { - "description": "Join key for Artifactory cluster. Generate join.key using command '$openssl rand -hex 16'" - } - }, - "adminUsername": { - "type": "string", - "defaultValue": "testadmin", - "metadata": { - "description": "Username for the Virtual Machine." - } - }, - "adminPassword": { - "type": "securestring", - "metadata": { - "description": "Password for the Virtual Machine." - } - }, - "virtualNetworkName": { - "type": "string", - "metadata": { - "description": "New or Existing VNet Name" - } - }, - "virtualNetworkNewOrExisting": { - "type": "string", - "metadata": { - "description": "Boolean indicating whether the VNet is new or existing" - } - }, - "virtualNetworkAddressPrefix": { - "type": "string", - "metadata": { - "description": "VNet address prefix" - } - }, - "virtualNetworkResourceGroup": { - "type": "string", - "metadata": { - "description": "Resource group of the VNet" - } - }, - "virtualMachineSize": { - "type": "string", - "metadata": { - "description": "The size of the VM" - } - }, - "subnetName": { - "type": "string", - "metadata": { - "description": "New or Existing subnet Name" - } - }, - "subnetAddressPrefix": { - "type": "string", - "metadata": { - "description": "Subnet address prefix" - } - }, - "db_type": { - "type": "string", - "defaultValue": "Postgresql_deploy.json", - "allowedValues": [ - "Postgresql_deploy.json", - "Postgresql_existing.json" - ], - "metadata": { - "description": "Deploy new Postgresql, MSSQL or use existing DB" - } - }, - "manual_db_url": { - "type": "string", - "metadata": { - "description": "DB server URL, if existing DB server is used instead of a new deployment (jdbc:sqlserver://.. or jdbc:postgresql://..)" - } - }, - "db_server": { - "type": "string", - "metadata": { - "description": "DB server name, if pre-existing DB is used" - } - }, - "db_user": { - "type": "string", - "minLength": 1, - "metadata": { - "description": "Database Admin user name" - } - }, - "db_password": { - "type": "securestring", - "minLength": 1, - "metadata": { - "description": "Database Admin password" - } - }, - "databases": { - "type": "object", - "defaultValue": { - "properties": [ - { - "name": "xray", - "charset": "UTF8", - "collation": "English_United States.1252" - } - ] - } - }, - "_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/jfrog/JFrog-Cloud-Installers/arm-xray/AzureResourceManager/Xray/" - }, - "_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), 'sawinvm')]", - "publicIPAddressName": "[concat(uniqueString(resourceGroup().id),'IP')]", - "vmName": "[parameters('vmName')]", - "nicName": "[concat(parameters('vmName'),'Nic')]", - "vnetId": { - "new": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", - "existing": "[resourceId(parameters('virtualNetworkResourceGroup'),'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]" - }, - "subnetId": "[concat(variables('vnetId')[parameters('virtualNetworkNewOrExisting')],'/subnets/',parameters('subnetName'))]", - "publicIPAddressType": "Dynamic", - "db_server": "[parameters('db_server')]", - "db_user": "[concat(parameters('db_user'), '@', parameters('db_server'))]", - "db_password": "[parameters('db_password')]", - "db_location": "[parameters('location')]", - "db_name": "[parameters('databases').properties[0].name]", - "masterKey": "[parameters('masterKey')]", - "joinKey": "[parameters('joinKey')]", - "osType": { - "publisher": "Canonical", - "offer": "UbuntuServer", - "sku": "18.04-LTS", - "version": "latest" - }, - "imageReference": "[variables('osType')]", - "dbTemplate": "[parameters('db_type')]", - "dbTemplateLocation": "[uri(parameters('_artifactsLocation'), concat('nested/', variables('dbTemplate'), parameters('_artifactsLocationSasToken')))]", - "artifactoryURL": "[parameters('artifactoryURL')]" - }, - "resources": [ - { - "apiVersion": "2019-05-01", - "name": "pid-04c1c376-5d4b-4771-9a7f-054f5910dcef", - "type": "Microsoft.Resources/deployments", - "properties": { - "mode": "Incremental", - "template": { - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "resources": [] - } - } - }, - { - "condition": "[equals(parameters('virtualNetworkNewOrExisting'),'new')]", - "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2017-09-01", - "name": "[parameters('virtualNetworkName')]", - "location": "[parameters('location')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - "[parameters('virtualNetworkAddressPrefix')]" - ] - }, - "subnets": [ - { - "name": "[parameters('subnetName')]", - "properties": { - "addressPrefix": "[parameters('subnetAddressPrefix')]" - } - } - ] - } - }, - { - "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('publicIPAddressName')]", - "apiVersion": "2015-06-15", - "location": "[parameters('location')]", - "properties": { - "publicIPAllocationMethod": "[variables('publicIPAddressType')]" - } - }, - { - "type": "Microsoft.Network/networkInterfaces", - "name": "[variables('nicName')]", - "apiVersion": "2016-03-30", - "location": "[parameters('location')]", - "properties": { - "ipConfigurations": [ - { - "name": "ipconfig1", - "properties": { - "privateIPAllocationMethod": "Dynamic", - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]" - }, - "subnet": { - "id": "[variables('subnetId')]" - } - } - } - ], - "enableIPForwarding": true - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]", - "[resourceId('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]" - ] - }, - { - "type": "Microsoft.Storage/storageAccounts", - "apiVersion": "2018-11-01", - "name": "[variables('storageAccountName')]", - "location": "[parameters('location')]", - "sku": { - "name": "Standard_LRS" - }, - "kind": "Storage", - "properties": {} - }, - { - "type": "Microsoft.Resources/deployments", - "name": "deploySQLDB", - "apiVersion": "2018-07-01", - "properties": { - "mode": "Incremental", - "templateLink": { - "uri": "[variables('dbTemplateLocation')]", - "contentVersion": "1.0.0.0" - }, - "parameters": { - "db_user": { - "value": "[parameters('db_user')]" - }, - "db_password": { - "value": "[variables('db_password')]" - }, - "db_server": { - "value": "[variables('db_server')]" - }, - "db_location": { - "value": "[variables('db_location')]" - }, - "databases": { - "value": "[parameters('databases')]" - }, - "manual_db_url": { - "value": "[parameters('manual_db_url')]" - } - } - } - }, - { - "type": "Microsoft.Compute/virtualMachines", - "apiVersion": "2018-10-01", - "name": "[variables('vmName')]", - "location": "[parameters('location')]", - "dependsOn": [ - "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]", - "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]" - ], - "properties": { - "hardwareProfile": { - "vmSize": "[parameters('virtualMachineSize')]" - }, - "osProfile": { - "computerName": "[variables('vmName')]", - "adminUsername": "[parameters('adminUsername')]", - "adminPassword": "[parameters('adminPassword')]", - "customData": "[base64(concat('#INSTALL SCRIPT INPUTS\nXRAY_VERSION=', parameters('xrayVersion'),'\nJDBC_STR=',reference('Microsoft.Resources/deployments/deploySQLDB').outputs.jdbcConnString.value,'\nARTIFACTORY_URL=',variables('artifactoryURL'),'\nDB_SERVER=',variables('db_server'),'\nDB_NAME=',variables('db_name'),'\nDB_ADMIN_USER=',variables('db_user'),'\nDB_ADMIN_PASSWD=',variables('db_password'),'\nMASTER_KEY=',variables('masterKey'),'\nJOIN_KEY=',variables('joinKey'),'\n'))]" - }, - "storageProfile": { - "imageReference": "[variables('imageReference')]", - "osDisk": { - "createOption": "FromImage" - }, - "dataDisks": [ - { - "diskSizeGB": 1023, - "lun": 0, - "createOption": "Empty" - } - ] - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]" - } - ] - }, - "diagnosticsProfile": { - "bootDiagnostics": { - "enabled": true, - "storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob]" - } - } - }, - "resources": [ - { - "apiVersion": "2019-03-01", - "type": "extensions", - "name": "config-app", - "location": "[resourceGroup().location]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" - ], - "tags": { - "displayName": "config-app" - }, - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "type": "CustomScript", - "typeHandlerVersion": "2.1", - "autoUpgradeMinorVersion": true, - "settings": { - }, - "protectedSettings": { - "commandToExecute": "echo 'hello!' >> /opt/installation_log.txt", - "fileUris": [ - "[uri(parameters('_artifactsLocation'), concat('vm_install/install_xray_to_vm.sh', parameters('_artifactsLocationSasToken')))]", - "[uri(parameters('_artifactsLocation'), concat('scripts/install_xray.sh', parameters('_artifactsLocationSasToken')))]" - ] - } - } - } - ] - } - ] -} \ No newline at end of file diff --git a/AzureResourceManager/Xray/azuredeploy_xray.parameters.json b/AzureResourceManager/Xray/azuredeploy_xray.parameters.json index 2af13e3..7979be9 100644 --- a/AzureResourceManager/Xray/azuredeploy_xray.parameters.json +++ b/AzureResourceManager/Xray/azuredeploy_xray.parameters.json @@ -33,7 +33,7 @@ "value": "10.0.1.0/24" }, "xrayVersion": { - "value": "0.0.3" + "value": "0.0.4" }, "artifactoryURL": { "value": "http://artifactory-url.cloudapp.azure.com" diff --git a/AzureResourceManager/Xray/azuredeploy_xray_vmss.json b/AzureResourceManager/Xray/azuredeploy_xray_vmss.json index 711d6bb..a495022 100644 --- a/AzureResourceManager/Xray/azuredeploy_xray_vmss.json +++ b/AzureResourceManager/Xray/azuredeploy_xray_vmss.json @@ -19,9 +19,10 @@ }, "xrayVersion": { "type": "string", - "defaultValue": "0.0.3", + "defaultValue": "0.0.4", "allowedValues": [ - "0.0.3" + "0.0.3", + "0.0.4" ], "metadata": { "description": "Xray-vm image version to deploy." @@ -156,7 +157,7 @@ "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/jfrog/JFrog-Cloud-Installers/arm-xray/AzureResourceManager/Xray/" + "defaultValue": "https://raw.githubusercontent.com/jfrog/JFrog-Cloud-Installers/master/AzureResourceManager/Xray/" }, "_artifactsLocationSasToken": { "type": "securestring", @@ -188,7 +189,7 @@ "joinKey": "[parameters('joinKey')]", "osType": { "publisher": "jfrog", - "offer": "x-ray-vm", + "offer": "x-ray-vm-preview", "sku": "x-ray-vm", "version": "[parameters('xrayVersion')]" }, @@ -324,7 +325,7 @@ "plan": { "name": "x-ray-vm", "publisher": "jfrog", - "product": "x-ray-vm" + "product": "x-ray-vm-preview" }, "sku": { "name": "[parameters('virtualMachineSize')]", diff --git a/AzureResourceManager/Xray/scripts/install_xray.sh b/AzureResourceManager/Xray/scripts/install_xray.sh index 5828c61..95db4a2 100644 --- a/AzureResourceManager/Xray/scripts/install_xray.sh +++ b/AzureResourceManager/Xray/scripts/install_xray.sh @@ -9,6 +9,11 @@ ARTIFACTORY_URL=$(cat /var/lib/cloud/instance/user-data.txt | grep "^ARTIFACTORY export DEBIAN_FRONTEND=noninteractive +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64 +sudo add-apt-repository ppa:rmescandon/yq -y +sudo apt update -y +sudo apt install yq -y + # Create master.key on each node sudo mkdir -p /opt/jfrog/xray/var/etc/security/ cat </opt/jfrog/xray/var/etc/security/master.key @@ -18,13 +23,13 @@ EOF # Xray should have the same join key as the Artifactory instance # Both application should be deployed in the same Virtual Networks HOSTNAME=$(hostname -i) -sed -i -e "s/ip:..*/ip: ${HOSTNAME}/" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s#jfrogUrl:..*#jfrogUrl: \"${ARTIFACTORY_URL}\"#" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s/joinKey:..*/joinKey: ${JOIN_KEY}/" /var/opt/jfrog/xray/etc/system.yaml -# DB configuration -sed -i -e "s/url: postgres:..*/url: \"postgres:\/\/${DB_SERVER}.postgres.database.azure.com:5432\/${DB_NAME}?sslmode=disable\"/" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s/username:..*/username: \"${DB_USER}\"/" /var/opt/jfrog/xray/etc/system.yaml -sed -i -e "s/password:..*/password: \"${DB_PASSWORD}\"/" /var/opt/jfrog/xray/etc/system.yaml +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.database.url postgres://${DB_SERVER}.postgres.database.azure.com:5432/${DB_NAME}?sslmode=disable +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.database.username ${DB_USER} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.database.password ${DB_PASSWORD} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.rabbitMq.password JFXR_RABBITMQ_COOKIE +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.jfrogUrl ${ARTIFACTORY_URL} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.security.joinKey ${JOIN_KEY} +yq w -i /var/opt/jfrog/xray/etc/system.yaml shared.node.ip ${HOSTNAME} chown xray:xray -R /opt/jfrog/xray/var/etc/security/* && chown xray:xray -R /opt/jfrog/xray/var/etc/security/ diff --git a/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh b/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh index 79a0d15..6827c90 100644 --- a/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh +++ b/AzureResourceManager/Xray/vm_install/install_xray_to_vm.sh @@ -1,7 +1,7 @@ #!/bin/bash # Upgrade version for every release -XRAY_VERSION=3.6.2 +XRAY_VERSION=3.8.2 export DEBIAN_FRONTEND=noninteractive @@ -20,6 +20,7 @@ cd jfrog-xray-${XRAY_VERSION}-deb cat </opt/jfrog-xray-${XRAY_VERSION}-deb/input.txt /var/opt/jfrog/xray http:// +Y EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE replace_with_host_ip N From 83cdc5e160664d12b7ecaeae550a6c3e0923191a Mon Sep 17 00:00:00 2001 From: Daniel Miakotkin <55418063+danielmkn@users.noreply.github.com> Date: Wed, 9 Sep 2020 14:54:53 -0700 Subject: [PATCH 19/20] 7.7.3 (#40) * ARM templates - 7.7.3 support added. Pro and JCR * ARM templates - Xray 3.8.2 support * ARM templates - Nginx configuration changed for JCR * ARM templates - Xray ARM extension script, yq added, Rabbitmq default password added * ARM templates - Xray, Extension script changes * ARM templates - RT readme updated, branch for extensions scripts switched back to master * ARM templates - JCR, updated API, best practives * ARM templates - Nginx configuration changed for JCR * ARM templates - MP submissions, Xray installation script changes, master key minimun char number added in JCR * ARM templates - Parameters draft * ARM templates - Removed MP submission zip files from the repo * ARM templates - Postgres parameters removed --- .../MP_submission/artifactory-pro-7-2-1-4.zip | Bin 15560 -> 0 bytes .../MP_submission/artifactory-pro-7-4-3-2.zip | Bin 19389 -> 0 bytes .../MP_submission/artifactory-pro-7-6-2-5.zip | Bin 19568 -> 0 bytes ...-container-registry-artifactory-6-16-0-7.zip | Bin 11289 -> 0 bytes ...g-container-registry-artifactory-7-2-1-7.zip | Bin 10710 -> 0 bytes ...g-container-registry-artifactory-7-4-3-1.zip | Bin 10739 -> 0 bytes .../Postgresql/postgres.parameters.json | 6 +++--- .../Xray/MP_submission/jfrog-xray-3-6-2-0.zip | Bin 8490 -> 0 bytes .../Xray/MP_submission/jfrog-xray-3-6-2-1.zip | Bin 8633 -> 0 bytes 9 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-2-1-4.zip delete mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-4-3-2.zip delete mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-6-2-5.zip delete mode 100644 AzureResourceManager/JCR/MP_submission_6/jfrog-container-registry-artifactory-6-16-0-7.zip delete mode 100644 AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-2-1-7.zip delete mode 100644 AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-4-3-1.zip delete mode 100644 AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-0.zip delete mode 100644 AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-1.zip diff --git a/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-2-1-4.zip b/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-2-1-4.zip deleted file mode 100644 index 6f922589790718b99a1cf785b197720ab34f830d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15560 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 diff --git a/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-2-1-7.zip b/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-2-1-7.zip deleted file mode 100644 index 11a77276b0c7af91288dfbfa088ae7d4975dcbc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10710 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 diff --git a/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-4-3-1.zip b/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-4-3-1.zip deleted file mode 100644 index f36955f39e6a84beaf543b5833b387237e55ca0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10739 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 z 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

n$sp#Gc0Us(K`apcFrzFHZ}$xPDY+A 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 U!ofcSBK-Q4|1x+jNuNjm1^7_((f|Me diff --git a/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-1.zip b/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-6-2-1.zip deleted file mode 100644 index 3c564190480c8b179f3cfdd8fe55ec0020b80e89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8633 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 From e9ae5345e44a34ed6f5da03587805eb5b9fce9ac Mon Sep 17 00:00:00 2001 From: danielmkn Date: Wed, 9 Sep 2020 14:57:49 -0700 Subject: [PATCH 20/20] ARM templates - Zip files removed from the repo --- .../MP_submission/artifactory-pro-7-7-3-0.zip | Bin 19278 -> 0 bytes ...g-container-registry-artifactory-7-7-3-0.zip | Bin 10772 -> 0 bytes .../Xray/MP_submission/jfrog-xray-3-8-2-0.zip | Bin 8714 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-7-3-0.zip delete mode 100644 AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-7-3-0.zip delete mode 100644 AzureResourceManager/Xray/MP_submission/jfrog-xray-3-8-2-0.zip diff --git a/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-7-3-0.zip b/AzureResourceManager/Artifactory/MP_submission/artifactory-pro-7-7-3-0.zip deleted file mode 100644 index dd67abd6980e8897c111c91eeeaed00249e503c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19278 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 aBciVz;LQr0{AFO^2EuUQnyrU!ARYjS(>`wi diff --git a/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-7-3-0.zip b/AzureResourceManager/JCR/MP_submission_7/jfrog-container-registry-artifactory-7-7-3-0.zip deleted file mode 100644 index b218f467b5daea009ff00785cdc7279bcfb66297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10772 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 diff --git a/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-8-2-0.zip b/AzureResourceManager/Xray/MP_submission/jfrog-xray-3-8-2-0.zip deleted file mode 100644 index 6c0a6b006917add3942c0f93297ea3f5a444bef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8714 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