upgraded to artifactory 7.21.5 and xray 3.27.2

This commit is contained in:
Vinay Aggarwal
2021-07-11 15:54:45 -07:00
parent 4ac8b06ce2
commit fbba8620f0
110 changed files with 2378 additions and 562 deletions

View File

@@ -1,44 +0,0 @@
- name: setup directory symlink for using custom data directory/volume
block:
- name: Create a xfs filesystem on /dev/nvme1n1
# First non-root device is always mapped to /dev/nvme1n1
# See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html
community.general.filesystem:
dev: /dev/nvme1n1
fstype: xfs
- name: ensure external data directory exists
file:
path: "{{ custom_data_directory }}"
state: directory
- name: Mount the EBS volume
ansible.posix.mount:
path: "{{ custom_data_directory }}"
src: /dev/nvme1n1
state: mounted
fstype: xfs
- name: set custom data directory permission
file:
path: "{{ custom_data_directory }}"
state: directory
recurse: yes
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
mode: "u=rwX,g=rwX,o=rwX"
- name: remove var directory if exists
file:
path: "{{ artifactory_home }}/var"
state: absent
- name: symlink custom data directory to var
file:
src: "{{ custom_data_directory }}"
path: "{{ artifactory_home }}/var"
state: link
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
become: yes
when: use_custom_data_directory and custom_data_directory is defined

View File

@@ -1,44 +0,0 @@
- name: setup directory symlink for using custom data directory/volume
block:
- name: Create a xfs filesystem on /dev/nvme1n1
# First non-root device is always mapped to /dev/nvme1n1
# See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html
community.general.filesystem:
dev: /dev/nvme1n1
fstype: xfs
- name: ensure external data directory exists
file:
path: "{{ custom_data_directory }}"
state: directory
- name: Mount the EBS volume
ansible.posix.mount:
path: "{{ custom_data_directory }}"
src: /dev/nvme1n1
state: mounted
fstype: xfs
- name: set custom data directory permission
file:
path: "{{ custom_data_directory }}"
state: directory
recurse: yes
owner: "{{ xray_user }}"
group: "{{ xray_group }}"
mode: "u=rwX,g=rwX,o=rwX"
- name: remove var directory if exists
file:
path: "{{ xray_home }}/var"
state: absent
- name: symlink custom data directory to var
file:
src: "{{ custom_data_directory }}"
path: "{{ xray_home }}/var"
state: link
owner: "{{ xray_user }}"
group: "{{ xray_group }}"
become: yes
when: use_custom_data_directory and custom_data_directory is defined

View File

@@ -0,0 +1,51 @@
---
# defaults file for artifactory
# indicates were this collection was downlaoded from (galaxy, automation_hub, standalone)
ansible_marketplace: standalone
# whether we are creating a AMI for Marketplace or just for configuring EC2 instance
ami_creation: false
# The version of Artifactory to install
artifactory_version: 7.15.3
# licenses file - specify a licenses file or specify up to 5 licenses
artifactory_license1:
artifactory_license2:
artifactory_license3:
artifactory_license4:
artifactory_license5:
artifactory_license6:
# whether to enable HA
artifactory_ha_enabled: true
# value for whether a host is primary. this should be set in host vars
artifactory_is_primary: true
# The location where Artifactory should install.
artifactory_download_directory: /opt/jfrog
# The location where Artifactory should store data.
artifactory_file_store_dir: /data
extra_java_opts: -server -Xms2g -Xmx14g -Xss256k -XX:+UseG1GC
artifactory_tar: https://releases.jfrog.io/artifactory/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/{{ artifactory_version }}/jfrog-artifactory-pro-{{ artifactory_version }}-linux.tar.gz
artifactory_home: "{{ artifactory_download_directory }}/artifactory-pro-{{ artifactory_version }}"
db_download_url: "https://jdbc.postgresql.org/download/postgresql-42.2.12.jar"
artifactory_user: artifactory
artifactory_group: artifactory
# Set the parameters required for the service.
service_list:
- name: artifactory
description: Start script for Artifactory
start_command: "{{ artifactory_home }}/bin/artifactory.sh start"
stop_command: "{{ artifactory_home }}/bin/artifactory.sh stop"
type: forking
status_pattern: artifactory
user_name: "{{ artifactory_user }}"
group_name: "{{ artifactory_group }}"

