Parameterize network type and tunnel types
[apex-tripleo-heat-templates.git] / overcloud-source.yaml
index 63ebb20..6cceff2 100644 (file)
@@ -25,6 +25,10 @@ parameters:
     default: 5000
     description: The size of the loopback file used by the cinder LVM driver.
     type: number
+  Debug:
+    default: ''
+    description: Set to True to enable debugging on all services.
+    type: string
   ExtraConfig:
     default: {}
     description: |
@@ -47,8 +51,8 @@ parameters:
           {"config":
             [{"section": "default",
               "values":
-                [{"option": "compute_manager",
-                  "value": "ironic.nova.compute.manager.ClusterComputeManager"
+                [{"option": "force_config_drive",
+                  "value": "always"
                  }
                 ]
              },
@@ -63,6 +67,18 @@ parameters:
           }
         }
     type: json
+  controllerExtraConfig:
+    default: {}
+    description: |
+      Controller specific configuration to inject into the cluster. Same
+      structure as ExtraConfig.
+    type: json
+  NovaComputeExtraConfig:
+    default: {}
+    description: |
+      NovaCompute specific configuration to inject into the cluster. Same
+      structure as ExtraConfig.
+    type: json
   OvercloudControlFlavor:
     default: baremetal
     description: Flavor for control nodes to request when deploying.
@@ -106,7 +122,7 @@ parameters:
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
   NeutronBridgeMappings:
-    description: |
+    description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
       documentation for details. Defaults to mapping br-ex - the external
       bridge on hosts - to a physical name 'datacentre' which can be used
@@ -117,7 +133,7 @@ parameters:
     default: "datacentre:br-ex"
   NeutronNetworkVLANRanges:
     default: 'datacentre'
-    description: |
+    description: >
       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
       Neutron documentation for permitted values. Defaults to permitting any
       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
@@ -173,12 +189,12 @@ parameters:
   NeutronFlatNetworks:
     type: string
     default: 'datacentre'
-    description: |
+    description: >
       If set, flat networks to configure in neutron plugins. Defaults to
       'datacentre' to permit external network creation.
   HypervisorNeutronPhysicalBridge:
     default: 'br-ex'
-    description: |
+    description: >
       An OVS bridge to create on each hypervisor. This defaults to br-ex the
       same as the control plane nodes, as we have a uniform configuration of
       the openvswitch agent. Typically should not need to be changed.
@@ -199,6 +215,16 @@ parameters:
     default: ''
     description: A custom IP address to put onto the NeutronPublicInterface.
     type: string
+  NeutronPublicInterfaceTag:
+    default: ''
+    description: >
+      VLAN tag for creating a public VLAN. The tag will be used to
+      create an access port on the exterior bridge for each control plane node,
+      and that port will be given the IP address returned by neutron from the
+      public network. Set CONTROLEXTRA=overcloud-vlan-port.yaml when compiling
+      overcloud.yaml to include the deployment of VLAN ports to the control
+      plane.
+    type: string
   NeutronPublicInterfaceRawDevice:
     default: ''
     description: If set, the public interface is a vlan with this device as the raw device.
@@ -209,7 +235,17 @@ parameters:
     description: Neutron ID for ctlplane network.
   NeutronDnsmasqOptions:
     default: 'dhcp-option-force=26,1400'
-    description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the gre tunnel overhead.
+    description: Dnsmasq options for neutron-dhcp-agent. The default value here forces MTU to be set to 1400 to account for the tunnel overhead.
+    type: string
+  NeutronNetworkType:
+    default: 'gre'
+    description: The tenant network type for Neutron, either gre or vxlan.
+    type: string
+  NeutronTunnelTypes:
+    default: 'gre'
+    description: |
+        The tunnel types for the Neutron tenant network. To specify multiple
+        values, use a comma separated string, like so: 'gre,vxlan'
     type: string
   controllerImage:
     type: string
@@ -273,7 +309,7 @@ parameters:
     type: json
   PublicVirtualFixedIPs:
     default: []
-    description: |
+    description: >
         Control the IP allocation for the PublicVirtualInterface port. E.g.
         [{'ip_address':'1.2.3.4'}]
     type: json
@@ -367,7 +403,10 @@ resources:
             - - mysql://neutron:unset@
               - *compute_database_host
               - /ovs_neutron
-        NeutronNetworkType: "gre"
+        NeutronNetworkType:
+            get_param: NeutronNetworkType
+        NeutronTunnelTypes:
+            get_param: NeutronTunnelTypes
         NeutronEnableTunnelling: "True"
         NeutronFlatNetworks:
             get_param: NeutronFlatNetworks
@@ -385,16 +424,22 @@ resources:
     SubKey: resources.NovaCompute0AllNodesDeployment
     parameters:
         AllNodesConfig: {get_resource: allNodesConfig}
+  NovaCompute0:
+    type: FileInclude
+    Path: nova-compute-instance.yaml
+    SubKey: resources.NovaCompute0
   NovaCompute0Passthrough:
     type: FileInclude
     Path: nova-compute-instance.yaml
     SubKey: resources.NovaCompute0Passthrough
     parameters:
         passthrough_config: {get_param: ExtraConfig}
-  NovaCompute0:
+  NovaCompute0PassthroughSpecific:
     type: FileInclude
     Path: nova-compute-instance.yaml
-    SubKey: resources.NovaCompute0
+    SubKey: resources.NovaCompute0PassthroughSpecific
+    parameters:
+        passthrough_config_specific: {get_param: NovaComputeExtraConfig}
   controllerConfig:
     type: OS::Heat::StructuredConfig
     properties:
@@ -431,6 +476,7 @@ resources:
               - - mysql://cinder:unset@
                 - *database_host
                 - /cinder
+          debug: {get_param: Debug}
           volume_size_mb:
             get_param: CinderLVMLoopDeviceSize
           service-password:
@@ -461,6 +507,7 @@ resources:
               - - mysql://glance:unset@
                 - *database_host
                 - /glance
+          debug: {get_param: Debug}
           host:
             get_input: controller_virtual_ip
           port:
@@ -488,6 +535,7 @@ resources:
               - - mysql://heat:unset@
                 - *database_host
                 - /heat
+          debug: {get_param: Debug}
           stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
           watch_server_url: {get_input: heat.watch_server_url}
           metadata_server_url: {get_input: heat.metadata_server_url}
@@ -506,6 +554,7 @@ resources:
               - - mysql://keystone:unset@
                 - *database_host
                 - /keystone
+          debug: {get_param: Debug}
           host:
             get_input: controller_virtual_ip
           ca_certificate: {get_param: KeystoneCACertificate}
@@ -525,6 +574,7 @@ resources:
               - - 'tripleo'
                 - {get_resource: MysqlClusterUniquePart}
         neutron:
+          debug: {get_param: Debug}
           flat-networks: {get_param: NeutronFlatNetworks}
           host: {get_input: controller_virtual_ip}
           metadata_proxy_shared_secret: unset
@@ -540,8 +590,13 @@ resources:
               get_param: NeutronPublicInterfaceRawDevice
             public_interface_route:
               get_param: NeutronPublicInterfaceDefaultRoute
+            public_interface_tag:
+              get_param: NeutronPublicInterfaceTag
             physical_bridge: br-ex
-            tenant_network_type: gre
+            tenant_network_type:
+              get_param: NeutronNetworkType
+            tunnel_types:
+              get_param: NeutronTunnelTypes
           ovs_db:
             Fn::Join:
               - ''
@@ -559,6 +614,7 @@ resources:
               - - mysql://ceilometer:unset@
                 - *database_host
                 - /ceilometer
+          debug: {get_param: Debug}
           metering_secret: {get_param: CeilometerMeteringSecret}
           service-password:
             get_param: CeilometerPassword
@@ -705,6 +761,11 @@ resources:
     properties:
       group: os-apply-config
       config: {get_input: passthrough_config}
+  controllerPassthroughSpecific:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config: {get_input: passthrough_config_specific}
   controller0:
     type: OS::Nova::Server
     properties:
@@ -720,7 +781,7 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
   controller0AllNodesDeployment:
-    depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0Passthrough]
+    depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0PassthroughSpecific]
     type: OS::Heat::StructuredDeployment
     properties:
       signal_transport: {get_param: DefaultSignalTransport}
@@ -838,6 +899,15 @@ resources:
       signal_transport: NO_SIGNAL
       input_values:
         passthrough_config: {get_param: ExtraConfig}
+  controller0PassthroughSpecific:
+    depends_on: [controller0Passthrough]
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: controllerPassthroughSpecific}
+      server: {get_resource: controller0}
+      signal_transport: NO_SIGNAL
+      input_values:
+        passthrough_config_specific: {get_param: controllerExtraConfig}
 outputs:
   KeystoneURL:
     description: URL for the Overcloud Keystone service