AWSTemplateFormatVersion: "2010-09-09" # MIT License # # Copyright (c) 2021 Qumulo, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. Description: This is the main template to spin up a basic Qumulo cluster in an existing VPC with minimal options. It calls cloudq.cft.yaml to instantiate the infrastructure. (qs-1sj2laibp) Metadata: cfn-lint: config: ignore_checks: - W9006 - W9901 QuickStartDocumentation: EntrypointName: 'Parameters for deploying into an existing VPC with standard parameters - Single AZ' Order: '1' AWS::CloudFormation::Interface: ParameterGroups: - Label: default: AWS Template Configuration - Cloud Q Quick Start for Existing VPC - Single AZ - Standard v4.4 Parameters: - KeyPair - Label: default: AWS network configuration Parameters: - VPCId - QSgCidr1 - PrivateSubnetID - Label: default: Qumulo file data platform configuration Parameters: - QMarketPlaceType - QInstanceType - QNodeCount - QDiskConfig - QClusterAdminPwd - TermProtection - Label: default: Qumulo EBS monitoring/replacement & CloudWatch metrics configuration Parameters: - SideCarVersion ParameterLabels: KeyPair: default: "EC2 key pair" VPCId: default: "VPC ID" QSgCidr1: default: "CIDR of the Qumulo security group" PrivateSubnetID: default: "Private subnet ID" QClusterAdminPwd: default: "Qumulo Cluster admininstrator password" QInstanceType: default: "Qumulo EC2 instance type" QNodeCount: default: "Number of Qumulo EC2 instances" QDiskConfig: default: "EBS volume configuration" QMarketPlaceType: default: "Type of Qumulo AWS Marketplace offering" TermProtection: default: "Termination protection" SideCarVersion: default: "Qumulo Sidecar software version " Parameters: KeyPair: Description: Name of the key pair to be used to connect to your EC2 instances. Type: AWS::EC2::KeyPair::KeyName Default: mykeypair VPCId: Type: AWS::EC2::VPC::Id Description: ID of the VPC that you're deploying this Quick Start into. QSgCidr1: 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])(\\/(3[0-2]|[1-2][0-9]|[0-9]))$" Description: An IPv4 CIDR block for specifying the generated security group's allowed addresses for inbound traffic. Typically set to the VPC CIDR. Type: String Default: "10.0.0.0/16" PrivateSubnetID: Type: AWS::EC2::Subnet::Id Description: ID of the private subnet. QInstanceType: Description: EC2 instance type for Qumulo nodes. AllowedValues: - m5.xlarge - m5.2xlarge - m5.4xlarge - m5.8xlarge - m5.12xlarge - m5.16xlarge - m5.24xlarge - m6i.xlarge - m6i.2xlarge - m6i.4xlarge - m6i.8xlarge - m6i.12xlarge - m6i.16xlarge - m6i.24xlarge - m6i.32xlarge - c5n.4xlarge - c5n.9xlarge - c5n.18xlarge Type: String Default: m5.2xlarge QNodeCount: Description: "Total number of EC2 instances, or nodes, in the Qumulo cluster (4-20). You can use this field to add nodes with a CloudFormation stack update after initial provisioning." AllowedValues: - Select for Custom Offering OR Expanding Cluster - "4" - "5" - "6" - "7" - "8" - "9" - "10" - "11" - "12" - "13" - "14" - "15" - "16" - "17" - "18" - "19" - "20" Type: String Default: Select for Custom Offering OR Expanding Cluster QDiskConfig: Description: "Choose the EBS volume configuration and type for the Qumulo EC2 instances: AF= SSD, Hybrid st1= SSD+HDD st1, Hybrid sc1= SSD+HDD sc1. This must match the EBS capacity and type of the customizable private offer." AllowedValues: - Select for Custom Offering - 600GiB-AF - 1TB-AF - 5TB-AF - 8TiB-AF - 13TiB-AF - 20TiB-AF - 30TB-AF - 35TiB-AF - 55TiB-AF - 5TB-Hybrid-st1 - 8TiB-Hybrid-st1 - 13TiB-Hybrid-st1 - 20TB-Hybrid-st1 - 35TiB-Hybrid-st1 - 55TiB-Hybrid-st1 - 90TiB-Hybrid-st1 - 160TiB-Hybrid-st1 - 256TiB-Hybrid-st1 - 320TiB-Hybrid-st1 - 8TiB-Hybrid-sc1 - 13TiB-Hybrid-sc1 - 20TB-Hybrid-sc1 - 35TiB-Hybrid-sc1 - 55TiB-Hybrid-sc1 - 90TiB-Hybrid-sc1 - 160TiB-Hybrid-sc1 - 256TiB-Hybrid-sc1 - 320TiB-Hybrid-sc1 Type: String Default: Select for Custom Offering QMarketPlaceType: Description: Choose the usable capacity of the AWS Marketplace Qumulo offering you accepted. Customizable offerings typically use a private offer from AWS Marketplace and can be used to deploy 1TB to 6PB with this template. AllowedValues: - 1TB-Usable-All-Flash - 12TB-Usable-Hybrid-st1 - 96TB-Usable-Hybrid-st1 - 103TB-Usable-All-Flash - 270TB-Usable-Hybrid-st1 - 809TB-Usable-Hybrid-st1 - Custom-1TB-6PB Type: String Default: 1TB-Usable-All-Flash QClusterAdminPwd: AllowedPattern: "^(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&\\-_])[A-Za-z\\d@$!%*?&\\-_]{8,}$" Description: "Minimum 8 characters. Must include one each of the following: uppercase letter, lowercase letter, and special character." MaxLength: 128 MinLength: 8 Type: String NoEcho: "true" TermProtection: Description: Enable termination protection for EC2 instances and the CloudFormation stack. AllowedValues: - "YES" - "NO" Type: String Default: "YES" SideCarVersion: Description: "Keep the default value for new deployments. You may use this field to upgrade the SideCar software version with a CloudFormation stack update after upgrading the cluster using the web UI or REST API." MaxLength: 11 MinLength: 5 Type: String Default: "5.3.0" Rules: CustomRule: RuleCondition: !Equals [!Ref QMarketPlaceType, "Custom-1TB-6PB"] Assertions: - Assert: !Not [!Equals [!Ref QNodeCount, "Select for Custom Offering OR Expanding Cluster"]] AssertDescription: "A Custom Marketplace Offering requires the EC2 Instance Count to be selected. " - Assert: !Not [!Equals [!Ref QDiskConfig, "Select for Custom Offering"]] AssertDescription: "A Custom Marketplace Offering requires the EBS volume configuration to be selected." Resources: CloudQStack: Type: "AWS::CloudFormation::Stack" Properties: Parameters: DomainName: "" EnvType: "dev" KeyPair: !Ref KeyPair NumberAZs: "1" PrivateSubnetIDs: !Ref PrivateSubnetID PublicSubnetIDs: "" QAmiID: "Only for Specified AMI-ID Offering" QAmiVer: "5.3.0" QAuditLog: "NO" QClusterAdminPwd: !Ref QClusterAdminPwd QClusterLocalZone: "NO" QClusterName: "Cloud-Q" QClusterVersion: "5.3.0" QDiskConfig: !Ref QDiskConfig QDr: "NO" QFlashIops: "Use Qumulo Default" QFlashTput: "Use Qumulo Default" QFlashType: "gp3" QFloatRecordName: "" QFloatingIP: "3" QInstanceRecoveryTopic: "" QInstanceType: !Ref QInstanceType QMarketPlaceType: !Ref QMarketPlaceType QMaxNodesDown: "1" QModOverness: "NO" QNodeCount: !Ref QNodeCount QPermissionsBoundary: "" QPublicMgmt: "NO" QPublicRepl: "NO" QNlbPrivateSubnetIDs: "" QNlbDeregDelay: "60" QNlbDeregTerm: "false" QNlbPreserveIP: "true" QNlbSticky: "true" QNlbXzone: "false" QSS3BucketName: "aws-quickstart" QSS3BucketRegion: !Ref AWS::Region QSS3KeyPrefix: "quickstart-qumulo-cloud-q/" QSgCidr1: !Ref QSgCidr1 QSgCidr2: "" QSgCidr3: "" QSgCidr4: "" RequireIMDSv2: "YES" #Supported from 5.1.0.1 onward SideCarPassword: !Ref QClusterAdminPwd SideCarPrivateSubnetID: "" SideCarProv: "YES" SideCarSNSTopic: "" SideCarUsername: "SideCarUser" SideCarVersion: !Ref SideCarVersion TermProtection: !Ref TermProtection TopStackName: !Ref AWS::StackName VPCId: !Ref VPCId VolumesEncryptionKey: "" TemplateURL: !Sub "https://aws-quickstart-${AWS::Region}.s3.${AWS::Region}.${AWS::URLSuffix}/quickstart-qumulo-cloud-q/templates/cfn/cloudq.cft.yaml" Outputs: QumuloPrivateIP: Description: Private IP for Qumulo Cluster Management Value: !GetAtt CloudQStack.Outputs.QumuloPrivateIP QumuloKnowledgeBase: Description: Qumulo Knowledge Base Value: !GetAtt CloudQStack.Outputs.QumuloKnowledgeBase