diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 11 | ||||
-rw-r--r-- | nova-compute-config.yaml | 6 | ||||
-rw-r--r-- | nova-compute-instance.yaml | 14 | ||||
-rw-r--r-- | overcloud-source.yaml | 82 | ||||
-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-config.yaml | 4 | ||||
-rw-r--r-- | undercloud-bm-nova-deploy.yaml | 12 | ||||
-rw-r--r-- | undercloud-source.yaml | 36 | ||||
-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 |
18 files changed, 265 insertions, 36 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 b74f5f10..5dc8f204 100644 --- a/nova-compute-config.yaml +++ b/nova-compute-config.yaml @@ -8,10 +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} @@ -20,12 +23,15 @@ 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} diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml index 1c2224ec..d368f14b 100644 --- a/nova-compute-instance.yaml +++ b/nova-compute-instance.yaml @@ -28,8 +28,8 @@ parameters: {"config": [{"section": "default", "values": - [{"option": "compute_manager", - "value": "ironic.nova.compute.manager.ClusterComputeManager" + [{"option": "force_config_drive", + "value": "always" } ] }, @@ -143,6 +143,8 @@ parameters: type: string NovaDSN: type: string + NovaPublicIP: + type: string NeutronDSN: type: string NeutronBridgeMappings: @@ -177,6 +179,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 @@ -201,6 +209,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} @@ -239,6 +248,7 @@ resources: depends_on: [NovaCompute0Passthrough] type: OS::Heat::StructuredDeployment properties: + signal_transport: {get_param: DefaultSignalTransport} config: {get_param: AllNodesConfig} server: {get_resource: NovaCompute0} NovaCompute0Passthrough: diff --git a/overcloud-source.yaml b/overcloud-source.yaml index 20e827a5..3dbd5712 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" } ] }, @@ -118,9 +122,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. @@ -171,14 +188,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: @@ -193,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. @@ -267,7 +299,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 @@ -295,6 +327,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 @@ -307,6 +345,10 @@ resources: type: OS::Heat::RandomString properties: length: 10 + MysqlRootPassword: + type: OS::Heat::RandomString + properties: + length: 10 PublicVirtualIP: type: OS::Neutron::Port properties: @@ -325,6 +367,8 @@ resources: Path: nova-compute-instance.yaml 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]} @@ -336,6 +380,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: - '' @@ -352,7 +397,8 @@ resources: NeutronEnableTunnelling: "True" NeutronFlatNetworks: get_param: NeutronFlatNetworks - NeutronNetworkVLANRanges: "" + NeutronNetworkVLANRanges: + get_param: NeutronNetworkVLANRanges NeutronPhysicalBridge: get_param: HypervisorNeutronPhysicalBridge NeutronPublicInterface: @@ -417,6 +463,7 @@ resources: - - mysql://cinder:unset@ - *database_host - /cinder + debug: {get_param: Debug} volume_size_mb: get_param: CinderLVMLoopDeviceSize service-password: @@ -447,6 +494,7 @@ resources: - - mysql://glance:unset@ - *database_host - /glance + debug: {get_param: Debug} host: get_input: controller_virtual_ip port: @@ -474,6 +522,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} @@ -492,6 +541,7 @@ resources: - - mysql://keystone:unset@ - *database_host - /keystone + debug: {get_param: Debug} host: get_input: controller_virtual_ip ca_certificate: {get_param: KeystoneCACertificate} @@ -500,6 +550,7 @@ resources: mysql: innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize} local_bind: true + root-password: {get_resource: MysqlRootPassword} nodes: Merge::Map: controller0: @@ -510,6 +561,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 @@ -517,6 +569,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 @@ -524,6 +577,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: @@ -543,6 +598,7 @@ resources: - - mysql://ceilometer:unset@ - *database_host - /ceilometer + debug: {get_param: Debug} metering_secret: {get_param: CeilometerMeteringSecret} service-password: get_param: CeilometerPassword @@ -662,6 +718,9 @@ resources: port: 3306 extra_server_params: - backup + options: + - timeout client 0 + - timeout server 0 - name: nova_ec2 port: 8773 - name: nova_osapi @@ -709,6 +768,7 @@ resources: depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0PassthroughSpecific] type: OS::Heat::StructuredDeployment properties: + signal_transport: {get_param: DefaultSignalTransport} config: {get_resource: allNodesConfig} server: {get_resource: controller0} controller0Deployment: 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-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 e09b3db5..0788e8b6 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: '' @@ -181,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 @@ -188,6 +209,10 @@ resources: length: 20 salt: get_param: RabbitCookieSalt + MysqlRootPassword: + type: OS::Heat::RandomString + properties: + length: 10 undercloudConfig: type: OS::Heat::StructuredConfig properties: @@ -229,6 +254,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 @@ -240,6 +266,7 @@ resources: glance: backend: file db: mysql://glance:unset@localhost/glance + debug: {get_param: Debug} host: 127.0.0.1 port: get_param: GlancePort @@ -258,19 +285,23 @@ 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} 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 ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8 ovs: @@ -280,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 @@ -325,6 +358,7 @@ resources: properties: config: {get_resource: undercloudConfig} server: {get_resource: undercloud} + signal_transport: {get_param: DefaultSignalTransport} input_values: bootstack_nodeid: 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. |