View File

@@ -51,7 +51,7 @@
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
loop:
- "bootstrap"
- "bootstrap/artifactory/tomcat/lib"
- "etc"
become: yes

View File

@@ -20,7 +20,8 @@ shared:
id: {{ ansible_machine_id }}
## Sets this node as primary in HA installation
primary: {{ artifactory_is_primary }}
# primary: {{ artifactory_is_primary }}
Affinity: "any"
## Sets this node as part of HA installation
haEnabled: {{ artifactory_ha_enabled }}

View File

@@ -4,7 +4,7 @@
ansible_marketplace: standalone
# The version of Artifactory to install
artifactory_version: 7.15.3
artifactory_version: 7.19.4
# licenses - cluster license content in json
artifactory_licenses:
@@ -21,19 +21,10 @@ artifactory_download_directory: /opt/jfrog
# The location where Artifactory should store data.
artifactory_file_store_dir: /data
# whether to customer data directory
use_custom_data_directory: false
# location for customer directory. Will be symlink to as artifactory/var
custom_data_directory: /artifactory-user-data
# Pick the Artifactory flavour to install, can be also cpp-ce, jcr, pro.
artifactory_flavour: pro
extra_java_opts: -server -Xms2g -Xmx14g -Xss256k -XX:+UseG1GC
artifactory_tar: https://releases.jfrog.io/artifactory/artifactory-pro/org/artifactory/{{ artifactory_flavour }}/jfrog-artifactory-{{ artifactory_flavour }}/{{ artifactory_version }}/jfrog-artifactory-{{ artifactory_flavour }}-{{ artifactory_version }}-linux.tar.gz
artifactory_home: "{{ artifactory_download_directory }}/artifactory-{{ artifactory_flavour }}-{{ artifactory_version }}"
artifactory_tar: https://releases.jfrog.io/artifactory/artifactory-pro/org/artifactory/pro/jfrog-artifactory-pro/{{ artifactory_version }}/jfrog-artifactory-pro-{{ artifactory_version }}-linux.tar.gz
artifactory_home: "{{ artifactory_download_directory }}/artifactory-pro-{{ artifactory_version }}"
artifactory_user: artifactory
artifactory_group: artifactory

View File

@@ -31,10 +31,6 @@
group: "{{ artifactory_group }}"
become: yes
- name: setup directory symlink for using custom data directory/volume
include_tasks: custom-data-directory.yml
when: use_custom_data_directory and custom_data_directory is defined
- name: ensure data subdirectories exist and have correct ownership
file:
path: "{{ artifactory_home }}/var/{{ item }}"
@@ -112,21 +108,44 @@
shell: "{{ artifactory_home }}/app/bin/installService.sh"
become: yes
- name: Delete plugin folder
file:
state: absent
path: "{{ artifactory_home }}/var/etc/artifactory/plugins"
- name: symlink plugin folder to EFS
file:
src: "/efsmount/plugins"
path: "{{ artifactory_home }}/var/etc/artifactory/plugins"
state: link
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
- name: ensure data subdirectories exist and have correct ownership
file:
path: "{{ artifactory_home }}/var/{{ item }}"
state: directory
owner: "{{ artifactory_user }}"
group: "{{ artifactory_group }}"
loop:
- "etc/artifactory/plugins"
become: yes
- name: start and enable the primary node
service:
name: artifactory
state: restarted
become: yes
when: artifactory_is_primary == true
# 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: 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: start and enable the secondary nodes
# service:
# name: artifactory
# state: restarted
# become: yes
# when: artifactory_is_primary == false

View File

@@ -22,8 +22,9 @@ shared:
id: {{ ansible_machine_id }}
## Sets this node as primary in HA installation
primary: {{ artifactory_is_primary }}
# primary: {{ artifactory_is_primary }}
Affinity: "any"
## Sets this node as part of HA installation
haEnabled: {{ artifactory_ha_enabled }}

View File

