summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile13
-rw-r--r--block-storage.yaml26
-rw-r--r--nova-compute-config.yaml1
-rw-r--r--nova-compute-instance.yaml18
-rw-r--r--overcloud-source.yaml102
-rw-r--r--overcloud-vlan-port.yaml38
-rw-r--r--setup.cfg1
-rw-r--r--swift-deploy.yaml5
-rw-r--r--swift-source.yaml7
-rw-r--r--swift-storage-source.yaml14
-rw-r--r--undercloud-bm-nova-deploy.yaml2
-rw-r--r--undercloud-source.yaml33
-rw-r--r--undercloud-vlan-port.yaml36
-rw-r--r--undercloud-vm-ironic-deploy.yaml5
-rw-r--r--undercloud-vm-nova-deploy.yaml2
16 files changed, 241 insertions, 63 deletions
diff --git a/.gitignore b/.gitignore
index ae03b039..3035c9e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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]
diff --git a/Makefile b/Makefile
index 295e85c5..349a0778 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/setup.cfg b/setup.cfg
index 28adf7c2..f765a7dd 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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}