From 5db36fbe8bf38c381c26924c62d224658e8239dc Mon Sep 17 00:00:00 2001 From: Giridharan Ramasamy <46867712+giri-vsr@users.noreply.github.com> Date: Fri, 10 Dec 2021 22:58:14 +0530 Subject: [PATCH] Updated RT and Xray version and republished modules --- ...artifactory-ec2-existing-vpc.template.yaml | 351 ++++++++++-------- ...jfrog-artifactory-ec2-master.template.yaml | 126 ++++--- .../test-cfts/submit.sh | 17 +- 3 files changed, 268 insertions(+), 226 deletions(-) diff --git a/Amazon/cloudformation-modules/JFrog__Artifactory__ExistingVpc__MODULE/fragments/jfrog-artifactory-ec2-existing-vpc.template.yaml b/Amazon/cloudformation-modules/JFrog__Artifactory__ExistingVpc__MODULE/fragments/jfrog-artifactory-ec2-existing-vpc.template.yaml index e7e5e77..800f8f0 100644 --- a/Amazon/cloudformation-modules/JFrog__Artifactory__ExistingVpc__MODULE/fragments/jfrog-artifactory-ec2-existing-vpc.template.yaml +++ b/Amazon/cloudformation-modules/JFrog__Artifactory__ExistingVpc__MODULE/fragments/jfrog-artifactory-ec2-existing-vpc.template.yaml @@ -1,8 +1,8 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: 'JFrog Artifactory Quick Start Deployment into an Existing VPC (qs-1q037efj0)' +AWSTemplateFormatVersion: "2010-09-09" +Description: "JFrog Artifactory Quick Start Deployment into an Existing VPC (qs-1q037efj0)" Parameters: - LogicalId : - Description : Logical Id of the MODULE + LogicalId: + Description: Logical Id of the MODULE Type: String AvailabilityZone1: Description: Availability Zone 1 to use for the subnets in the VPC. Two @@ -57,7 +57,8 @@ Parameters: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$ Type: String RemoteAccessCidr: - Description: Remote CIDR range that allows you to connect to the bastion instance by using SSH. + Description: + Remote CIDR range that allows you to connect to the bastion instance by using SSH. We recommend that you set this value to a trusted IP range. For example, you might want to grant specific ranges inside your corporate network SSH access. AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$ @@ -95,7 +96,8 @@ Parameters: Default: 10 Type: Number BastionEnableTcpForwarding: - Description: Choose whether to enable TCPForwarding via the bootstrapping of the bastion instance + Description: + Choose whether to enable TCPForwarding via the bootstrapping of the bastion instance or not. AllowedValues: - "true" @@ -103,7 +105,8 @@ Parameters: Default: "true" Type: String BastionEnableX11Forwarding: - Description: Choose true to enable X11 via the bootstrapping of the bastion host. + Description: + Choose true to enable X11 via the bootstrapping of the bastion host. Setting this value to true will enable X Windows over SSH. X11 forwarding can be useful, but it is also a security risk, so it's recommended that you keep the default (false) setting. @@ -124,14 +127,15 @@ Parameters: NumBastionHosts: Description: Number of bastion instances to create. AllowedValues: - - '1' - - '2' - - '3' - - '4' - Default: '1' + - "1" + - "2" + - "3" + - "4" + Default: "1" Type: String VolumeSize: - Description: Size in gigabytes of the available storage (min 10GB); the Quick Start will create an + Description: + Size in gigabytes of the available storage (min 10GB); the Quick Start will create an Amazon Elastic Block Store (Amazon EBS) volumes of this size. Default: 200 Type: Number @@ -192,20 +196,21 @@ Parameters: Default: JFrog-Artifactory-Enterprise Type: String ArtifactoryVersion: - Description: Version of Artifactory that you want to deploy into the Quick Start. + Description: + Version of Artifactory that you want to deploy into the Quick Start. See the release notes to select the version you want to deploy at https://www.jfrog.com/confluence/display/RTF/Release+Notes. AllowedPattern: ^(([0-9]|[1-9][0-9])\.){2}([1-9][0-9]|[0-9])$ ConstraintDescription: A version that matches X.X.X per Artifactory releases - Default: 7.21.5 + Default: 7.27.10 Type: String SmLicenseName: Description: Secret name created in AWS Secrets Manager, which contains the Artifactory licenses. - Default: '' + Default: "" Type: String SmCertName: Description: Secret name created in AWS Secrets Manager, which contains the SSL certificate and certificate key. - Default: '' + Default: "" Type: String ArtifactoryServerName: Description: Name of your Artifactory server. Ensure that this matches your certificate. @@ -213,19 +218,21 @@ Parameters: MasterKey: Description: Master key for the Artifactory cluster. Generate a master key by using the command '$openssl rand -hex 16'. AllowedPattern: ^[a-zA-Z0-9]+$ - MinLength: '1' - MaxLength: '64' + MinLength: "1" + MaxLength: "64" ConstraintDescription: Only capital or lowercase letters and numbers, with a Max of 64 characters. - NoEcho: 'true' + NoEcho: "true" Type: String ExtraJavaOptions: - Description: Set Java options to pass to the JVM for Artifactory. For more information, see the Artifactory + Description: + Set Java options to pass to the JVM for Artifactory. For more information, see the Artifactory system requirements at https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware. Do not add Xms or Xmx settings without disabling DefaultJavaMemSettings. Default: -Xss256k -XX:+UseG1GC Type: String DefaultJavaMemSettings: - Description: Choose false to overwrite the standard memory-calculation options to pass to the Artifactory JVM. + Description: + Choose false to overwrite the standard memory-calculation options to pass to the Artifactory JVM. If you plan to overwrite them, ensure they are added to the ExtraJavaOptions to prevent the stack provision from failing. ConstraintDescription: True or False AllowedValues: @@ -234,12 +241,13 @@ Parameters: Default: "true" Type: String DatabaseName: - Description: Name of your database instance. The name must be unique across all instances + Description: + Name of your database instance. The name must be unique across all instances owned by your AWS account in the current Region. The database instance identifier is case-insensitive, but it's stored in lowercase (as in "mydbinstance"). AllowedPattern: ^[a-zA-Z]([a-zA-Z0-9])+$ - MinLength: '1' - MaxLength: '60' + MinLength: "1" + MaxLength: "60" ConstraintDescription: 1 to 60 alphanumeric characters First character must be a letter. Default: artdb Type: String @@ -251,8 +259,8 @@ Parameters: Type: String DatabaseUser: Description: Login ID for the master user of your database instance. - MinLength: '1' - MaxLength: '16' + MinLength: "1" + MaxLength: "16" AllowedPattern: ^[a-zA-Z]([a-zA-Z0-9])+$ ConstraintDescription: 1 to 16 alphanumeric characters. First character must be a letter. Default: artifactory @@ -260,12 +268,12 @@ Parameters: DatabasePassword: Description: Password for the Artifactory database user. AllowedPattern: ^[^ \\']+$ - MinLength: '8' - MaxLength: '12' + MinLength: "8" + MaxLength: "12" ConstraintDescription: Must be at least 8 and no more than 12 characters containing letters and (minimum 1 capital letter), numbers and symbols. - NoEcho: 'true' + NoEcho: "true" Type: String DatabaseInstance: Description: Size of the database to be deployed as part of the Quick Start. @@ -302,25 +310,29 @@ Parameters: Default: "true" Type: String QsS3BucketName: - Description: S3 bucket name for the Quick Start assets. This string can include + Description: + S3 bucket name for the Quick Start assets. This string can include numbers, lowercase letters, and hyphens (-). It cannot start or end with a hyphen (-). AllowedPattern: ^[0-9a-z]+([0-9a-z-]*[0-9a-z])*$ - ConstraintDescription: Quick Start bucket name can include numbers, lowercase + ConstraintDescription: + Quick Start bucket name can include numbers, lowercase letters, and hyphens (-). It cannot start or end with a hyphen (-). Default: aws-quickstart Type: String QsS3KeyPrefix: - Description: S3 key prefix for the Quick Start assets. Quick Start key prefix + Description: + S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/). AllowedPattern: ^[0-9a-zA-Z-/]*$ - ConstraintDescription: Quick Start key prefix can include numbers, lowercase letters, + ConstraintDescription: + Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/). Default: quickstart-jfrog-artifactory/ Type: String QsS3BucketRegion: - Default: 'us-east-1' + Default: "us-east-1" Description: AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. If you use your own bucket, you must specify your own value. Type: String InstallXray: @@ -335,7 +347,7 @@ Parameters: Description: The version of Xray that you want to deploy into the Quick Start. AllowedPattern: ^(([0-9]|[1-9][0-9])\.){2}([1-9][0-9]|[0-9])$ ConstraintDescription: A version that matches X.X.X per Xray releases. - Default: 3.27.3 + Default: 3.35.0 Type: String XrayNumberOfInstances: Description: The number of Xray instances servers to complete your @@ -355,8 +367,8 @@ Parameters: Type: String XrayDatabaseUser: Description: The login ID for the Xray database user. - MinLength: '1' - MaxLength: '16' + MinLength: "1" + MaxLength: "16" AllowedPattern: ^[a-zA-Z]([a-zA-Z0-9])+$ ConstraintDescription: 1 to 16 alphanumeric characters. First character must be a letter. Default: xray @@ -364,23 +376,24 @@ Parameters: XrayDatabasePassword: Description: The password for the Xray database user. AllowedPattern: ^[^ \\']+$ - MinLength: '8' - MaxLength: '12' + MinLength: "8" + MaxLength: "12" ConstraintDescription: Must be at least 8 and no more than 12 characters containing letters and (minimum 1 capital letter), numbers and symbols. - NoEcho: 'true' + NoEcho: "true" Type: String Conditions: - EnableBastion: !Equals [!Ref 'EnableBastion', "true"] - IsArtifactory: !Not [!Equals [!Ref ArtifactoryProduct, "JFrog-Container-Registry"]] - HasSecondaryNodes: !Not [!Equals [!Ref NumberOfSecondary, '0']] + EnableBastion: !Equals [!Ref "EnableBastion", "true"] + IsArtifactory: + !Not [!Equals [!Ref ArtifactoryProduct, "JFrog-Container-Registry"]] + HasSecondaryNodes: !Not [!Equals [!Ref NumberOfSecondary, "0"]] DefaultJava: !Equals [!Ref DefaultJavaMemSettings, "true"] - UsingDefaultBucket: !Equals [!Ref QsS3BucketName, 'aws-quickstart'] - EnableXray: !Equals [!Ref InstallXray, 'true'] - SmCertNameNotExists: !Equals [!Ref 'SmCertName', ''] - SmCertNameExists: !Not [!Equals [!Ref 'SmCertName', '']] + UsingDefaultBucket: !Equals [!Ref QsS3BucketName, "aws-quickstart"] + EnableXray: !Equals [!Ref InstallXray, "true"] + SmCertNameNotExists: !Equals [!Ref "SmCertName", ""] + SmCertNameExists: !Not [!Equals [!Ref "SmCertName", ""]] Mappings: DatabaseMap: @@ -533,18 +546,19 @@ Resources: BastionStack: Condition: EnableBastion Type: JFrog::Linux::Bastion::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: - LogicalId : !Sub ${LogicalId}BastionStack + LogicalId: !Sub ${LogicalId}BastionStack VPCID: !Ref VpcId PublicSubnet1Id: !Ref PublicSubnet1Id PublicSubnet2Id: !Ref PublicSubnet2Id KeyPairName: !Ref KeyPairName QSS3BucketName: !Ref QsS3BucketName - QSS3KeyPrefix: !Sub '${QsS3KeyPrefix}submodules/quickstart-linux-bastion/' + QSS3KeyPrefix: !Sub "${QsS3KeyPrefix}submodules/quickstart-linux-bastion/" QSS3BucketRegion: !Ref QsS3BucketRegion RemoteAccessCIDR: !Ref RemoteAccessCidr BastionInstanceType: !Ref BastionInstanceType @@ -555,10 +569,11 @@ Resources: NumBastionHosts: !Ref NumBastionHosts ArtifactoryCoreInfraStack: Type: JFrog::Artifactory::Core::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: AvailabilityZone1: !Ref AvailabilityZone1 AvailabilityZone2: !Ref AvailabilityZone2 @@ -566,7 +581,7 @@ Resources: VpcCidr: !Ref VpcCidr PrivateSubnet1Cidr: !Ref PrivateSubnet1Cidr PrivateSubnet2Cidr: !Ref PrivateSubnet2Cidr - PrivateSubnet3Cidr: !Ref PrivateSubnet2Cidr # This should end up in no new rule but required for EKS + PrivateSubnet3Cidr: !Ref PrivateSubnet2Cidr # This should end up in no new rule but required for EKS PrivateSubnet1Id: !Ref PrivateSubnet1Id PrivateSubnet2Id: !Ref PrivateSubnet2Id DatabaseAllocatedStorage: !Ref DatabaseAllocatedStorage @@ -585,7 +600,7 @@ Resources: Properties: IpAddressType: ipv4 Scheme: !Ref ELBScheme - Subnets: + Subnets: - !Ref PublicSubnet1Id - !Ref PublicSubnet2Id Type: network @@ -643,7 +658,7 @@ Resources: IpAddressType: ipv4 # Name: ArtifactoryInternal-ELB Scheme: internal - Subnets: + Subnets: - !Ref PrivateSubnet1Id - !Ref PrivateSubnet2Id Type: network @@ -718,14 +733,14 @@ Resources: AssumeRolePolicyDocument: Statement: - Action: - - 'sts:AssumeRole' + - "sts:AssumeRole" Principal: Service: - ec2.amazonaws.com Effect: Allow Version: 2012-10-17 ManagedPolicyArns: - - !Sub 'arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM' + - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM" Policies: - PolicyName: "JFrogAMI-policy" PolicyDocument: @@ -746,7 +761,7 @@ Resources: - "s3:ListObject" - "s3:ListBucket" Resource: "*" - - PolicyName: 'CloudWatch-policy' + - PolicyName: "CloudWatch-policy" PolicyDocument: Version: "2012-10-17" Statement: @@ -761,7 +776,7 @@ Resources: Action: - "s3:GetObject" Resource: "*" - - PolicyName: 'SecretsMaanger-policy' + - PolicyName: "SecretsMaanger-policy" PolicyDocument: Version: "2012-10-17" Statement: @@ -778,16 +793,17 @@ Resources: Path: / ArtifactoryPrimary: Type: JFrog::Artifactory::EC2Instance::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: - LogicalId : !Sub ${LogicalId}ArtifactoryPrimary + LogicalId: !Sub ${LogicalId}ArtifactoryPrimary PrivateSubnet1Id: !Ref PrivateSubnet1Id PrivateSubnet2Id: !Ref PrivateSubnet2Id - MinScalingNodes: '1' # Always have 1 PrimaryNode - MaxScalingNodes: '1' # Always have 1 PrimaryNode + MinScalingNodes: "1" # Always have 1 PrimaryNode + MaxScalingNodes: "1" # Always have 1 PrimaryNode DeploymentTag: !If [IsArtifactory, "ArtifactoryPrimary", "JcrPrimary"] HostRole: !Ref ArtifactoryHostRole QsS3BucketName: !Ref QsS3BucketName @@ -796,47 +812,49 @@ Resources: - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QsS3KeyPrefix} - S3Bucket: !If - UsingDefaultBucket - - !Sub 'aws-quickstart-${AWS::Region}' - - !Ref 'QsS3BucketName' + - !Sub "aws-quickstart-${AWS::Region}" + - !Ref "QsS3BucketName" S3Region: !If - UsingDefaultBucket - - !Ref 'AWS::Region' - - !Ref 'QsS3BucketRegion' + - !Ref "AWS::Region" + - !Ref "QsS3BucketRegion" ArtifactoryProduct: !Ref ArtifactoryProduct ArtifactoryLicensesSecretName: !Ref SmLicenseName ArtifactoryServerName: !Ref ArtifactoryServerName SmCertName: !Ref SmCertName ArtifactoryS3Bucket: !Ref ArtifactoryCoreInfraStack.ArtifactoryS3Bucket DatabaseUrl: !Sub - - "jdbc:${DatabaseType}://${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}${extraDatabaseOps}" - - { - DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name], - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], - extraDatabaseOps: !FindInMap [DatabaseMap, !Ref DatabaseEngine, extraDatabaseOps], - } + - "jdbc:${DatabaseType}://${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}${extraDatabaseOps}" + - { + DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name], + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + extraDatabaseOps: + !FindInMap [DatabaseMap, !Ref DatabaseEngine, extraDatabaseOps], + } DatabaseDriver: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Driver] DatabasePlugin: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin] DatabasePluginUrl: !Sub - - "${MainURL}${PluginVersion}" - - { - MainURL: !FindInMap [DatabaseMap, !Ref DatabaseEngine, PluginURL], - PluginVersion: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin] - } + - "${MainURL}${PluginVersion}" + - { + MainURL: !FindInMap [DatabaseMap, !Ref DatabaseEngine, PluginURL], + PluginVersion: + !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin], + } DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name] DatabaseUser: !Ref DatabaseUser DatabasePassword: !Ref DatabasePassword ArtifactoryPrimary: true MasterKey: !Ref MasterKey - ExtraJavaOptions: !If - - DefaultJava - - !Sub - - "-Xms${min}g -Xmx${max}g" - - { - min: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Min], - max: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Max] - } - - !Ref ExtraJavaOptions + ExtraJavaOptions: !If + - DefaultJava + - !Sub + - "-Xms${min}g -Xmx${max}g" + - { + min: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Min], + max: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Max], + } + - !Ref ExtraJavaOptions ArtifactoryVersion: !Ref ArtifactoryVersion KeyPairName: !Ref KeyPairName HostProfile: !Ref ArtifactoryHostProfile @@ -852,12 +870,13 @@ Resources: Condition: HasSecondaryNodes #DependsOn: ArtifactoryPrimary Type: JFrog::Artifactory::EC2Instance::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: - LogicalId : !Sub ${LogicalId}ArtifactorySecondary + LogicalId: !Sub ${LogicalId}ArtifactorySecondary PrivateSubnet1Id: !Ref PrivateSubnet1Id PrivateSubnet2Id: !Ref PrivateSubnet2Id MinScalingNodes: !Ref NumberOfSecondary @@ -870,35 +889,37 @@ Resources: SmCertName: !Ref SmCertName ArtifactoryS3Bucket: !Ref ArtifactoryCoreInfraStack.ArtifactoryS3Bucket DatabaseUrl: !Sub - - "jdbc:${DatabaseType}://${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}${extraDatabaseOps}" - - { - DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name], - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], - extraDatabaseOps: !FindInMap [DatabaseMap, !Ref DatabaseEngine, extraDatabaseOps], - } + - "jdbc:${DatabaseType}://${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}${extraDatabaseOps}" + - { + DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name], + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + extraDatabaseOps: + !FindInMap [DatabaseMap, !Ref DatabaseEngine, extraDatabaseOps], + } DatabaseDriver: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Driver] DatabasePlugin: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin] DatabasePluginUrl: !Sub - - "${MainURL}${PluginVersion}" - - { - MainURL: !FindInMap [DatabaseMap, !Ref DatabaseEngine, PluginURL], - PluginVersion: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin] - } + - "${MainURL}${PluginVersion}" + - { + MainURL: !FindInMap [DatabaseMap, !Ref DatabaseEngine, PluginURL], + PluginVersion: + !FindInMap [DatabaseMap, !Ref DatabaseEngine, Plugin], + } DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name] DatabaseUser: !Ref DatabaseUser DatabasePassword: !Ref DatabasePassword ArtifactoryPrimary: false MasterKey: !Ref MasterKey - ExtraJavaOptions: !If - - DefaultJava - - !Sub - - "-Xms${min}g -Xmx${max}g" - - { - min: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Min], - max: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Max] - } - - !Ref ExtraJavaOptions + ExtraJavaOptions: !If + - DefaultJava + - !Sub + - "-Xms${min}g -Xmx${max}g" + - { + min: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Min], + max: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Max], + } + - !Ref ExtraJavaOptions ArtifactoryVersion: !Ref ArtifactoryVersion KeyPairName: !Ref KeyPairName HostProfile: !Ref ArtifactoryHostProfile @@ -915,12 +936,12 @@ Resources: - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QsS3KeyPrefix} - S3Bucket: !If - UsingDefaultBucket - - !Sub 'aws-quickstart-${AWS::Region}' - - !Ref 'QsS3BucketName' + - !Sub "aws-quickstart-${AWS::Region}" + - !Ref "QsS3BucketName" S3Region: !If - UsingDefaultBucket - - !Ref 'AWS::Region' - - !Ref 'QsS3BucketRegion' + - !Ref "AWS::Region" + - !Ref "QsS3BucketRegion" XrayHostRole: Condition: EnableXray Type: AWS::IAM::Role @@ -929,14 +950,14 @@ Resources: AssumeRolePolicyDocument: Statement: - Action: - - 'sts:AssumeRole' + - "sts:AssumeRole" Principal: Service: - ec2.amazonaws.com Effect: Allow Version: 2012-10-17 ManagedPolicyArns: - - !Sub 'arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM' + - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2RoleforSSM" Policies: - PolicyName: "JFrogAMI-policy" PolicyDocument: @@ -957,7 +978,7 @@ Resources: - "s3:ListObject" - "s3:ListBucket" Resource: "*" - - PolicyName: 'CloudWatch-policy' + - PolicyName: "CloudWatch-policy" PolicyDocument: Version: "2012-10-17" Statement: @@ -984,18 +1005,19 @@ Resources: Condition: EnableXray # DependsOn: ArtifactoryPrimary Type: JFrog::Xray::EC2Instance::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: - LogicalId : !Sub ${LogicalId}XrayExistingVpcStack + LogicalId: !Sub ${LogicalId}XrayExistingVpcStack PrivateSubnet1Id: !Ref PrivateSubnet1Id PrivateSubnet2Id: !Ref PrivateSubnet2Id KeyPairName: !Ref KeyPairName MinScalingNodes: !Ref XrayNumberOfInstances MaxScalingNodes: !Ref XrayNumberOfInstances - DeploymentTag: 'xray' + DeploymentTag: "xray" ArtifactoryProduct: !Ref ArtifactoryProduct QsS3BucketName: !Ref QsS3BucketName QsS3KeyPrefix: !Ref QsS3KeyPrefix @@ -1003,12 +1025,12 @@ Resources: - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QsS3KeyPrefix} - S3Bucket: !If - UsingDefaultBucket - - !Sub 'aws-quickstart-${AWS::Region}' - - !Ref 'QsS3BucketName' + - !Sub "aws-quickstart-${AWS::Region}" + - !Ref "QsS3BucketName" S3Region: !If - UsingDefaultBucket - - !Ref 'AWS::Region' - - !Ref 'QsS3BucketRegion' + - !Ref "AWS::Region" + - !Ref "QsS3BucketRegion" DatabaseDriver: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Driver] DatabaseType: !FindInMap [DatabaseMap, !Ref DatabaseEngine, Name] DatabaseUser: !Ref DatabaseUser @@ -1017,34 +1039,39 @@ Resources: SecurityGroups: !Ref ArtifactoryEc2Sg VolumeSize: !Ref VolumeSize ExtraJavaOptions: !Sub - - "-Xms${min}g -Xmx${max}g" - - { - min: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Min], - max: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Max] - } + - "-Xms${min}g -Xmx${max}g" + - { + min: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Min], + max: !FindInMap [JavaOptionstoInstance, !Ref InstanceType, Max], + } XrayInstanceType: !Ref XrayInstanceType JfrogInternalUrl: !Sub "http://${ArtifactoryInternalElb.DNSName}" XrayDatabaseUser: !Ref XrayDatabaseUser XrayDatabasePassword: !Ref XrayDatabasePassword XrayMasterDatabaseUrl: !Sub - - "${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}?sslmode=disable" - - { - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], - } + - "${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}?sslmode=disable" + - { + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + } XrayDatabaseUrl: !Sub - - "${ArtifactoryDatabaseEndpointAddress}:${port}/xraydb?sslmode=disable" - - { - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], - } + - "${ArtifactoryDatabaseEndpointAddress}:${port}/xraydb?sslmode=disable" + - { + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + } XrayVersion: !Ref XrayVersion XrayHostRole: !Ref XrayHostRole XrayHostProfile: !Ref XrayHostProfile Outputs: ArtifactoryUrl: Description: URL of the ELB to access Artifactory - Value: !If [SmCertNameExists, !Sub "https://${ArtifactoryElb.DNSName}", !Sub "http://${ArtifactoryElb.DNSName}"] + Value: + !If [ + SmCertNameExists, + !Sub "https://${ArtifactoryElb.DNSName}", + !Sub "http://${ArtifactoryElb.DNSName}", + ] ArtifactoryInternalUrl: Description: URL of the internal ELB to access Artifactory Value: !Sub "http://${ArtifactoryInternalElb.DNSName}" @@ -1059,8 +1086,8 @@ Outputs: Value: !Sub - "${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}?sslmode=disable" - { - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], } ArtifactoryTargetGroup: Description: Artifactory target group @@ -1081,14 +1108,14 @@ Outputs: Value: !Sub - "${ArtifactoryDatabaseEndpointAddress}:${port}/${DatabaseName}?sslmode=disable" - { - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], } XrayDatabaseUrl: Description: Database driver Value: !Sub - "${ArtifactoryDatabaseEndpointAddress}:${port}/xraydb?sslmode=disable" - { - ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, - port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], + ArtifactoryDatabaseEndpointAddress: !GetAtt ArtifactoryCoreInfraStack.ArtifactoryDatabase.Endpoint.Address, + port: !FindInMap [DatabaseMap, !Ref DatabaseEngine, port], } diff --git a/Amazon/cloudformation-modules/JFrog__Artifactory__NewVpc__MODULE/fragments/jfrog-artifactory-ec2-master.template.yaml b/Amazon/cloudformation-modules/JFrog__Artifactory__NewVpc__MODULE/fragments/jfrog-artifactory-ec2-master.template.yaml index 6bf81ee..625ac65 100644 --- a/Amazon/cloudformation-modules/JFrog__Artifactory__NewVpc__MODULE/fragments/jfrog-artifactory-ec2-master.template.yaml +++ b/Amazon/cloudformation-modules/JFrog__Artifactory__NewVpc__MODULE/fragments/jfrog-artifactory-ec2-master.template.yaml @@ -1,8 +1,8 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: 'JFrog Artifactory Quick Start Deployment (qs-1qpmmjh2f)' +AWSTemplateFormatVersion: "2010-09-09" +Description: "JFrog Artifactory Quick Start Deployment (qs-1qpmmjh2f)" Parameters: - LogicalId : - Description : Logical Id of the MODULE + LogicalId: + Description: Logical Id of the MODULE Type: String EnableBastion: Description: If set to true, a bastion host will be created. @@ -43,14 +43,16 @@ Parameters: Default: 10.0.32.0/19 Type: String PublicSubnet1Cidr: - Description: CIDR block for the public (DMZ) subnet 1 located in Availability + Description: + CIDR block for the public (DMZ) subnet 1 located in Availability Zone 1. AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 Default: 10.0.128.0/20 Type: String PublicSubnet2Cidr: - Description: CIDR block for the public (DMZ) subnet 2 located in Availability + Description: + CIDR block for the public (DMZ) subnet 2 located in Availability Zone 2. AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-28 @@ -63,7 +65,8 @@ Parameters: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$ Type: String RemoteAccessCidr: - Description: Remote CIDR range that allows you to connect to the bastion instance by using SSH. + Description: + Remote CIDR range that allows you to connect to the bastion instance by using SSH. It is recommended that you set this value to a trusted IP range. For example, you may want to grant specific ranges from within your corporate network that use the SSH protocol. AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$ @@ -87,7 +90,8 @@ Parameters: Default: 10 Type: Number BastionEnableTcpForwarding: - Description: Choose whether to enable TCP forwarding via bootstrapping of the bastion + Description: + Choose whether to enable TCP forwarding via bootstrapping of the bastion instance. AllowedValues: - "true" @@ -95,7 +99,8 @@ Parameters: Default: "true" Type: String BastionEnableX11Forwarding: - Description: Choose true to enable X11 via bootstrapping of the bastion host. + Description: + Choose true to enable X11 via bootstrapping of the bastion host. Setting this value to true enables X Windows over SSH. X11 forwarding can be useful, but it is also a security risk, so it's recommended that you keep the default (false) setting. @@ -116,14 +121,15 @@ Parameters: NumBastionHosts: Description: Number of bastion instances to create. AllowedValues: - - '1' - - '2' - - '3' - - '4' - Default: '1' + - "1" + - "2" + - "3" + - "4" + Default: "1" Type: String VolumeSize: - Description: Size in gigabytes of available storage (min 10GB). The Quick Start creates an + Description: + Size in gigabytes of available storage (min 10GB). The Quick Start creates an Amazon Elastic Block Store (Amazon EBS) volumes of this size. Default: 200 Type: Number @@ -184,18 +190,19 @@ Parameters: Default: JFrog-Artifactory-Enterprise Type: String ArtifactoryVersion: - Description: Version of Artifactory that you want to deploy into the Quick Start. + Description: + Version of Artifactory that you want to deploy into the Quick Start. To select the correct version, see the release notes at https://www.jfrog.com/confluence/display/RTF/Release+Notes. - Default: 7.21.5 + Default: 7.27.10 Type: String SmLicenseName: Description: Secret name created in AWS Secrets Manager, which contains the Artifactory licenses. - Default: '' + Default: "" Type: String SmCertName: Description: Secret name created in AWS Secrets Manager, which contains the SSL certificate and certificate key. - Default: '' + Default: "" Type: String ArtifactoryServerName: Description: Name of your Artifactory server. Ensure that this matches your certificate. @@ -203,19 +210,21 @@ Parameters: MasterKey: Description: Master key for the Artifactory cluster. Generate a master key by using the command '$openssl rand -hex 16'. AllowedPattern: ^[a-zA-Z0-9]+$ - MinLength: '1' - MaxLength: '64' + MinLength: "1" + MaxLength: "64" ConstraintDescription: Only capital or lowercase letters and numbers, with a Max of 64 characters. - NoEcho: 'true' + NoEcho: "true" Type: String ExtraJavaOptions: - Description: Set Java options to pass to the JVM for Artifactory. For more information, see the Artifactory + Description: + Set Java options to pass to the JVM for Artifactory. For more information, see the Artifactory system requirements at https://www.jfrog.com/confluence/display/RTF/System+Requirements#SystemRequirements-RecommendedHardware. Do not add Xms or Xmx settings without disabling DefaultJavaMemSettings. Default: -Xss256k -XX:+UseG1GC Type: String DefaultJavaMemSettings: - Description: Choose false to overwrite the standard memory-calculation options to pass to the Artifactory JVM. + Description: + Choose false to overwrite the standard memory-calculation options to pass to the Artifactory JVM. If you plan to overwrite them, ensure they are added to the ExtraJavaOptions to prevent the stack provision from failing. ConstraintDescription: True or False AllowedValues: @@ -224,12 +233,13 @@ Parameters: Default: "true" Type: String DatabaseName: - Description: Name of your database instance. The name must be unique across all instances + Description: + Name of your database instance. The name must be unique across all instances owned by your AWS account in the current Region. The database instance identifier is case-insensitive, but it's stored in lowercase (as in "mydbinstance"). AllowedPattern: ^[a-zA-Z]([a-zA-Z0-9])+$ - MinLength: '1' - MaxLength: '60' + MinLength: "1" + MaxLength: "60" ConstraintDescription: 1 to 60 alphanumeric characters First character must be a letter. Default: artdb Type: String @@ -241,8 +251,8 @@ Parameters: Type: String DatabaseUser: Description: Login ID for the master user of your database instance. - MinLength: '1' - MaxLength: '16' + MinLength: "1" + MaxLength: "16" AllowedPattern: ^[a-zA-Z]([a-zA-Z0-9])+$ ConstraintDescription: 1 to 16 alphanumeric characters. The first character must be a letter. Default: artifactory @@ -250,12 +260,12 @@ Parameters: DatabasePassword: Description: Password for the Artifactory database user. AllowedPattern: ^[^ \\']+$ - MinLength: '8' - MaxLength: '12' + MinLength: "8" + MaxLength: "12" ConstraintDescription: Must be at least 8 and no more than 12 characters containing letters and (minimum 1 capital letter), numbers and symbols. - NoEcho: 'true' + NoEcho: "true" Type: String DatabaseInstance: Description: Size of the database to be deployed as part of the Quick Start. @@ -283,7 +293,7 @@ Parameters: DatabasePreferredAz: Description: Preferred availability zone for Amazon RDS primary instance Type: String - Default: '' + Default: "" MultiAzDatabase: Description: Choose false to create an Amazon RDS instance in a single Availability Zone. ConstraintDescription: True or False @@ -293,25 +303,29 @@ Parameters: Default: "true" Type: String QsS3BucketName: - Description: S3 bucket name for the Quick Start assets. This string can include + Description: + S3 bucket name for the Quick Start assets. This string can include numbers, lowercase letters, and hyphens (-). It cannot start or end with a hyphen (-). AllowedPattern: ^[0-9a-z]+([0-9a-z-]*[0-9a-z])*$ - ConstraintDescription: Quick Start bucket name can include numbers, lowercase + ConstraintDescription: + Quick Start bucket name can include numbers, lowercase letters, and hyphens (-). It cannot start or end with a hyphen (-). Default: aws-quickstart Type: String QsS3KeyPrefix: - Description: S3 key prefix for the Quick Start assets. Quick Start key prefix + Description: + S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/). AllowedPattern: ^[0-9a-zA-Z-/]*$ - ConstraintDescription: Quick Start key prefix can include numbers, lowercase letters, + ConstraintDescription: + Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/). Default: quickstart-jfrog-artifactory/ Type: String QsS3BucketRegion: - Default: 'us-east-1' + Default: "us-east-1" Description: AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. If you use your own bucket, you must specify your own value. Type: String InstallXray: @@ -324,7 +338,7 @@ Parameters: Type: String XrayVersion: Description: The version of Xray that you want to deploy into the Quick Start. - Default: 3.27.3 + Default: 3.35.0 Type: String XrayNumberOfInstances: Description: The number of Xray instances servers to complete your @@ -344,8 +358,8 @@ Parameters: Type: String XrayDatabaseUser: Description: The login ID for the Xray database user. - MinLength: '1' - MaxLength: '16' + MinLength: "1" + MaxLength: "16" AllowedPattern: ^[a-zA-Z]([a-zA-Z0-9])+$ ConstraintDescription: 1 to 16 alphanumeric characters. First character must be a letter. Default: xray @@ -353,25 +367,26 @@ Parameters: XrayDatabasePassword: Description: The password for the Xray database user. AllowedPattern: ^[^ \\']+$ - MinLength: '8' - MaxLength: '12' + MinLength: "8" + MaxLength: "12" ConstraintDescription: Must be at least 8 and no more than 12 characters containing letters and (minimum 1 capital letter), numbers and symbols. - NoEcho: 'true' + NoEcho: "true" Type: String Resources: ArtifactoryVpcStack: Type: JFrog::Vpc::MultiAz::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: AvailabilityZone1: !Ref AvailabilityZone1 AvailabilityZone2: !Ref AvailabilityZone2 - NumberOfAZs: '2' + NumberOfAZs: "2" PrivateSubnet1ACIDR: !Ref PrivateSubnet1Cidr PrivateSubnet2ACIDR: !Ref PrivateSubnet2Cidr PublicSubnet1CIDR: !Ref PublicSubnet1Cidr @@ -379,12 +394,13 @@ Resources: VPCCIDR: !Ref VpcCidr ArtifactoryExistingVpcStack: Type: JFrog::Artifactory::ExistingVpc::MODULE - Metadata: { - PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", - SupportedMajorVersions: [1] - } + Metadata: + { + PublisherId: "06ff50c2e47f57b381f874871d9fac41796c9522", + SupportedMajorVersions: [1], + } Properties: - LogicalId : !Sub ${LogicalId}ArtifactoryExistingVpcStack + LogicalId: !Sub ${LogicalId}ArtifactoryExistingVpcStack AvailabilityZone1: !Ref AvailabilityZone1 AvailabilityZone2: !Ref AvailabilityZone2 KeyPairName: !Ref KeyPairName @@ -433,4 +449,4 @@ Resources: XrayNumberOfInstances: !Ref XrayNumberOfInstances XrayInstanceType: !Ref XrayInstanceType XrayDatabaseUser: !Ref XrayDatabaseUser - XrayDatabasePassword: !Ref XrayDatabasePassword \ No newline at end of file + XrayDatabasePassword: !Ref XrayDatabasePassword diff --git a/Amazon/cloudformation-modules/test-cfts/submit.sh b/Amazon/cloudformation-modules/test-cfts/submit.sh index 4f03d2c..f3be4a4 100644 --- a/Amazon/cloudformation-modules/test-cfts/submit.sh +++ b/Amazon/cloudformation-modules/test-cfts/submit.sh @@ -15,39 +15,38 @@ trap 'echo "\"${last_command}\" command filed with exit code $?."' EXIT regions=( us-east-1 us-east-2 us-west-1 us-west-2 sa-east-1 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 eu-north-1 ap-northeast-3 ap-northeast-2 ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ) folders=( JFrog__Artifactory__ExistingVpc__MODULE JFrog__Artifactory__NewVpc__MODULE ) modules=( JFrog::Artifactory::ExistingVpc::MODULE JFrog::Artifactory::NewVpc::MODULE ) -PROFILE=seller for i in "${!regions[@]}"; do export REGION="${regions[$i]}" for j in "${!folders[@]}"; do export FOLDER="${folders[$j]}" export MODULE="${modules[$j]}" - export VERSION=$( aws cloudformation list-type-versions --profile $PROFILE --type MODULE --type-name $MODULE --region $REGION | jq .TypeVersionSummaries[-1].VersionId | tr -d "\"") + export VERSION=$( aws cloudformation list-type-versions --type MODULE --type-name $MODULE --region $REGION | jq '.TypeVersionSummaries[-1].VersionId' | tr -d "\"") printf "1. start : %s:%s:%s\n" "$REGION" "$MODULE" "$VERSION" - cd /mnt/c/ddrive/projects/JFrog-Cloud-Installers/Amazon/cloudformation-modules/$FOLDER + cd Amazon/cloudformation-modules/$FOLDER printf "2. submitting : %s:%s:%s\n" "$REGION" "$MODULE" "$VERSION" cfn submit --set-default --region $REGION - export VERSION=$( aws cloudformation list-type-versions --profile $PROFILE --type MODULE --type-name $MODULE --region $REGION | jq .TypeVersionSummaries[-1].VersionId | tr -d "\"") + export VERSION=$( aws cloudformation list-type-versions --type MODULE --type-name $MODULE --region $REGION | jq '.TypeVersionSummaries[-1].VersionId' | tr -d "\"") printf "3. submit done : %s:%s:%s\n" "$REGION" "$MODULE" "$VERSION" ARN=$(echo arn:aws:cloudformation:$REGION:595206835686:type/module/$MODULE | sed 's/::/-/g') printf "4. starting test: %s:%s:%s:%s\n" "$REGION" "$MODULE" "$VERSION" "$ARN" - aws Uno test-type --profile $PROFILE --region $REGION --type MODULE --arn $ARN # --public-version-number OPTIONAL_READ_NOTE_ABOVE + echo $(aws cloudformation test-type --region $REGION --type MODULE --arn $ARN) # --public-version-number OPTIONAL_READ_NOTE_ABOVE typeTestStatus="" while [ "$typeTestStatus" != "\"PASSED\"" ] do - # aws Uno describe-type --profile $PROFILE --region $REGION --type MODULE --arn $ARN/$VERSION - typeTestStatus=$(aws Uno describe-type --profile $PROFILE --type MODULE --region $REGION --arn $ARN/$VERSION | jq .TypeTestsStatus) + typeTestStatus=$(aws cloudformation describe-type --type MODULE --region $REGION --arn $ARN/$VERSION | jq '.TypeTestsStatus') echo "typeTestStatus : $typeTestStatus" sleep 5 done printf "5. publishing : %s:%s:%s\n" "$REGION" "$MODULE" "$VERSION" - aws Uno publish-type --profile $PROFILE --region $REGION --type MODULE --arn $ARN # --public-version-number OPTIONAL_READ_NOTE_ABOVE + echo $(aws cloudformation publish-type --region $REGION --type MODULE --arn $ARN) # --public-version-number OPTIONAL_READ_NOTE_ABOVE printf "6. published : %s:%s:%s\n" "$REGION" "$MODULE" "$VERSION" + cd ../../.. done -done +done \ No newline at end of file