diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | block-storage.yaml | 26 | ||||
-rw-r--r-- | nova-compute-config.yaml | 1 | ||||
-rw-r--r-- | nova-compute-instance.yaml | 18 | ||||
-rw-r--r-- | overcloud-source.yaml | 102 | ||||
-rw-r--r-- | overcloud-vlan-port.yaml | 38 | ||||
-rw-r--r-- | setup.cfg | 1 | ||||
-rw-r--r-- | swift-deploy.yaml | 5 | ||||
-rw-r--r-- | swift-source.yaml | 7 | ||||
-rw-r--r-- | swift-storage-source.yaml | 14 | ||||
-rw-r--r-- | undercloud-bm-nova-deploy.yaml | 2 | ||||
-rw-r--r-- | undercloud-source.yaml | 33 | ||||
-rw-r--r-- | undercloud-vlan-port.yaml | 36 | ||||
-rw-r--r-- | undercloud-vm-ironic-deploy.yaml | 5 | ||||
-rw-r--r-- | undercloud-vm-nova-deploy.yaml | 2 |
16 files changed, 241 insertions, 63 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,14 +15,16 @@ 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) # $^ won't work here because we want to list nova-compute-instance.yaml as # a prerequisite but don't want to pass it into merge.py - python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE='0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'1'} overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml > $@.tmp + python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'1'} overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml > $@.tmp mv $@.tmp $@ undercloud-vm.yaml: undercloud-source.yaml undercloud-vm-nova-config.yaml undercloud-vm-nova-deploy.yaml @@ -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/block-storage.yaml b/block-storage.yaml index 22811d37..e75e773f 100644 --- a/block-storage.yaml +++ b/block-storage.yaml @@ -8,12 +8,6 @@ parameters: default: baremetal description: Flavor for block storage nodes to request when deploying. type: string - NeutronNetworkType: - type: string - default: 'gre' - NeutronEnableTunnelling: - type: string - default: True resources: BlockStorage0: type: OS::Nova::Server @@ -24,14 +18,14 @@ resources: key_name: {get_param: KeyName} user_data_format: SOFTWARE_CONFIG BlockStorage0Deployment: + depends_on: [controller0AllNodesDeployment] type: OS::Heat::StructuredDeployment properties: server: {get_resource: BlockStorage0} config: {get_resource: BlockStorageConfig} input_values: - controller_host: {get_attr: [controller0, networks, ctlplane, 0]} + controller_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} cinder_dsn: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]} - neutron_local_ip: {get_attr: [BlockStorage0 , networks, ctlplane, 0]} signal_transport: NO_SIGNAL BlockStorageConfig: type: OS::Heat::StructuredConfig @@ -40,7 +34,7 @@ resources: config: admin-password: {get_param: AdminPassword} keystone: - host: {get_input: controller_host} + host: {get_input: controller_virtual_ip} cinder: db: {get_input: cinder_dsn} volume_size_mb: @@ -50,15 +44,9 @@ resources: iscsi-helper: get_param: CinderISCSIHelper rabbit: - host: {get_input: controller_host} + host: {get_input: controller_virtual_ip} username: {get_param: RabbitUserName} password: {get_param: RabbitPassword} - interfaces: - control: {get_param: NeutronPublicInterface} - neutron: - ovs: - local_ip: {get_input: neutron_local_ip} - tenant_network_type: {get_param: NeutronNetworkType} - enable_tunneling: {get_param: NeutronEnableTunnelling} - service-password: - get_param: NeutronPassword + glance: + host: {get_input: controller_virtual_ip} + port: {get_param: GlancePort} diff --git a/nova-compute-config.yaml b/nova-compute-config.yaml index 6eac4936..48cfcf81 100644 --- a/nova-compute-config.yaml +++ b/nova-compute-config.yaml @@ -10,6 +10,7 @@ resources: db: {get_input: nova_dsn} debug: {get_param: Debug} host: {get_input: nova_api_host} + public_ip: {get_input: nova_public_ip} service-password: {get_input: nova_password} ceilometer: db: {get_input: ceilometer_dsn} diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml index c5f4337c..f8b5ebee 100644 --- a/nova-compute-instance.yaml +++ b/nova-compute-instance.yaml @@ -136,6 +136,8 @@ parameters: type: string NovaDSN: type: string + NovaPublicIP: + type: string NeutronDSN: type: string NeutronBridgeMappings: @@ -170,6 +172,12 @@ parameters: type: string description: The image ID for live-updates to the overcloud compute nodes. default: '' + DefaultSignalTransport: + default: CFN_SIGNAL + description: Transport to use for software-config signals. + type: string + constraints: + - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ] resources: NovaCompute0: type: OS::Nova::Server @@ -183,8 +191,8 @@ resources: networks: - network: ctlplane user_data_format: SOFTWARE_CONFIG - NovaCompute0Deploy: - depends_on: [controller0AllNodes] + NovaCompute0Deployment: + depends_on: [controller0AllNodesDeployment] type: OS::Heat::StructuredDeployment properties: signal_transport: NO_SIGNAL @@ -194,6 +202,7 @@ resources: nova_compute_driver: {get_param: NovaComputeDriver} nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType} nova_dsn: {get_param: NovaDSN} + nova_public_ip: {get_param: NovaPublicIP} nova_api_host: {get_param: NovaApiHost} nova_password: {get_param: NovaPassword} ceilometer_dsn: {get_param: CeilometerDSN} @@ -228,14 +237,15 @@ resources: nova_image: {get_param: NovaImage} live_update_image_id: {get_param: LiveUpdateComputeImage} ntp_server: {get_param: NtpServer} - NovaCompute0AllNodesDeploy: + NovaCompute0AllNodesDeployment: depends_on: [NovaCompute0Passthrough] type: OS::Heat::StructuredDeployment properties: + signal_transport: {get_param: DefaultSignalTransport} config: {get_param: AllNodesConfig} server: {get_resource: NovaCompute0} NovaCompute0Passthrough: - depends_on: [NovaCompute0Deploy] + depends_on: [NovaCompute0Deployment] type: OS::Heat::StructuredDeployment properties: config: {get_resource: NovaComputePassthrough} diff --git a/overcloud-source.yaml b/overcloud-source.yaml index 60a2cdf5..0ed117b2 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -110,9 +110,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. @@ -163,14 +176,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: @@ -185,6 +203,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. @@ -259,7 +287,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 @@ -287,6 +315,12 @@ parameters: description: Keystone key for signing tokens. type: string hidden: true + DefaultSignalTransport: + default: CFN_SIGNAL + description: Transport to use for software-config signals. + type: string + constraints: + - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ] resources: ControlVirtualIP: type: OS::Neutron::Port @@ -299,6 +333,10 @@ resources: type: OS::Heat::RandomString properties: length: 10 + MysqlRootPassword: + type: OS::Heat::RandomString + properties: + length: 10 PublicVirtualIP: type: OS::Neutron::Port properties: @@ -312,11 +350,13 @@ resources: length: 20 salt: get_param: RabbitCookieSalt - NovaCompute0Deploy: + NovaCompute0Deployment: type: FileInclude Path: nova-compute-instance.yaml - SubKey: resources.NovaCompute0Deploy + SubKey: resources.NovaCompute0Deployment parameters: + DefaultSignalTransport: + get_param: DefaultSignalTransport NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} @@ -328,6 +368,7 @@ resources: - - mysql://nova:unset@ - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} - /nova + NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} CeilometerDSN: Fn::Join: - '' @@ -344,17 +385,18 @@ resources: NeutronEnableTunnelling: "True" NeutronFlatNetworks: get_param: NeutronFlatNetworks - NeutronNetworkVLANRanges: "" + NeutronNetworkVLANRanges: + get_param: NeutronNetworkVLANRanges NeutronPhysicalBridge: get_param: HypervisorNeutronPhysicalBridge NeutronPublicInterface: get_param: HypervisorNeutronPublicInterface NeutronBridgeMappings: get_param: NeutronBridgeMappings - NovaCompute0AllNodes: + NovaCompute0AllNodesDeployment: type: FileInclude Path: nova-compute-instance.yaml - SubKey: resources.NovaCompute0AllNodesDeploy + SubKey: resources.NovaCompute0AllNodesDeployment parameters: AllNodesConfig: {get_resource: allNodesConfig} NovaCompute0Passthrough: @@ -490,6 +532,7 @@ resources: mysql: innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize} local_bind: true + root-password: {get_resource: MysqlRootPassword} nodes: Merge::Map: controller0: @@ -508,6 +551,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 @@ -515,6 +559,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: @@ -654,6 +700,9 @@ resources: port: 3306 extra_server_params: - backup + options: + - timeout client 0 + - timeout server 0 - name: nova_ec2 port: 8773 - name: nova_osapi @@ -692,10 +741,11 @@ resources: networks: - network: ctlplane user_data_format: SOFTWARE_CONFIG - controller0AllNodes: + controller0AllNodesDeployment: depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0Passthrough] type: OS::Heat::StructuredDeployment properties: + signal_transport: {get_param: DefaultSignalTransport} config: {get_resource: allNodesConfig} server: {get_resource: controller0} controller0Deployment: @@ -750,6 +800,30 @@ resources: - Fn::Join: - "\n" - Merge::Map: + BlockStorage0: + Fn::Join: + - ' ' + - - {get_attr: [BlockStorage0, networks, ctlplane, 0]} + - {get_attr: [BlockStorage0, show, name]} + - Fn::Join: + - '.' + - - {get_attr: [BlockStorage0, show, name]} + - 'novalocal' + - Fn::Join: + - "\n" + - Merge::Map: + SwiftStorage0: + Fn::Join: + - ' ' + - - {get_attr: [SwiftStorage0, networks, ctlplane, 0]} + - {get_attr: [SwiftStorage0, show, name]} + - Fn::Join: + - '.' + - - {get_attr: [SwiftStorage0, show, name]} + - 'novalocal' + - Fn::Join: + - "\n" + - Merge::Map: controller0: Fn::Join: - ' ' 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 @@ -1,6 +1,5 @@ [metadata] name = tripleo-heat-templates -version = 0.0.1 summary = Heat templates for deploying OpenStack with OpenStack. description-file = README.md 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 9c7b04f5..cf1cf9dc 100644 --- a/swift-source.yaml +++ b/swift-source.yaml @@ -9,10 +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 } - neutron: - ovs: - local_ip: { get_input: neutron_local_ip } - enable_tunnelling: { get_input: neutron_enable_tunnelling} - tenant_network_type: { get_input: neutron_tenant_network_type} diff --git a/swift-storage-source.yaml b/swift-storage-source.yaml index 3dbdda95..103a7ec7 100644 --- a/swift-storage-source.yaml +++ b/swift-storage-source.yaml @@ -4,16 +4,14 @@ 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. type: string - NeutronNetworkType: - type: string - default: 'gre' - NeutronEnableTunnelling: - type: string - default: True resources: SwiftStorage0: type: OS::Nova::Server @@ -43,9 +41,6 @@ resources: config: {get_resource: SwiftConfig} signal_transport: NO_SIGNAL input_values: - neutron_local_ip: {get_attr: [SwiftStorage0, networks, ctlplane, 0]} - neutron_tenant_network_type: {get_param: NeutronNetworkType} - neutron_enable_tunneling: {get_param: NeutronEnableTunnelling} swift_hash_suffix: {get_param: SwiftHashSuffix} swift_password: {get_param: SwiftPassword} swift_devices: @@ -75,3 +70,4 @@ resources: - '' - - {get_attr: [controller0, networks, ctlplane, 0]} - ':11211' + swift_replicas: { get_param: SwiftReplicas} diff --git a/undercloud-bm-nova-deploy.yaml b/undercloud-bm-nova-deploy.yaml index 3df85970..d328449c 100644 --- a/undercloud-bm-nova-deploy.yaml +++ b/undercloud-bm-nova-deploy.yaml @@ -12,7 +12,7 @@ parameters: description: Timeout for PXE deployment of baremetal nodes type: number resources: - 01_undercloudNovaDeployment: + undercloudNovaDeployment: type: OS::Heat::StructuredDeployment properties: config: {get_resource: undercloudNovaConfig} diff --git a/undercloud-source.yaml b/undercloud-source.yaml index 22a681c8..0788e8b6 100644 --- a/undercloud-source.yaml +++ b/undercloud-source.yaml @@ -138,7 +138,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: '' @@ -185,6 +196,12 @@ parameters: description: Keystone key for signing tokens. type: string hidden: true + DefaultSignalTransport: + default: CFN_SIGNAL + description: Transport to use for software-config signals. + type: string + constraints: + - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ] resources: RabbitCookie: type: OS::Heat::RandomString @@ -192,6 +209,10 @@ resources: length: 20 salt: get_param: RabbitCookieSalt + MysqlRootPassword: + type: OS::Heat::RandomString + properties: + length: 10 undercloudConfig: type: OS::Heat::StructuredConfig properties: @@ -278,6 +299,7 @@ resources: signing_certificate: {get_param: KeystoneSigningCertificate} mysql: innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize} + root-password: {get_resource: MysqlRootPassword} neutron: debug: {get_param: Debug} host: 127.0.0.1 @@ -289,6 +311,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 @@ -328,11 +352,13 @@ resources: networks: - network: ctlplane user_data_format: SOFTWARE_CONFIG - 99_undercloudDeployment: + undercloudDeployment: + depends_on: [undercloudPassthroughDeployment] type: OS::Heat::StructuredDeployment properties: config: {get_resource: undercloudConfig} server: {get_resource: undercloud} + signal_transport: {get_param: DefaultSignalTransport} input_values: bootstack_nodeid: get_attr: @@ -363,7 +389,8 @@ resources: - - 'http://' - {get_attr: [undercloud, networks, ctlplane, 0]} - ':8000/v1/waitcondition' - 00_undercloudPassthroughDeployment: + undercloudPassthroughDeployment: + depends_on: [undercloudNovaDeployment] type: OS::Heat::StructuredDeployment properties: config: {get_resource: undercloudPassthroughConfig} 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 diff --git a/undercloud-vm-ironic-deploy.yaml b/undercloud-vm-ironic-deploy.yaml index 8fff9d54..6e778e59 100644 --- a/undercloud-vm-ironic-deploy.yaml +++ b/undercloud-vm-ironic-deploy.yaml @@ -12,7 +12,8 @@ parameters: type: string hidden: true resources: - 01_undercloudNovaDeployment: + undercloudNovaDeployment: + depends_on: [undercloudIronicDeployment] type: OS::Heat::StructuredDeployment properties: config: {get_resource: undercloudNovaConfig} @@ -20,7 +21,7 @@ resources: signal_transport: NO_SIGNAL input_values: nova_service_password: {get_param: NovaPassword} - 02_undercloudIronicDeployment: + undercloudIronicDeployment: type: OS::Heat::StructuredDeployment properties: config: {get_resource: undercloudIronicConfig} diff --git a/undercloud-vm-nova-deploy.yaml b/undercloud-vm-nova-deploy.yaml index 14809384..ebd14ef6 100644 --- a/undercloud-vm-nova-deploy.yaml +++ b/undercloud-vm-nova-deploy.yaml @@ -24,7 +24,7 @@ parameters: description: What username to ssh to the virtual power host with. type: string resources: - 01_undercloudNovaDeployment: + undercloudNovaDeployment: type: OS::Heat::StructuredDeployment properties: config: {get_resource: undercloudNovaConfig} |