{
    "typeName": "JFrog::Linux::Bastion::MODULE",
    "description": "Schema for Module Fragment of type JFrog::Linux::Bastion::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"
                },
                "BastionAMIOS": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The Linux distribution for the AMI to be used for the bastion instances."
                },
                "BastionHostName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The value used for the name tag of the bastion host"
                },
                "BastionBanner": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Banner text to display upon login."
                },
                "BastionTenancy": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "VPC tenancy to launch the bastion in. Options: 'dedicated' or 'default'"
                },
                "BastionInstanceType": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Amazon EC2 instance type for the bastion instances."
                },
                "EnableBanner": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "To include a banner to be displayed when connecting via SSH to the bastion, choose true."
                },
                "EnableTCPForwarding": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "To enable TCP forwarding, choose true."
                },
                "EnableX11Forwarding": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "To enable X11 forwarding, choose true."
                },
                "KeyPairName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Name of an existing public/private key pair. If you do not have one in this AWS Region, please create it before continuing."
                },
                "NumBastionHosts": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The number of bastion hosts to create. The maximum number is four."
                },
                "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)."
                },
                "QSS3BucketName": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "S3 bucket name for the Quick Start assets. Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-)."
                },
                "QSS3BucketRegion": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. When using your own bucket, you must specify this value."
                },
                "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 (-), dots (.) and forward slash (/) and it should end with a forward slash (/)."
                },
                "RemoteAccessCIDR": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "Allowed CIDR block for external SSH access to the bastions."
                },
                "VPCID": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "ID of the VPC (e.g., vpc-0343606e)."
                },
                "AlternativeInitializationScript": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "An alternative initialization script to run during setup."
                },
                "OSImageOverride": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The Region-specific image to use for the instance."
                },
                "EnvironmentVariables": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "A comma-separated list of environment variables for use in bootstrapping. Variables must be in the format KEY=VALUE. VALUE cannot contain commas."
                },
                "RootVolumeSize": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string"
                        },
                        "Description": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "Type",
                        "Description"
                    ],
                    "description": "The size in GB for the root EBS volume."
                }
            }
        },
        "Resources": {
            "properties": {
                "BastionMainLogGroup": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::Logs::LogGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "SSHMetricFilter": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::Logs::MetricFilter"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "BastionHostRole": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::Role"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "BastionHostPolicy": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::Policy"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "BastionHostProfile": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::IAM::InstanceProfile"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "EIP1": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::EC2::EIP"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "EIP2": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::EC2::EIP"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "EIP3": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::EC2::EIP"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "EIP4": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::EC2::EIP"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "BastionAutoScalingGroup": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::AutoScaling::AutoScalingGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "BastionLaunchConfiguration": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::AutoScaling::LaunchConfiguration"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                },
                "BastionSecurityGroup": {
                    "type": "object",
                    "properties": {
                        "Type": {
                            "type": "string",
                            "const": "AWS::EC2::SecurityGroup"
                        },
                        "Properties": {
                            "type": "object"
                        }
                    }
                }
            },
            "type": "object",
            "additionalProperties": false
        }
    },
    "additionalProperties": true
}
