diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 11 | ||||
-rw-r--r-- | nova-compute-config.yaml | 11 | ||||
-rw-r--r-- | nova-compute-instance.yaml | 31 | ||||
-rw-r--r-- | overcloud-source.yaml | 126 | ||||
-rw-r--r-- | overcloud-vlan-port.yaml | 38 | ||||
-rw-r--r-- | swift-source.yaml | 5 | ||||
-rw-r--r-- | swift-storage-source.yaml | 9 | ||||
-rw-r--r-- | undercloud-bm-nova-config.yaml | 4 | ||||
-rw-r--r-- | undercloud-bm-nova-deploy.yaml | 12 | ||||
-rw-r--r-- | undercloud-source.yaml | 31 | ||||
-rw-r--r-- | undercloud-vlan-port.yaml | 36 | ||||
-rw-r--r-- | undercloud-vm-ironic-config.yaml | 6 | ||||
-rw-r--r-- | undercloud-vm-ironic-deploy.yaml | 12 | ||||
-rw-r--r-- | undercloud-vm-nova-config.yaml | 4 | ||||
-rw-r--r-- | undercloud-vm-nova-deploy.yaml | 12 |
16 files changed, 292 insertions, 57 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/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. |