{
    "typeName": "JFrog::Artifactory::ExistingVpc::MODULE",
    "description": "Schema for Module Fragment of type JFrog::Artifactory::ExistingVpc::MODULE",
    "properties": {
        "Parameters": {
            "type": "object",
            "properties": {
                "LogicalId": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Logical Id of the MODULE"
                },
                "AvailabilityZone1": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Availability Zone 1 to use for the subnets in the VPC. Two Availability Zones are used for this deployment."
                },
                "AvailabilityZone2": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Availability Zone 2 to use for the subnets in the VPC. Two Availability Zones are used for this deployment."
                },
                "KeyPairName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Name of an existing key pair, which allows you to connect securely to your instance after it launches. This is the key pair you created in your preferred Region."
                },
                "VpcId": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "ID of your existing VPC (e.g., vpc-0343606e)."
                },
                "VpcCidr": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "CIDR block for the VPC."
                },
                "PrivateSubnet2Id": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "ID of the private subnet in Availability Zone 2 of your existing VPC (e.g., subnet-z0376dab)."
                },
                "PrivateSubnet1Id": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "ID of the private subnet in Availability Zone 1 of your existing VPC (e.g., subnet-z0376dab)."
                },
                "PublicSubnet1Id": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "ID of the public subnet in Availability Zone 1 of your existing VPC (e.g., subnet-z0376dab)."
                },
                "PublicSubnet2Id": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "ID of the public subnet in Availability Zone 1 of your existing VPC (e.g., subnet-z0376dab)."
                },
                "PrivateSubnet1Cidr": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "CIDR of the private subnet in Availability Zone 1 of your existing VPC (e.g., 10.0.0.0/19)."
                },
                "PrivateSubnet2Cidr": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "CIDR of the private subnet in Availability Zone 2 of your existing VPC (e.g., 10.0.32.0/19)."
                },
                "AccessCidr": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "CIDR IP range that is permitted to access Artifactory. We recommend that you set this value to a trusted IP range. For example, you might want to grant only your corporate network access to the software."
                },
                "RemoteAccessCidr": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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."
                },
                "ELBScheme": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Choose whether this is internet facing or internal."
                },
                "EnableBastion": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "If set to true, a bastion host will be created."
                },
                "BastionInstanceType": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Size of the bastion instances."
                },
                "BastionRootVolumeSize": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Size of the root volume on the bastion instances."
                },
                "BastionEnableTcpForwarding": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Choose whether to enable TCPForwarding via the bootstrapping of the bastion instance or not."
                },
                "BastionEnableX11Forwarding": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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."
                },
                "BastionOs": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Linux distribution for the Amazon Machine Image (AMI) to be used for the bastion instances."
                },
                "NumBastionHosts": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Number of bastion instances to create."
                },
                "VolumeSize": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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."
                },
                "InstanceType": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "EC2 type for the Artifactory instances."
                },
                "NumberOfSecondary": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Number of secondary Artifactory servers to complete your HA deployment. To align with Artifactory best practices, the minimum number is two and the maximum is seven. Do not select more instances than you have licenses for."
                },
                "ArtifactoryProduct": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "JFrog Artifactory product you want to install into an AMI."
                },
                "ArtifactoryVersion": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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."
                },
                "SmLicenseName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Secret name created in AWS Secrets Manager, which contains the Artifactory licenses."
                },
                "SmCertName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Secret name created in AWS Secrets Manager, which contains the SSL certificate and certificate key."
                },
                "ArtifactoryServerName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Name of your Artifactory server. Ensure that this matches your certificate."
                },
                "MasterKey": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Master key for the Artifactory cluster. Generate a master key by using the command '$openssl rand -hex 16'."
                },
                "ExtraJavaOptions": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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."
                },
                "DefaultJavaMemSettings": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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."
                },
                "DatabaseName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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\")."
                },
                "DatabaseEngine": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Database engine that you want to run, which is currently locked to MySQL."
                },
                "DatabaseUser": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Login ID for the master user of your database instance."
                },
                "DatabasePassword": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Password for the Artifactory database user."
                },
                "DatabaseInstance": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Size of the database to be deployed as part of the Quick Start."
                },
                "DatabaseAllocatedStorage": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Size in gigabytes of the available storage for the database instance."
                },
                "DatabasePreferredAz": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Preferred availability zone for Amazon RDS primary instance"
                },
                "MultiAzDatabase": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Choose false to create an Amazon RDS instance in a single Availability Zone."
                },
                "QsS3BucketName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "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 (-)."
                },
                "QsS3KeyPrefix": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slash (/)."
                },
                "QsS3BucketRegion": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. If you use your own bucket, you must specify your own value."
                },
                "InstallXray": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Choose true to install JFrog Xray instance(s)."
                },
                "XrayVersion": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The version of Xray that you want to deploy into the Quick Start."
                },
                "XrayNumberOfInstances": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The number of Xray instances servers to complete your HA deployment. The minimum number is one; the maximum is seven. Do not select more than instances than you have licenses for."
                },
                "XrayInstanceType": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The EC2 instance type for the Xray instances."
                },
                "XrayDatabaseUser": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The login ID for the Xray database user."
                },
                "XrayDatabasePassword": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The password for the Xray database user."
                }
            }
        },
        "Resources": {
            "properties": {
                "BastionStack": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "JFrog::Linux::Bastion::MODULE"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryCoreInfraStack": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "JFrog::Artifactory::Core::MODULE"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryElb": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::LoadBalancer"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactorySslTargetGroup": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::TargetGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryTargetGroup": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::TargetGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactorySslElbListener": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::Listener"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryElbListener": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::Listener"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryInternalElb": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::LoadBalancer"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryInternalTargetGroup": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::TargetGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryInternalElbListener": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::ElasticLoadBalancingV2::Listener"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryEc2Sg": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::EC2::SecurityGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryHostRole": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::Role"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryHostProfile": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::InstanceProfile"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactoryPrimary": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "JFrog::Artifactory::EC2Instance::MODULE"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "ArtifactorySecondary": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "JFrog::Artifactory::EC2Instance::MODULE"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "XrayHostRole": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::Role"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "XrayHostProfile": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::InstanceProfile"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "XrayExistingVpcStack": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "JFrog::Xray::EC2Instance::MODULE"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                }
            },
            "type": "object",
            "additionalProperties": false
        }
    },
    "additionalProperties": true
}
