summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile11
-rw-r--r--nova-compute-config.yaml11
-rw-r--r--nova-compute-instance.yaml31
-rw-r--r--overcloud-source.yaml126
-rw-r--r--overcloud-vlan-port.yaml38
-rw-r--r--swift-source.yaml5
-rw-r--r--swift-storage-source.yaml9
-rw-r--r--undercloud-bm-nova-config.yaml4
-rw-r--r--undercloud-bm-nova-deploy.yaml12
-rw-r--r--undercloud-source.yaml31
-rw-r--r--undercloud-vlan-port.yaml36
-rw-r--r--undercloud-vm-ironic-config.yaml6
-rw-r--r--undercloud-vm-ironic-deploy.yaml12
-rw-r--r--undercloud-vm-nova-config.yaml4
-rw-r--r--undercloud-vm-nova-deploy.yaml12
16 files changed, 292 insertions, 57 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 ad8dc99b..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,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/nova-compute-config.yaml b/nova-compute-config.yaml
index 90387d79..48cb81ee 100644
--- a/nova-compute-config.yaml
+++ b/nova-compute-config.yaml
@@ -8,11 +8,13 @@ resources:
compute_driver: { get_input: nova_compute_driver }
compute_libvirt_type: { get_input: nova_compute_libvirt_type }
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}
+ debug: {get_param: Debug}
metering_secret: {get_input: ceilometer_metering_secret}
service-password: {get_input: ceilometer_password}
compute_agent: {get_input: ceilometer_compute_agent}
@@ -21,18 +23,22 @@ resources:
readonly_user_name: {get_input: snmpd_readonly_user_name}
readonly_user_password: {get_input: snmpd_readonly_user_password}
glance:
+ debug: {get_param: Debug}
host: {get_input: glance_host}
port: {get_input: glance_port}
protocol: {get_input: glance_protocol}
keystone:
+ debug: {get_param: Debug}
host: {get_input: keystone_host}
neutron:
+ debug: {get_param: Debug}
flat-networks: {get_input: neutron_flat_networks}
host: {get_input: neutron_host}
ovs_db: {get_input: neutron_dsn}
ovs:
local_ip: {get_input: neutron_local_ip}
tenant_network_type: {get_input: neutron_tenant_network_type}
+ tunnel_types: {get_input: neutron_tunnel_types}
network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
bridge_mappings: {get_input: neutron_bridge_mappings}
enable_tunneling: {get_input: neutron_enable_tunneling}
@@ -60,3 +66,8 @@ resources:
properties:
group: os-apply-config
config: {get_input: passthrough_config}
+ NovaComputePassthroughSpecific:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config: {get_input: passthrough_config_specific}
diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml
index f8b5ebee..5b54a540 100644
--- a/nova-compute-instance.yaml
+++ b/nova-compute-instance.yaml
@@ -7,6 +7,7 @@ parameters:
type: string
hidden: true
ExtraConfig:
+ default: {}
description: |
Additional configuration to inject into the cluster. The JSON should have
the following structure:
@@ -27,8 +28,8 @@ parameters:
{"config":
[{"section": "default",
"values":
- [{"option": "compute_manager",
- "value": "ironic.nova.compute.manager.ClusterComputeManager"
+ [{"option": "force_config_drive",
+ "value": "always"
}
]
},
@@ -43,6 +44,12 @@ parameters:
}
}
type: json
+ NovaComputeExtraConfig:
+ default: {}
+ description: |
+ NovaCompute specific configuration to inject into the cluster. Same
+ structure as ExtraConfig.
+ type: json
KeyName:
description: Name of an existing EC2 KeyPair to enable SSH access to the instances
type: string
@@ -77,6 +84,16 @@ parameters:
default: ''
description: A port to add to the NeutronPhysicalBridge.
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
RabbitHost:
type: string
RabbitUserName:
@@ -220,6 +237,7 @@ resources:
neutron_dsn: {get_param: NeutronDSN}
neutron_local_ip: {get_attr: [NovaCompute0, networks, ctlplane, 0]}
neutron_tenant_network_type: {get_param: NeutronNetworkType}
+ neutron_tunnel_types: {get_param: NeutronTunnelTypes}
neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
@@ -253,3 +271,12 @@ resources:
signal_transport: NO_SIGNAL
input_values:
passthrough_config: {get_param: ExtraConfig}
+ NovaCompute0PassthroughSpecific:
+ depends_on: [NovaCompute0Passthrough]
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: NovaComputePassthroughSpecific}
+ server: {get_resource: NovaCompute0}
+ signal_transport: NO_SIGNAL
+ input_values:
+ passthrough_config_specific: {get_param: NovaComputeExtraConfig}
diff --git a/overcloud-source.yaml b/overcloud-source.yaml
index 63ebb207..947becfb 100644
--- a/overcloud-source.yaml
+++ b/overcloud-source.yaml
@@ -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:
@@ -415,11 +460,9 @@ resources:
- 0
- Merge::Map:
controller0:
- - Fn::Select:
+ - get_attr:
+ - controller0
- name
- - get_attr:
- - controller0
- - show
nodeid: {get_input: bootstack_nodeid}
database:
host: &database_host
@@ -431,6 +474,7 @@ resources:
- - mysql://cinder:unset@
- *database_host
- /cinder
+ debug: {get_param: Debug}
volume_size_mb:
get_param: CinderLVMLoopDeviceSize
service-password:
@@ -461,6 +505,7 @@ resources:
- - mysql://glance:unset@
- *database_host
- /glance
+ debug: {get_param: Debug}
host:
get_input: controller_virtual_ip
port:
@@ -488,6 +533,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}
@@ -498,7 +544,7 @@ resources:
nodes:
Merge::Map:
controller0:
- {get_attr: [controller0, show, name]}
+ {get_attr: [controller0, name]}
keystone:
db:
Fn::Join:
@@ -506,6 +552,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 +572,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 +588,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 +612,7 @@ resources:
- - mysql://ceilometer:unset@
- *database_host
- /ceilometer
+ debug: {get_param: Debug}
metering_secret: {get_param: CeilometerMeteringSecret}
service-password:
get_param: CeilometerPassword
@@ -638,7 +692,7 @@ resources:
Merge::Map:
controller0:
ip: {get_attr: [controller0, networks, ctlplane, 0]}
- name: {get_attr: [controller0, show, name]}
+ name: {get_attr: [controller0, name]}
net_binds:
- ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
services:
@@ -705,6 +759,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 +779,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}
@@ -733,7 +792,7 @@ resources:
config: {get_resource: controllerConfig}
server: {get_resource: controller0}
input_values:
- bootstack_nodeid: {get_attr: [controller0, show, name]}
+ bootstack_nodeid: {get_attr: [controller0, name]}
controller_host: {get_attr: [controller0, networks, ctlplane, 0]}
controller_virtual_ip:
{get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@@ -770,10 +829,10 @@ resources:
Fn::Join:
- ' '
- - {get_attr: [NovaCompute0, networks, ctlplane, 0]}
- - {get_attr: [NovaCompute0, show, name]}
+ - {get_attr: [NovaCompute0, name]}
- Fn::Join:
- '.'
- - - {get_attr: [NovaCompute0, show, name]}
+ - - {get_attr: [NovaCompute0, name]}
- 'novalocal'
- Fn::Join:
- "\n"
@@ -782,10 +841,10 @@ resources:
Fn::Join:
- ' '
- - {get_attr: [BlockStorage0, networks, ctlplane, 0]}
- - {get_attr: [BlockStorage0, show, name]}
+ - {get_attr: [BlockStorage0, name]}
- Fn::Join:
- '.'
- - - {get_attr: [BlockStorage0, show, name]}
+ - - {get_attr: [BlockStorage0, name]}
- 'novalocal'
- Fn::Join:
- "\n"
@@ -794,10 +853,10 @@ resources:
Fn::Join:
- ' '
- - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
- - {get_attr: [SwiftStorage0, show, name]}
+ - {get_attr: [SwiftStorage0, name]}
- Fn::Join:
- '.'
- - - {get_attr: [SwiftStorage0, show, name]}
+ - - {get_attr: [SwiftStorage0, name]}
- 'novalocal'
- Fn::Join:
- "\n"
@@ -806,10 +865,10 @@ resources:
Fn::Join:
- ' '
- - {get_attr: [controller0, networks, ctlplane, 0]}
- - {get_attr: [controller0, show, name]}
+ - {get_attr: [controller0, name]}
- Fn::Join:
- '.'
- - - {get_attr: [controller0, show, name]}
+ - - {get_attr: [controller0, name]}
- 'novalocal'
- {get_param: CloudName}
rabbit:
@@ -818,7 +877,7 @@ resources:
- ','
- Merge::Map:
controller0:
- {get_attr: [controller0, show, name]}
+ {get_attr: [controller0, name]}
controller0SSLDeployment:
type: OS::Heat::StructuredDeployment
properties:
@@ -838,6 +897,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
diff --git a/overcloud-vlan-port.yaml b/overcloud-vlan-port.yaml
new file mode 100644
index 00000000..71b444fb
--- /dev/null
+++ b/overcloud-vlan-port.yaml
@@ -0,0 +1,38 @@
+outputs:
+ controller0PublicIP:
+ description: Address for registering endpoints in the cloud.
+ value: {get_attr: [controller0_VLANPort, 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-source.yaml b/swift-source.yaml
index fcf94361..ca0967a4 100644
--- a/swift-source.yaml
+++ b/swift-source.yaml
@@ -11,8 +11,3 @@ resources:
proxy-memcache: { get_input: swift_proxy_memcache }
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 49bc3e42..48154e23 100644
--- a/swift-storage-source.yaml
+++ b/swift-storage-source.yaml
@@ -12,12 +12,6 @@ parameters:
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
@@ -47,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_part_power: {get_param: SwiftPartPower}
diff --git a/undercloud-bm-nova-config.yaml b/undercloud-bm-nova-config.yaml
index ba39710b..e70c9099 100644
--- a/undercloud-bm-nova-config.yaml
+++ b/undercloud-bm-nova-config.yaml
@@ -5,7 +5,9 @@ resources:
config:
nova:
compute_hostname: undercloud
- compute_driver: baremetal.driver.BareMetalDriver
+ compute_driver: {get_param: NovaComputeDriver}
+ compute_manager: {get_param: NovaComputeManager}
+ scheduler_host_manager: {get_param: NovaSchedulerHostManager}
db: mysql://nova:unset@localhost/nova
default_ephemeral_format: ext4
host: 127.0.0.1
diff --git a/undercloud-bm-nova-deploy.yaml b/undercloud-bm-nova-deploy.yaml
index d328449c..d46fc076 100644
--- a/undercloud-bm-nova-deploy.yaml
+++ b/undercloud-bm-nova-deploy.yaml
@@ -3,6 +3,18 @@ parameters:
default: eth2
description: What interface to bridge onto br-ex for network nodes.
type: string
+ NovaComputeDriver:
+ default: baremetal.driver.BareMetalDriver
+ description: Full class name for the Nova compute driver
+ type: string
+ NovaComputeManager:
+ default: nova.compute.manager.ComputeManager
+ description: Full class name for the Nova compute manager
+ type: string
+ NovaSchedulerHostManager:
+ default: nova.scheduler.host_manager.HostManager
+ description: Full class name for the Nova scheduler host manager
+ type: string
PowerManager:
default: nova.virt.baremetal.ipmi.IPMI
description: Bare metal power manager driver.
diff --git a/undercloud-source.yaml b/undercloud-source.yaml
index a4adea08..2fcadd90 100644
--- a/undercloud-source.yaml
+++ b/undercloud-source.yaml
@@ -29,6 +29,10 @@ parameters:
description: The password for the ceilometer service account.
type: string
hidden: true
+ Debug:
+ default: ''
+ description: Set to True to enable debugging on all services.
+ type: string
SnmpdReadonlyUserName:
default: ro_snmp_user
description: The user name for SNMPd with readonly rights running on all Overcloud nodes
@@ -134,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: ''
@@ -215,11 +230,9 @@ resources:
- 0
- Merge::Map:
undercloud:
- - Fn::Select:
+ - get_attr:
+ - undercloud
- name
- - get_attr:
- - undercloud
- - show
nodeid: {get_input: bootstack_nodeid}
bootstack:
public_interface_ip:
@@ -239,6 +252,7 @@ resources:
quorum_policy : ignore
ceilometer:
db: mysql://ceilometer:unset@localhost/ceilometer
+ debug: {get_param: Debug}
metering_secret: {get_param: CeilometerMeteringSecret}
snmpd_readonly_user_name:
get_param: SnmpdReadonlyUserName
@@ -250,6 +264,7 @@ resources:
glance:
backend: file
db: mysql://glance:unset@localhost/glance
+ debug: {get_param: Debug}
host: 127.0.0.1
port:
get_param: GlancePort
@@ -268,12 +283,14 @@ resources:
admin_user: heat
auth_encryption_key: unset___________
db: mysql://heat:unset@localhost/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}
waitcondition_server_url: {get_input: heat.waitcondition_server_url}
keystone:
db: mysql://keystone:unset@localhost/keystone
+ debug: {get_param: Debug}
host: 127.0.0.1
ca_certificate: {get_param: KeystoneCACertificate}
signing_key: {get_param: KeystoneSigningKey}
@@ -282,6 +299,7 @@ resources:
innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
root-password: {get_resource: MysqlRootPassword}
neutron:
+ debug: {get_param: Debug}
host: 127.0.0.1
ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
ovs:
@@ -291,6 +309,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
@@ -341,7 +361,6 @@ resources:
bootstack_nodeid:
get_attr:
- undercloud
- - show
- name
controller_host:
get_attr:
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-config.yaml b/undercloud-vm-ironic-config.yaml
index 1a90504a..f5aa4981 100644
--- a/undercloud-vm-ironic-config.yaml
+++ b/undercloud-vm-ironic-config.yaml
@@ -5,9 +5,11 @@ resources:
config:
nova:
compute_hostname: undercloud
- compute_driver: ironic.nova.virt.ironic.driver.IronicDriver
- compute_manager: ironic.nova.compute.manager.ClusteredComputeManager
+ compute_driver: {get_param: NovaComputeDriver}
+ compute_manager: {get_param: NovaComputeManager}
+ scheduler_host_manager: {get_param: NovaSchedulerHostManager}
db: mysql://nova:unset@localhost/nova
+ debug: {get_param: Debug}
default_ephemeral_format: ext4
host: 127.0.0.1
metadata-proxy: false
diff --git a/undercloud-vm-ironic-deploy.yaml b/undercloud-vm-ironic-deploy.yaml
index 6e778e59..f1d3af78 100644
--- a/undercloud-vm-ironic-deploy.yaml
+++ b/undercloud-vm-ironic-deploy.yaml
@@ -7,6 +7,18 @@ parameters:
default: eth0
description: What interface to bridge onto br-ex for network nodes.
type: string
+ NovaComputeDriver:
+ default: ironic.nova.virt.ironic.driver.IronicDriver
+ description: Full class name for the Nova compute driver
+ type: string
+ NovaComputeManager:
+ default: ironic.nova.compute.manager.ClusteredComputeManager
+ description: Full class name for the Nova compute manager
+ type: string
+ NovaSchedulerHostManager:
+ default: ironic.nova.scheduler.ironic_host_manager.IronicHostManager
+ description: Full class name for the Nova scheduler host manager
+ type: string
PowerSSHPrivateKey:
description: Private key for using to ssh to a virtual power host.
type: string
diff --git a/undercloud-vm-nova-config.yaml b/undercloud-vm-nova-config.yaml
index 77d23c1e..9dbb8c22 100644
--- a/undercloud-vm-nova-config.yaml
+++ b/undercloud-vm-nova-config.yaml
@@ -5,7 +5,9 @@ resources:
config:
nova:
compute_hostname: undercloud
- compute_driver: baremetal.driver.BareMetalDriver
+ compute_driver: {get_param: NovaComputeDriver}
+ compute_manager: {get_param: NovaComputeManager}
+ scheduler_host_manager: {get_param: NovaSchedulerHostManager}
db: mysql://nova:unset@localhost/nova
default_ephemeral_format: ext4
host: 127.0.0.1
diff --git a/undercloud-vm-nova-deploy.yaml b/undercloud-vm-nova-deploy.yaml
index ebd14ef6..7b13643c 100644
--- a/undercloud-vm-nova-deploy.yaml
+++ b/undercloud-vm-nova-deploy.yaml
@@ -3,6 +3,18 @@ parameters:
default: eth0
description: What interface to bridge onto br-ex for network nodes.
type: string
+ NovaComputeDriver:
+ default: baremetal.driver.BareMetalDriver
+ description: Full class name for the Nova compute driver
+ type: string
+ NovaComputeManager:
+ default: nova.compute.manager.ComputeManager
+ description: Full class name for the Nova compute manager
+ type: string
+ NovaSchedulerHostManager:
+ default: nova.scheduler.host_manager.HostManager
+ description: Full class name for the Nova scheduler host manager
+ type: string
PowerManager:
default: nova.virt.baremetal.virtual_power_driver.VirtualPowerManager
description: Bare metal power manager driver.