@@ -1,7 +1,7 @@
---
- name: Install db-utl
yum:
name: "{{ xray_home }}/app/third-party/misc/libdb-utils-5.3.21-19.el7.x86_64.rpm"
name: "{{ xray_home }}/app/third-party/misc/libdb-utils-5.3.21-25.el7.x86_64.rpm"
state: present
vars:
ansible_python_interpreter: /bin/python2

View File

@@ -12,12 +12,6 @@ xray_ha_enabled: true
# The location where xray should install.
xray_download_directory: /opt/jfrog
# whether to customer data directory
use_custom_data_directory: false
# location for customer directory. Will be symlink to as artifactory/var
custom_data_directory: /xray-user-data
# The remote xray download file
xray_tar: https://releases.jfrog.io/artifactory/jfrog-xray/xray-linux/{{ xray_version }}/jfrog-xray-{{ xray_version }}-linux.tar.gz

View File

@@ -1,7 +1,7 @@
---
- name: Install db-utl
yum:
name: "{{ xray_home }}/app/third-party/misc/libdb-utils-5.3.21-19.el7.x86_64.rpm"
name: "{{ xray_home }}/app/third-party/misc/libdb-utils-5.3.21-25.el7.x86_64.rpm"
state: present
vars:
ansible_python_interpreter: /bin/python2

View File

@@ -24,10 +24,6 @@
- name: perform prerequisite installation
include_tasks: "{{ ansible_os_family }}.yml"
- name: setup directory symlink for using custom data directory/volume
include_tasks: custom-data-directory.yml
when: use_custom_data_directory and custom_data_directory is defined
- name: ensure data subdirectories exist and have correct ownership
file:
path: "{{ xray_home }}/var/{{ item }}"

View File

