summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block-storage.yaml7
-rw-r--r--nova-compute-config.yaml13
-rw-r--r--nova-compute-instance.yaml62
-rw-r--r--overcloud-source.yaml219
-rw-r--r--ssl-source.yaml1
-rw-r--r--swift-source.yaml1
-rw-r--r--undercloud-bm-source.yaml7
-rw-r--r--undercloud-source.yaml44
-rw-r--r--undercloud-vm-source.yaml7
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