diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 11 | ||||
-rw-r--r-- | overcloud-source.yaml | 48 | ||||
-rw-r--r-- | overcloud-vlan-port.yaml | 38 | ||||
-rw-r--r-- | swift-deploy.yaml | 5 | ||||
-rw-r--r-- | swift-source.yaml | 2 | ||||
-rw-r--r-- | swift-storage-source.yaml | 5 | ||||
-rw-r--r-- | undercloud-source.yaml | 15 | ||||
-rw-r--r-- | undercloud-vlan-port.yaml | 36 |
9 files changed, 149 insertions, 12 deletions
@@ -5,6 +5,7 @@ overcloud-with-block-storage-nfs.yaml undercloud-bm.yaml undercloud-vm.yaml undercloud-vm-ironic.yaml +undercloud-vm-ironic-vlan.yaml *.py[cod] @@ -3,7 +3,8 @@ generated_templates = \ overcloud-with-block-storage-nfs.yaml \ undercloud-vm.yaml \ undercloud-bm.yaml \ - undercloud-vm-ironic.yaml + undercloud-vm-ironic.yaml \ + undercloud-vm-ironic-vlan.yaml # Files included in overcloud-source.yaml via FileInclude overcloud_source_deps = nova-compute-instance.yaml @@ -14,8 +15,10 @@ validate-all: $(VALIDATE) $(VALIDATE): heat template-validate -f $(subst validate-,,$@) +# set CONTROLEXTRA to overcloud-vlan-port.yaml to activate the VLAN +# auto-assignment from Neutron. overcloud.yaml: overcloud-source.yaml block-storage.yaml swift-deploy.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml nova-compute-config.yaml $(overcloud_source_deps) - python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml > $@.tmp + python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml ${CONTROLEXTRA} > $@.tmp mv $@.tmp $@ overcloud-with-block-storage-nfs.yaml: overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml $(overcloud_source_deps) @@ -36,6 +39,10 @@ undercloud-vm-ironic.yaml: undercloud-source.yaml undercloud-vm-ironic-config.ya python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp mv $@.tmp $@ +undercloud-vm-ironic-vlan.yaml: undercloud-source.yaml undercloud-vm-ironic-config.yaml undercloud-vm-ironic-deploy.yaml undercloud-vlan-port.yaml + python ./tripleo_heat_merge/merge.py --hot $^ > $@.tmp + mv $@.tmp $@ + check: test test: diff --git a/overcloud-source.yaml b/overcloud-source.yaml index 5e6a2eef..75b87f29 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -106,9 +106,22 @@ parameters: description: Name of an existing EC2 KeyPair to enable SSH access to the instances type: string NeutronBridgeMappings: - description: The OVS logical->physical bridge mappings to use. + 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 + to create provider networks (and we use this for the default floating + network) - if changing this either use different post-install network + scripts or be sure to keep 'datacentre' as a mapping network name. + type: string + default: "datacentre:br-ex" + NeutronNetworkVLANRanges: + default: 'datacentre' + 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). type: string - default: '' NeutronPassword: default: unset description: The password for the neutron service account, used by neutron agents. @@ -159,14 +172,19 @@ parameters: hidden: true NeutronFlatNetworks: type: string - default: '' - description: If set, flat networks to configure in neutron plugins. + default: 'datacentre' + description: | + If set, flat networks to configure in neutron plugins. Defaults to + 'datacentre' to permit external network creation. HypervisorNeutronPhysicalBridge: - default: '' - description: An OVS bridge to create on each hypervisor. + default: 'br-ex' + 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. type: string HypervisorNeutronPublicInterface: - default: '' + default: 'eth0' description: What interface to add to the HypervisorNeutronPhysicalBridge. type: string NeutronPublicInterface: @@ -181,6 +199,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. @@ -353,7 +381,8 @@ resources: NeutronEnableTunnelling: "True" NeutronFlatNetworks: get_param: NeutronFlatNetworks - NeutronNetworkVLANRanges: "" + NeutronNetworkVLANRanges: + get_param: NeutronNetworkVLANRanges NeutronPhysicalBridge: get_param: HypervisorNeutronPhysicalBridge NeutronPublicInterface: @@ -513,6 +542,7 @@ resources: enable_tunneling: 'True' local_ip: get_input: controller_host + network_vlan_ranges: {get_param: NeutronNetworkVLANRanges} bridge_mappings: {get_param: NeutronBridgeMappings} public_interface: get_param: NeutronPublicInterface @@ -520,6 +550,8 @@ resources: get_param: NeutronPublicInterfaceRawDevice public_interface_route: get_param: NeutronPublicInterfaceDefaultRoute + public_interface_tag: + get_param: NeutronPublicInterfaceTag physical_bridge: br-ex tenant_network_type: gre ovs_db: diff --git a/overcloud-vlan-port.yaml b/overcloud-vlan-port.yaml new file mode 100644 index 00000000..e962e7a0 --- /dev/null +++ b/overcloud-vlan-port.yaml @@ -0,0 +1,38 @@ +outputs: + controller0PublicIP: + description: Address for registering endpoints in the cloud. + value: {get_attr: [controller0VLANPort, fixed_ips, 0, ip_address]} +resources: + # Override the main template which can also supply a static route. + controller0_99_VLANPort: + type: OS::Heat::StructuredDeployment + properties: + config: {get_resource: ControllerVLANPortConfig} + server: {get_resource: controller0} + signal_transport: NO_SIGNAL + input_values: + vlan_port: + list_join: + - '/' + - - {get_attr: [controller0_VLANPort, fixed_ips, 0, ip_address]} + # This should also be pulled out of the subnet. May need a + # neutron fix too - XXX make into a parameter and feed it + # in via _overcloud.sh for now. + - '24' + # Tell the instance to apply the default route. + # Reinstate when https://bugs.launchpad.net/heat/+bug/1336656 is + # sorted + # public_interface_route: + # get_attr: [controller0_VLANPort, fixed_ips, 0, subnet, gateway_ip] + ControllerVLANPortConfig: + type: OS::Heat::StructuredConfig + properties: + config: + neutron: + ovs: + public_interface_tag_ip: {get_input: vlan_port} + controller0_VLANPort: + type: OS::Neutron::Port + properties: + name: controller0_vlan + network: public diff --git a/swift-deploy.yaml b/swift-deploy.yaml index 239a4d48..e3f475c0 100644 --- a/swift-deploy.yaml +++ b/swift-deploy.yaml @@ -10,6 +10,10 @@ parameters: description: The password for the swift service account, used by the swift proxy services. type: string hidden: true + SwiftReplicas: + type: number + default: 1 + description: How many replicas to use in the swift rings. resources: controller0Swift: type: OS::Heat::StructuredDeployment @@ -47,3 +51,4 @@ resources: - '' - - {get_attr: [controller0, networks, ctlplane, 0]} - ':11211' + swift_replicas: { get_param: SwiftReplicas} diff --git a/swift-source.yaml b/swift-source.yaml index b9f7fbfc..cf1cf9dc 100644 --- a/swift-source.yaml +++ b/swift-source.yaml @@ -9,5 +9,5 @@ resources: hash: { get_input: swift_hash_suffix } part-power: 10 proxy-memcache: { get_input: swift_proxy_memcache } - replicas: 1 + replicas: {get_input: swift_replicas } service-password: { get_input: swift_password } diff --git a/swift-storage-source.yaml b/swift-storage-source.yaml index fdf3d980..103a7ec7 100644 --- a/swift-storage-source.yaml +++ b/swift-storage-source.yaml @@ -4,6 +4,10 @@ parameters: SwiftStorageImage: type: string default: overcloud-swift-storage + SwiftReplicas: + type: number + default: 1 + description: How many replicas to use in the swift rings. OvercloudSwiftStorageFlavor: default: baremetal description: Flavor for Swift storage nodes to request when deploying. @@ -66,3 +70,4 @@ resources: - '' - - {get_attr: [controller0, networks, ctlplane, 0]} - ':11211' + swift_replicas: { get_param: SwiftReplicas} diff --git a/undercloud-source.yaml b/undercloud-source.yaml index a4adea08..8c0ec83e 100644 --- a/undercloud-source.yaml +++ b/undercloud-source.yaml @@ -134,7 +134,18 @@ parameters: type: string NeutronPublicInterfaceIP: default: '' - description: A custom IP address to put onto the NeutronPublicInterface. + description: | + A custom IP address to put onto the NeutronPublicInterface bridge. + See also NeutronPublicInterfaceTagIP for adding a VLAN tagging IP. + NeutronPublicInterfaceIP is deprecated in the context of deploying + underclouds - its only needed for the seed bootstrap process. + 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, and that port will be + given the IP address returned by neutron from the public network. type: string NeutronPublicInterfaceRawDevice: default: '' @@ -291,6 +302,8 @@ resources: get_param: NeutronPublicInterfaceRawDevice public_interface_route: get_param: NeutronPublicInterfaceDefaultRoute + public_interface_tag: + get_param: NeutronPublicInterfaceTag physical_bridge: br-ctlplane physical_network: ctlplane network_vlan_ranges: ctlplane diff --git a/undercloud-vlan-port.yaml b/undercloud-vlan-port.yaml new file mode 100644 index 00000000..8231f49d --- /dev/null +++ b/undercloud-vlan-port.yaml @@ -0,0 +1,36 @@ +outputs: + PublicIP: + description: Address for registering endpoints in the cloud. + value: {get_attr: [undercloud_VLANPort, fixed_ips, 0, ip_address]} +resources: + # Override the main template which can also supply a static route. + undercloud_99VLANPort: + type: OS::Heat::StructuredDeployment + properties: + config: {get_resource: undercloudVLANPortConfig} + server: {get_resource: undercloud} + signal_transport: NO_SIGNAL + undercloudVLANPortConfig: + type: OS::Heat::StructuredConfig + properties: + config: + neutron: + ovs: + public_interface_tag_ip: + Fn::Join: + - '/' + - - {get_attr: [undercloud_VLANPort, fixed_ips, 0, ip_address]} + - '24' + # This should also be pulled out of the subnet. May need a + # neutron fix too - XXX make into a parameter and feed it + # in via _undercloud.sh for now. + # Tell the instance to apply the default route. + # Reinstate when https://bugs.launchpad.net/heat/+bug/1336656 is + # sorted + # public_interface_route: + # get_attr: [undercloud_VLANPort, fixed_ips, 0, subnet, gateway_ip] + undercloud_VLANPort: + type: OS::Neutron::Port + properties: + name: undercloud_vlan + network: public |