@@ -1,10 +1,18 @@
AWSTemplateFormatVersion: '2010-09-09'
Description: 'JFrog Artifactory Quick Start Deployment (qs-1qpmmjh61)'
Metadata:
cfn-lint:
config:
ignore_checks:
- W9006
- W9002
- W9003
- W9004
Parameters:
AvailabilityZones:
Description: List of Availability Zones to use for the subnets in the VPC. Two
Availability Zones are used for this deployment.
Type: List<AWS::EC2::AvailabilityZone::Name>
# AvailabilityZones:
# Description: List of Availability Zones to use for the subnets in the VPC. Two
# Availability Zones are used for this deployment.
# Type: List<AWS::EC2::AvailabilityZone::Name>
VpcId:
Type: AWS::EC2::VPC::Id
VpcCidr:
@@ -41,8 +49,6 @@ Parameters:
- "true"
- "false"
Type: String
DatabaseEngine:
Type: String
DatabaseUser:
Type: String
DatabasePassword:
@@ -52,19 +58,15 @@ Parameters:
Type: String
DatabaseName:
Type: String
ArtifactoryProduct:
Default: JFrog-Artifactory-Pro
Type: String
ReleaseStage:
Default: GA
Type: String
InstanceType:
Default: m5.xlarge
Type: String
ArtifactoryHostRole:
Type: String
VolumeSize:
Type: Number
# VolumeSize:
# Type: Number
EfsSecurityGroup:
Type: String
Mappings:
DatabaseMap:
@@ -76,20 +78,6 @@ Mappings:
PluginURL: https://jdbc.postgresql.org/download/
port: "5432"
extraDatabaseOps: ""
ReleaseStageMap:
BETA:
ProDockerRepo: "earlyaccess-docker.jfrog.io/jfrog/artifactory-pro"
JcrDockerRepo: "earlyaccess-docker.jfrog.io/jfrog/artifactory-jcr"
NginxDockerRepo: "earlyaccess-docker.jfrog.io/jfrog/nginx-artifactory-pro"
GA:
ProDockerRepo: "docker.bintray.io/jfrog/artifactory-pro"
JcrDockerRepo: "docker.bintray.io/jfrog/artifactory-jcr"
NginxDockerRepo: "docker.bintray.io/jfrog/nginx-artifactory-pro"
ProductMap:
JFrog-Container-Registry:
RepoName: JcrDockerRepo
JFrog-Artifactory-Pro:
RepoName: ProDockerRepo
JavaOptionstoInstance:
c5.2xlarge:
Min: 8
@@ -203,30 +191,6 @@ Mappings:
Min: 192
Max: 288
DeploymentSize: xxxLarge
m5ad.large:
Min: 4
Max: 4
DeploymentSize: xxSmall
m5ad.xlarge:
Min: 8
Max: 12
DeploymentSize: xSmall
m5ad.2xlarge:
Min: 16
Max: 24
DeploymentSize: Small
m5ad.4xlarge:
Min: 32
Max: 48
DeploymentSize: Medium
m5ad.12xlarge:
Min: 96
Max: 144
DeploymentSize: xLarge
m5ad.24xlarge:
Min: 192
Max: 288
DeploymentSize: xxxLarge
Conditions:
IsMultiAzDatabase: !Equals [!Ref MultiAzDatabase, 'true']
@@ -246,10 +210,10 @@ Resources:
DBInstanceClass: !Ref DatabaseInstance
DBName: !Ref DatabaseName
DBSubnetGroupName: !Ref ArtifactoryDatabaseSubnetGroup
Engine: !Ref DatabaseEngine
Engine: "Postgres"
EngineVersion: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- DatabaseVersion
MasterUsername: !Ref DatabaseUser
MasterUserPassword: !Ref DatabasePassword
@@ -273,31 +237,31 @@ Resources:
- IpProtocol: tcp
FromPort: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- port
ToPort: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- port
CidrIp: !Ref PrivateSubnet1Cidr
- IpProtocol: tcp
FromPort: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- port
ToPort: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- port
CidrIp: !Ref PrivateSubnet2Cidr
- IpProtocol: tcp
FromPort: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- port
ToPort: !FindInMap
- DatabaseMap
- !Ref DatabaseEngine
- "Postgres"
- port
CidrIp: !Ref PrivateSubnet3Cidr
SecurityGroupEgress:
@@ -323,6 +287,13 @@ Resources:
SSEAlgorithm: AES256
ArtifactoryS3IAMPolicy:
Type: AWS::IAM::Policy
Metadata:
cfn-lint:
config:
ignore_checks:
- EIAMPolicyActionWildcard
ignore_reasons:
- EIAMPolicyWildcardResource: excluding for s3:Get*, s3:Put*, s3:List*
Properties:
PolicyName: S3BucketPermissions
PolicyDocument:
@@ -331,7 +302,38 @@ Resources:
- Sid: S3BucketPermissions
Effect: Allow
Action:
- s3:*
- s3:AbortMultipartUpload
- s3:BypassGovernanceRetention
- s3:CreateAccessPoint
- s3:CreateAccessPointForObjectLambda
- s3:CreateBucket
- s3:CreateJob
- s3:DeleteAccessPoint
- s3:DeleteAccessPointForObjectLambda
- s3:DeleteAccessPointPolicy
- s3:DeleteAccessPointPolicyForObjectLambda
- s3:DeleteBucket
- s3:DeleteBucketOwnershipControls
- s3:DeleteBucketPolicy
- s3:DeleteBucketWebsite
- s3:DeleteJobTagging
- s3:DeleteObject
- s3:DeleteObjectTagging
- s3:DeleteObjectVersion
- s3:DeleteObjectVersionTagging
- s3:DeleteStorageLensConfiguration
- s3:DeleteStorageLensConfigurationTagging
- s3:DescribeJob
- s3:Get*
- s3:List*
- s3:ObjectOwnerOverrideToBucketOwner
- s3:Put*
- s3:ReplicateDelete
- s3:ReplicateObject
- s3:ReplicateTags
- s3:RestoreObject
- s3:UpdateJobPriority
- s3:UpdateJobStatus
Resource:
- Fn::Join:
- ''
@@ -344,74 +346,89 @@ Resources:
- "/*"
Roles:
- !Ref ArtifactoryHostRole
ArtifactoryEbsVolume:
Type: AWS::EC2::Volume
# ArtifactoryEbsVolume:
# Type: AWS::EC2::Volume
# Properties:
# AvailabilityZone:
# !If
# - IsMultiAzDatabase
# - !Select
# - '0'
# - !Ref AvailabilityZones
# - !Ref DatabasePreferredAz
# Encrypted: false
# Size: !Ref VolumeSize
# Tags:
# - Key: Name
# Value: !Sub "Artifactory-${AWS::StackName}"
# VolumeType: gp2
# DeletionPolicy: Snapshot
# UpdateReplacePolicy: Snapshot
ArtifactoryEfsFileSystem:
Type: AWS::EFS::FileSystem
Properties:
AvailabilityZone:
!If
- IsMultiAzDatabase
- !Select
- '0'
- !Ref AvailabilityZones
- !Ref DatabasePreferredAz
Encrypted: false
Size: !Ref VolumeSize
Tags:
BackupPolicy:
Status: DISABLED
Encrypted: true
FileSystemTags:
- Key: Name
Value: !Sub "Artifactory-${AWS::StackName}"
VolumeType: gp2
DeletionPolicy: Snapshot
UpdateReplacePolicy: Snapshot
PerformanceMode: generalPurpose
ThroughputMode: bursting
ArtifactoryEfsMountTarget1:
Type: AWS::EFS::MountTarget
Properties:
FileSystemId: !Ref ArtifactoryEfsFileSystem
SecurityGroups:
- !Ref EfsSecurityGroup
SubnetId: !Select ['0', !Ref SubnetIds]
ArtifactoryEfsMountTarget2:
Type: AWS::EFS::MountTarget
Properties:
FileSystemId: !Ref ArtifactoryEfsFileSystem
SecurityGroups:
- !Ref EfsSecurityGroup
SubnetId: !Select ['1', !Ref SubnetIds]
Outputs:
S3Bucket:
Value: !Ref ArtifactoryS3Bucket
Description: Actual S3 bucket created for Artifactory
DatabaseDriver:
Value: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Driver]
Value: !FindInMap [DatabaseMap, "Postgres", Driver]
DatabasePlugin:
Value: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin]
Value: !FindInMap [DatabaseMap, "Postgres", Plugin]
DatabasePluginUrl:
Value: !Sub
- "${MainURL}${PluginVersion}"
- {
MainURL: !FindInMap [DatabaseMap, !Ref DatabaseEngine, PluginURL],
PluginVersion: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin]
MainURL: !FindInMap [DatabaseMap, "Postgres", PluginURL],
PluginVersion: !FindInMap [DatabaseMap, "Postgres", Plugin]
}
DatabaseType:
Value: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name]
Value: !FindInMap [DatabaseMap, "Postgres", Name]
DatabaseUrl:
Value: !Sub
- "jdbc:${DatabaseType}://${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}${extraDatabaseOps}"
- {
DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name],
DatabaseType: !FindInMap [DatabaseMap, "Postgres", Name],
ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryDatabase.Endpoint.Address,
port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port],
extraDatabaseOps: !FindInMap [DatabaseMap, !Ref DatabaseEngine, extraDatabaseOps],
port: !FindInMap [DatabaseMap, "Postgres", port],
extraDatabaseOps: !FindInMap [DatabaseMap, "Postgres", extraDatabaseOps],
}
XrayMasterDatabaseUrl:
Value: !Sub
- "${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}?sslmode=disable"
- {
ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryDatabase.Endpoint.Address,
port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port],
port: !FindInMap [DatabaseMap, "Postgres", port],
}
XrayDatabaseUrl:
Value: !Sub
- "${ArtifactoryDatabaseEndpointAddress}:${port}/xraydb?sslmode=disable"
- {
ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryDatabase.Endpoint.Address,
port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port],
port: !FindInMap [DatabaseMap, "Postgres", port],
}
ProDockerRepo:
Value: !FindInMap
- ReleaseStageMap
- !Ref ReleaseStage
- !FindInMap
- ProductMap
- !Ref ArtifactoryProduct
- RepoName
NginxDockerRepo:
Value: !FindInMap [ReleaseStageMap, !Ref ReleaseStage, NginxDockerRepo]
JavaOpts:
Value: !Sub
- "-Xms${min}g -Xmx${max}g"
@@ -421,5 +438,5 @@ Outputs:
}
DeploymentSize:
Value: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, DeploymentSize]
ArtifactoryEbsVolume:
Value: !Ref ArtifactoryEbsVolume
ArtifactoryEfsFileSystem:
Value: !Ref ArtifactoryEfsFileSystem

Some files were not shown because too many files have changed in this diff Show More