diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 11 | ||||
-rw-r--r-- | overcloud-source.yaml | 12 | ||||
-rw-r--r-- | overcloud-vlan-port.yaml | 38 | ||||
-rw-r--r-- | undercloud-source.yaml | 15 | ||||
-rw-r--r-- | undercloud-vlan-port.yaml | 36 |
6 files changed, 110 insertions, 3 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 63ebb207..75b87f29 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -199,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. @@ -540,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/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 |