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 template instantiates a Private (internal) AWS Network Load Balancer connected to the Qumulo Cluster Static IP addresses, insuring reachability (qs-1s6n2i67j) Metadata: cfn-lint: config: ignore_checks: - W9001 - W9002 - W9003 - W9004 - W9006 Parameters: VPCID: Type: String PrivateSubnetIDs: Type: CommaDelimitedList NodeIPs: Type: CommaDelimitedList NumNodes: Type: String CrossZone: Type: String Stickiness: Type: String DeregDelay: Type: String DeregTerm: Type: String PreserveIP: Type: String ProxyProtoV2: Type: String Conditions: Provision4: !Or [!Equals [!Ref NumNodes, "4"], Condition: Provision5] Provision5: !Or [!Equals [!Ref NumNodes, "5"], Condition: Provision6] Provision6: !Or [!Equals [!Ref NumNodes, "6"], Condition: Provision7] Provision7: !Or [!Equals [!Ref NumNodes, "7"], Condition: Provision8] Provision8: !Or [!Equals [!Ref NumNodes, "8"], Condition: Provision9] Provision9: !Or [!Equals [!Ref NumNodes, "9"], Condition: Provision10] Provision10: !Or [!Equals [!Ref NumNodes, "10"], Condition: Provision11] Provision11: !Or [!Equals [!Ref NumNodes, "11"], Condition: Provision12] Provision12: !Or [!Equals [!Ref NumNodes, "12"], Condition: Provision13] Provision13: !Or [!Equals [!Ref NumNodes, "13"], Condition: Provision14] Provision14: !Or [!Equals [!Ref NumNodes, "14"], Condition: Provision15] Provision15: !Or [!Equals [!Ref NumNodes, "15"], Condition: Provision16] Provision16: !Or [!Equals [!Ref NumNodes, "16"], Condition: Provision17] Provision17: !Or [!Equals [!Ref NumNodes, "17"], Condition: Provision18] Provision18: !Or [!Equals [!Ref NumNodes, "18"], Condition: Provision19] Provision19: !Or [!Equals [!Ref NumNodes, "19"], Condition: Provision20] Provision20: !Or [!Equals [!Ref NumNodes, "20"], Condition: Provision21] Provision21: !Or [!Equals [!Ref NumNodes, "21"], Condition: Provision22] Provision22: !Or [!Equals [!Ref NumNodes, "22"], Condition: Provision23] Provision23: !Or [!Equals [!Ref NumNodes, "23"], Condition: Provision24] Provision24: !Equals [!Ref NumNodes, "24"] Resources: NLB: Type: "AWS::ElasticLoadBalancingV2::LoadBalancer" Properties: Name: !Join - "" - - "qumulo-int-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] Type: network IpAddressType: ipv4 Scheme: internal Subnets: !Ref PrivateSubnetIDs LoadBalancerAttributes: - Key: load_balancing.cross_zone.enabled Value: !Ref CrossZone Tags: - Key: Name Value: !Join - "" - - Ref: "AWS::StackName" - " - Qumulo Cluster Internal NLB" NLBTargetGroup21: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-21-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 21 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 21 - Id: !Select [1, !Ref NodeIPs] Port: 21 - Id: !Select [2, !Ref NodeIPs] Port: 21 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 21 - !Ref AWS::NoValue NLBTargetGroup22: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-22-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 22 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 22 - Id: !Select [1, !Ref NodeIPs] Port: 22 - Id: !Select [2, !Ref NodeIPs] Port: 22 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 22 - !Ref AWS::NoValue NLBTargetGroup80: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-80-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 80 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 80 - Id: !Select [1, !Ref NodeIPs] Port: 80 - Id: !Select [2, !Ref NodeIPs] Port: 80 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 80 - !Ref AWS::NoValue NLBTargetGroup111: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-111-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP_UDP Port: 111 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: "true" - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 111 - Id: !Select [1, !Ref NodeIPs] Port: 111 - Id: !Select [2, !Ref NodeIPs] Port: 111 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 111 - !Ref AWS::NoValue NLBTargetGroup443: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-443-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 443 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 443 - Id: !Select [1, !Ref NodeIPs] Port: 443 - Id: !Select [2, !Ref NodeIPs] Port: 443 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 443 - !Ref AWS::NoValue NLBTargetGroup445: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-445-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 445 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 445 - Id: !Select [1, !Ref NodeIPs] Port: 445 - Id: !Select [2, !Ref NodeIPs] Port: 445 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 445 - !Ref AWS::NoValue NLBTargetGroup2049: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-2049-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP_UDP Port: 2049 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: "true" - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 2049 - Id: !Select [1, !Ref NodeIPs] Port: 2049 - Id: !Select [2, !Ref NodeIPs] Port: 2049 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 2049 - !Ref AWS::NoValue NLBTargetGroup3712: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-3712-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 3712 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 3712 - Id: !Select [1, !Ref NodeIPs] Port: 3712 - Id: !Select [2, !Ref NodeIPs] Port: 3712 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 3712 - !Ref AWS::NoValue NLBTargetGroup8000: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-8000-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 8000 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 8000 - Id: !Select [1, !Ref NodeIPs] Port: 8000 - Id: !Select [2, !Ref NodeIPs] Port: 8000 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 8000 - !Ref AWS::NoValue NLBTargetGroup9000: Type: "AWS::ElasticLoadBalancingV2::TargetGroup" Properties: Name: !Join - "" - - "qint-9000-" - !Select [1, !Split ["-QNLBSTACK-", !Ref "AWS::StackName"]] TargetType: ip Protocol: TCP Port: 9000 VpcId: !Ref VPCID TargetGroupAttributes: - Key: stickiness.enabled Value: !Ref Stickiness - Key: stickiness.type Value: source_ip - Key: deregistration_delay.timeout_seconds Value: !Ref DeregDelay - Key: deregistration_delay.connection_termination.enabled Value: !Ref DeregTerm - Key: preserve_client_ip.enabled Value: !Ref PreserveIP - Key: proxy_protocol_v2.enabled Value: !Ref ProxyProtoV2 Targets: - Id: !Select [0, !Ref NodeIPs] Port: 9000 - Id: !Select [1, !Ref NodeIPs] Port: 9000 - Id: !Select [2, !Ref NodeIPs] Port: 9000 - !If - Provision4 - Id: !Select [3, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision5 - Id: !Select [4, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision6 - Id: !Select [5, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision7 - Id: !Select [6, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision8 - Id: !Select [7, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision9 - Id: !Select [8, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision10 - Id: !Select [9, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision11 - Id: !Select [10, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision12 - Id: !Select [11, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision13 - Id: !Select [12, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision14 - Id: !Select [13, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision15 - Id: !Select [14, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision16 - Id: !Select [15, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision17 - Id: !Select [16, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision18 - Id: !Select [17, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision19 - Id: !Select [18, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision20 - Id: !Select [19, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision21 - Id: !Select [20, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision22 - Id: !Select [21, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision23 - Id: !Select [22, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue - !If - Provision24 - Id: !Select [23, !Ref NodeIPs] Port: 9000 - !Ref AWS::NoValue NLBListener21: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup21 LoadBalancerArn: !Ref NLB Port: 21 Protocol: TCP NLBListener22: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup22 LoadBalancerArn: !Ref NLB Port: 22 Protocol: TCP NLBListener80: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup80 LoadBalancerArn: !Ref NLB Port: 80 Protocol: TCP NLBListener111: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup111 LoadBalancerArn: !Ref NLB Port: 111 Protocol: TCP_UDP NLBListener443: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup443 LoadBalancerArn: !Ref NLB Port: 443 Protocol: TCP NLBListener445: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup445 LoadBalancerArn: !Ref NLB Port: 445 Protocol: TCP NLBListener2049: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup2049 LoadBalancerArn: !Ref NLB Port: 2049 Protocol: TCP_UDP NLBListener3712: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup3712 LoadBalancerArn: !Ref NLB Port: 3712 Protocol: TCP NLBListener8000: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup8000 LoadBalancerArn: !Ref NLB Port: 8000 Protocol: TCP NLBListener9000: Type: "AWS::ElasticLoadBalancingV2::Listener" Properties: DefaultActions: - Type: forward TargetGroupArn: !Ref NLBTargetGroup9000 LoadBalancerArn: !Ref NLB Port: 9000 Protocol: TCP Outputs: NLBDNS: Value: !Join - "" - - "https://" - !GetAtt NLB.DNSName NLBNFS: Value: !Join - "" - - !GetAtt NLB.DNSName - ':/' NLBSMB: Value: !Join - "" - - '\\' - !GetAtt NLB.DNSName - '\'