diff options
-rw-r--r-- | block-storage.yaml | 7 | ||||
-rw-r--r-- | nova-compute-config.yaml | 13 | ||||
-rw-r--r-- | nova-compute-instance.yaml | 62 | ||||
-rw-r--r-- | overcloud-source.yaml | 219 | ||||
-rw-r--r-- | ssl-source.yaml | 1 | ||||
-rw-r--r-- | swift-source.yaml | 1 | ||||
-rw-r--r-- | undercloud-bm-source.yaml | 7 | ||||
-rw-r--r-- | undercloud-source.yaml | 44 | ||||
-rw-r--r-- | undercloud-vm-source.yaml | 7 |
9 files changed, 334 insertions, 27 deletions
diff --git a/block-storage.yaml b/block-storage.yaml index ce60ce26..16363b59 100644 --- a/block-storage.yaml +++ b/block-storage.yaml @@ -34,13 +34,15 @@ Resources: BlockStorageConfig: Type: OS::Heat::StructuredConfig Properties: + group: os-apply-config config: admin-password: {Ref: AdminPassword} keystone: host: {get_input: controller_host} cinder: db: {get_input: cinder_dsn} - volume_size_mb: '5000' + volume_size_mb: + Ref: CinderLVMLoopDeviceSize service-password: Ref: CinderPassword iscsi-helper: @@ -64,7 +66,8 @@ Resources: host: {get_input: controller_host} cinder: db: {get_input: cinder_dsn} - volume_size_mb: '5000' + volume_size_mb: + Ref: CinderLVMLoopDeviceSize service-password: Ref: CinderPassword iscsi-helper: diff --git a/nova-compute-config.yaml b/nova-compute-config.yaml index 1500a2e0..ebc8fbd2 100644 --- a/nova-compute-config.yaml +++ b/nova-compute-config.yaml @@ -2,6 +2,7 @@ Resources: NovaComputeConfig: Type: OS::Heat::StructuredConfig Properties: + group: os-apply-config config: nova: compute_driver: { get_input: nova_compute_driver } @@ -14,6 +15,10 @@ Resources: metering_secret: {get_input: ceilometer_metering_secret} service-password: {get_input: ceilometer_password} compute_agent: {get_input: ceilometer_compute_agent} + snmpd: + export_MIB: UCD-SNMP-MIB + readonly_user_name: {get_input: snmpd_readonly_user_name} + readonly_user_password: {get_input: snmpd_readonly_user_password} glance: host: {get_input: glance_host} hosts: {get_input: static_hosts} @@ -45,3 +50,11 @@ Resources: base_image_id: {get_input: nova_image} live_update_image_id: {get_input: live_update_compute_image} completion-signal: {get_input: deploy_signal_id} + ntp: + servers: + - {server: {get_input: ntp_server}, fudge: "stratum 0"} + NovaComputePassthrough: + Type: OS::Heat::StructuredConfig + Properties: + group: os-apply-config + config: {get_input: passthrough_config} diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml index 99c2e11c..8cbf7759 100644 --- a/nova-compute-instance.yaml +++ b/nova-compute-instance.yaml @@ -6,7 +6,44 @@ Parameters: Description: The password for the keystone admin account, used for monitoring, querying neutron etc. Type: String NoEcho: true - KeyName: + ExtraConfig: + Description: | + Additional configuration to inject into the cluster. The JSON should have + the following structure: + {"FILEKEY": + {"config": + [{"section": "SECTIONNAME", + "values": + [{"option": "OPTIONNAME", + "value": "VALUENAME" + } + ] + } + ] + } + } + For instance: + {"nova": + {"config": + [{"section": "default", + "values": + [{"option": "compute_manager", + "value": "ironic.nova.compute.manager.ClusterComputeManager" + } + ] + }, + {"section": "cells", + "values": + [{"option": "driver", + "value": "nova.cells.rpc_driver.CellsRPCDriver" + } + ] + } + ] + } + } + Type: Json + KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instances Type: String Default: default @@ -21,6 +58,9 @@ Parameters: NovaImage: Type: String Default: overcloud-compute + NtpServer: + Type: String + Default: '' KeystoneHost: Type: String NeutronFlatNetworks: @@ -59,6 +99,15 @@ Parameters: Description: The password for the ceilometer service account. Type: String NoEcho: true + SnmpdReadonlyUserName: + Default: ro_snmp_user + Description: The user name for SNMPd with readonly rights running on all Overcloud nodes + Type: String + SnmpdReadonlyUserPassword: + Default: unset + Description: The user password for SNMPd with readonly rights running on all Overcloud nodes + Type: String + NoEcho: true NovaComputeDriver: Type: String Default: libvirt.LibvirtDriver @@ -139,6 +188,8 @@ Resources: ceilometer_metering_secret: {Ref: CeilometerMeteringSecret} ceilometer_password: {Ref: CeilometerPassword} ceilometer_compute_agent: {Ref: CeilometerComputeAgent} + snmpd_readonly_user_name: {Ref: SnmpdReadonlyUserName} + snmpd_readonly_user_password: {Ref: SnmpdReadonlyUserPassword} glance_host: {Ref: GlanceHost} static_hosts: {Ref: StaticHosts} keystone_host: {Ref: KeystoneHost} @@ -163,3 +214,12 @@ Resources: live_update_tenant_name: {Ref: LiveUpdateTenantName} nova_image: {Ref: NovaImage} live_update_image_id: {Ref: LiveUpdateComputeImage} + ntp_server: {Ref: NtpServer} + NovaCompute0Passthrough: + Type: OS::Heat::StructuredDeployment + Properties: + config: {Ref: NovaComputePassthrough} + server: {Ref: NovaCompute0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {Ref: ExtraConfig} diff --git a/overcloud-source.yaml b/overcloud-source.yaml index f215e3be..cf1eecda 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -21,6 +21,48 @@ Parameters: Default: tgtadm Description: The iSCSI helper to use with cinder. Type: String + CinderLVMLoopDeviceSize: + Default: 5000 + Description: The size of the loopback file used by the cinder LVM driver. + Type: Number + ExtraConfig: + Default: {} + Description: | + Additional configuration to inject into the cluster. The JSON should have + the following structure: + {"FILEKEY": + {"config": + [{"section": "SECTIONNAME", + "values": + [{"option": "OPTIONNAME", + "value": "VALUENAME" + } + ] + } + ] + } + } + For instance: + {"nova": + {"config": + [{"section": "default", + "values": + [{"option": "compute_manager", + "value": "ironic.nova.compute.manager.ClusterComputeManager" + } + ] + }, + {"section": "cells", + "values": + [{"option": "driver", + "value": "nova.cells.rpc_driver.CellsRPCDriver" + } + ] + } + ] + } + } + Type: Json OvercloudControlFlavor: Default: baremetal Description: Flavor for control nodes to request when deploying. @@ -79,6 +121,15 @@ Parameters: Description: The password for the ceilometer service account. Type: String NoEcho: true + SnmpdReadonlyUserName: + Default: ro_snmp_user + Description: The user name for SNMPd with readonly rights running on all Overcloud nodes + Type: String + SnmpdReadonlyUserPassword: + Default: unset + Description: The user password for SNMPd with readonly rights running on all Overcloud nodes + Type: String + NoEcho: true CloudName: Default: '' Description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org @@ -125,6 +176,14 @@ Parameters: Default: '' Description: If set, the public interface is a vlan with this device as the raw device. Type: String + NeutronControlPlaneID: + Default: '' + Type: String + 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. + Type: String controllerImage: Type: String Default: overcloud-control @@ -171,10 +230,28 @@ Parameters: Description: The image ID for live-updates to the overcloud compute nodes. Default: '' MysqlInnodbBufferPoolSize: - Description: Specifies the size of the buffer pool in megabytes. + Description: > + Specifies the size of the buffer pool in megabytes. Setting to + zero should be interpreted as "no value" and will defer to the + lower level default. Type: Number - Default: 100 + Default: 0 + ControlVirtualInterface: + Default: 'br-ex' + Description: Interface where virtual ip will be assigned. + Type: String + ControlFixedIPs: + Default: [] + Description: Should be used for arbitrary ips. + Type: Json Resources: + ControlVirtualIP: + Type: OS::Neutron::Port + Properties: + name: control_virtual_ip + network_id: {Ref: NeutronControlPlaneID} + fixed_ips: + Ref: ControlFixedIPs RabbitCookie: Type: OS::Heat::RandomString Properties: @@ -235,17 +312,40 @@ Resources: - show - 'novalocal' - Fn::Join: - - ' ' - - - Fn::Select: - - 0 - - Fn::Select: - - ctlplane - - Fn::GetAtt: - - controller0 - - networks - - {Ref: CloudName} - # If CloudName is unset, make the hosts line still valid - - unused + - "\n" + - Merge::Map: + controller0: + Fn::Join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - Fn::GetAtt: + - controller0 + - networks + - Fn::Select: + - name + - Fn::GetAtt: + - controller0 + - show + - Fn::Join: + - '.' + - - Fn::Select: + - name + - Fn::GetAtt: + - controller0 + - show + - 'novalocal' + - {Ref: CloudName} + NovaCompute0Passthrough: + Type: OS::Heat::StructuredDeployment + Properties: + config: {Ref: NovaComputePassthrough} + server: {Ref: NovaCompute0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {Ref: ExtraConfig} NovaCompute0: Type: FileInclude Path: nova-compute-instance.yaml @@ -253,6 +353,7 @@ Resources: controllerConfig: Type: OS::Heat::StructuredConfig Properties: + group: os-apply-config config: completion-signal: {get_input: deploy_signal_id} admin-password: @@ -264,7 +365,8 @@ Resources: Ref: NeutronPublicInterfaceIP cinder: db: mysql://cinder:unset@localhost/cinder - volume_size_mb: '5000' + volume_size_mb: + Ref: CinderLVMLoopDeviceSize service-password: Ref: CinderPassword iscsi-helper: @@ -325,11 +427,19 @@ Resources: ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8 service-password: Ref: NeutronPassword + dnsmasq-options: + Ref: NeutronDnsmasqOptions ceilometer: db: mysql://ceilometer:unset@localhost/ceilometer metering_secret: {Ref: CeilometerMeteringSecret} service-password: Ref: CeilometerPassword + snmpd: + export_MIB: UCD-SNMP-MIB + readonly_user_name: + Ref: SnmpdReadonlyUserName + readonly_user_password: + Ref: SnmpdReadonlyUserPassword nova: compute_driver: libvirt.LibvirtDriver db: mysql://nova:unset@localhost/nova @@ -354,6 +464,20 @@ Resources: ntp: servers: - {server: {Ref: NtpServer}, fudge: "stratum 0"} + keepalived: + keepalive_interface: + Ref: NeutronPublicInterface + priority: 101 + virtual_ips: + - + ip: {'Fn::Select': [ip_address, 'Fn::Select': [0, 'Fn::GetAtt': [ControlVirtualIP, fixed_ips]]]} + interface: + Ref: ControlVirtualInterface + controllerPassthrough: + Type: OS::Heat::StructuredConfig + Properties: + group: os-apply-config + config: {get_input: passthrough_config} controller0: Type: OS::Nova::Server Properties: @@ -372,7 +496,7 @@ Resources: config: {Ref: controllerConfig} server: {Ref: controller0} input_values: - controller_host: + controller_host: Fn::Select: - 0 - Fn::Select: @@ -400,9 +524,60 @@ Resources: - ':8000/v1/waitcondition' hosts: Fn::Join: - - ' ' - - - {"Fn::Select": [ 0, "Fn::Select": [ ctlplane, { "Fn::GetAtt": [ controller0, networks ]}]]} - - {Ref: CloudName} + - "\n" + - - Fn::Join: + - "\n" + - Merge::Map: + NovaCompute0: + Fn::Join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - Fn::GetAtt: + - NovaCompute0 + - networks + - Fn::Select: + - name + - Fn::GetAtt: + - NovaCompute0 + - show + - Fn::Join: + - '.' + - - Fn::Select: + - name + - Fn::GetAtt: + - NovaCompute0 + - show + - 'novalocal' + - Fn::Join: + - "\n" + - Merge::Map: + controller0: + Fn::Join: + - ' ' + - - Fn::Select: + - 0 + - Fn::Select: + - ctlplane + - Fn::GetAtt: + - controller0 + - networks + - Fn::Select: + - name + - Fn::GetAtt: + - controller0 + - show + - Fn::Join: + - '.' + - - Fn::Select: + - name + - Fn::GetAtt: + - controller0 + - show + - 'novalocal' + - {Ref: CloudName} controller0SSLDeployment: Type: OS::Heat::StructuredDeployment Properties: @@ -412,6 +587,14 @@ Resources: input_values: ssl_certificate: {Ref: SSLCertificate} ssl_key: {Ref: SSLKey} + controller0Passthrough: + Type: OS::Heat::StructuredDeployment + Properties: + config: {Ref: controllerPassthrough} + server: {Ref: controller0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {Ref: ExtraConfig} Outputs: KeystoneURL: Description: URL for the Overcloud Keystone service diff --git a/ssl-source.yaml b/ssl-source.yaml index 26f2f72c..c3edbe75 100644 --- a/ssl-source.yaml +++ b/ssl-source.yaml @@ -14,6 +14,7 @@ Resources: SSLConfig: Type: OS::Heat::StructuredConfig Properties: + group: os-apply-config config: stunnel: cert: diff --git a/swift-source.yaml b/swift-source.yaml index 90a956bf..3ca2b1a8 100644 --- a/swift-source.yaml +++ b/swift-source.yaml @@ -2,6 +2,7 @@ Resources: SwiftConfig: Type: OS::Heat::StructuredConfig Properties: + group: os-apply-config config: swift: devices: { get_input: swift_devices } diff --git a/undercloud-bm-source.yaml b/undercloud-bm-source.yaml index ff00d28c..a1c0b98a 100644 --- a/undercloud-bm-source.yaml +++ b/undercloud-bm-source.yaml @@ -7,6 +7,10 @@ Parameters: Default: nova.virt.baremetal.ipmi.IPMI Description: Bare metal power manager driver. Type: String + PxeDeployTimeout: + Default: 2400 + Description: Timeout for PXE deployment of baremetal nodes + Type: Number Resources: undercloudConfig: Type: AWS::AutoScaling::LaunchConfiguration @@ -27,6 +31,7 @@ Resources: db: mysql://nova:unset@localhost/nova_bm power_manager: Ref: PowerManager - pxe_deploy_timeout: 2400 + pxe_deploy_timeout: + Ref: PxeDeployTimeout service-password: Ref: NovaPassword diff --git a/undercloud-source.yaml b/undercloud-source.yaml index c05d5f7d..3cddb262 100644 --- a/undercloud-source.yaml +++ b/undercloud-source.yaml @@ -11,10 +11,33 @@ Parameters: Description: The keystone auth secret. Type: String NoEcho: true + CinderLVMLoopDeviceSize: + Default: 5000 + Description: The size of the loopback file used by the cinder LVM driver. + Type: Number BaremetalArch: Default: i386 Description: The architecture to use in Nova-BM - i386 or amd64. Type: String + CeilometerMeteringSecret: + Default: unset + Description: Secret shared by the ceilometer services. + Type: String + NoEcho: true + CeilometerPassword: + Default: unset + Description: The password for the ceilometer service account. + Type: String + NoEcho: true + SnmpdReadonlyUserName: + Default: ro_snmp_user + Description: The user name for SNMPd with readonly rights running on all Overcloud nodes + Type: String + SnmpdReadonlyUserPassword: + Default: unset + Description: The user password for SNMPd with readonly rights running on all Overcloud nodes + Type: String + NoEcho: true Flavor: Default: baremetal Description: Flavor to request when deploying. @@ -81,9 +104,12 @@ Parameters: Default: '' NoEcho: true MysqlInnodbBufferPoolSize: - Description: Specifies the size of the buffer pool in megabytes. + Description: > + Specifies the size of the buffer pool in megabytes. Setting to + zero should be interpreted as "no value" and will defer to the + lower level default. Type: Number - Default: 100 + Default: 0 Resources: RabbitCookie: Type: OS::Heat::RandomString @@ -126,7 +152,7 @@ Resources: OpenStack::ImageBuilder::Elements: [ boot-stack, heat-cfntools, neutron-network-node ] admin-password: Ref: AdminPassword - admin-token: + admin-token: Ref: AdminToken controller-address: Fn::Select: @@ -136,9 +162,19 @@ Resources: - Fn::GetAtt: - undercloud - networks + ceilometer: + db: mysql://ceilometer:unset@localhost/ceilometer + metering_secret: {Ref: CeilometerMeteringSecret} + snmpd_readonly_user_name: + Ref: SnmpdReadonlyUserName + snmpd_readonly_user_password: + Ref: SnmpdReadonlyUserPassword + service-password: + Ref: CeilometerPassword cinder: db: mysql://cinder:unset@localhost/cinder - volume_size_mb: '5000' + volume_size_mb: + Ref: CinderLVMLoopDeviceSize completion-handle: Ref: controller0CompletionHandle db-password: unset diff --git a/undercloud-vm-source.yaml b/undercloud-vm-source.yaml index 48a6fffd..4e076fd3 100644 --- a/undercloud-vm-source.yaml +++ b/undercloud-vm-source.yaml @@ -7,6 +7,10 @@ Parameters: Default: nova.virt.baremetal.virtual_power_driver.VirtualPowerManager Description: Bare metal power manager driver. Type: String + PxeDeployTimeout: + Default: 2400 + Description: Timeout for PXE deployment of baremetal nodes + Type: Number PowerSSHHost: Default: 192.168.122.1 Description: SSH host to ssh to for power management operations. @@ -39,7 +43,8 @@ Resources: db: mysql://nova:unset@localhost/nova_bm power_manager: Ref: PowerManager - pxe_deploy_timeout: 2400 + pxe_deploy_timeout: + Ref: PxeDeployTimeout virtual_power: user: Ref: PowerUserName |