aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--environments/storage-environment.yaml2
-rw-r--r--overcloud-without-mergepy.yaml14
-rw-r--r--puppet/controller.yaml36
-rw-r--r--puppet/hieradata/common.yaml2
-rw-r--r--puppet/hieradata/compute.yaml4
-rw-r--r--puppet/hieradata/controller.yaml7
-rw-r--r--puppet/manifests/overcloud_controller.pp2
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp16
-rw-r--r--validation-scripts/all-nodes.sh22
9 files changed, 84 insertions, 21 deletions
diff --git a/environments/storage-environment.yaml b/environments/storage-environment.yaml
index 535ec6fe..5ccfa58e 100644
--- a/environments/storage-environment.yaml
+++ b/environments/storage-environment.yaml
@@ -1,7 +1,7 @@
## A Heat environment file which can be used to set up storage
## backends. Defaults to Ceph used as a backend for Cinder, Glance and
## Nova ephemeral storage.
-parameters:
+parameter_defaults:
#### BACKEND SELECTION ####
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 8a7ce025..9c915c4a 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -1,8 +1,10 @@
heat_template_version: 2015-04-30
description: >
- Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
- server,Dedicated RabbitMQ Server,Group of Nova Computes
+ Deploy an OpenStack environment, consisting of several node types (roles),
+ Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
+ roles enable independent scaling of the storage components, but the minimal
+ deployment is one Controller and one Compute node.
# TODO(shadower): we should probably use the parameter groups to put
@@ -118,9 +120,9 @@ parameters:
type: string
default: "datacentre:br-ex"
NeutronControlPlaneID:
- default: ''
+ default: 'ctlplane'
type: string
- description: Neutron ID for ctlplane network.
+ description: Neutron ID or name for ctlplane network.
NeutronEnableTunnelling:
type: string
default: "True"
@@ -314,6 +316,8 @@ parameters:
ControllerCount:
type: number
default: 1
+ constraints:
+ - range: {min: 1}
controllerExtraConfig:
default: {}
description: |
@@ -1103,7 +1107,7 @@ resources:
depends_on: Networks
properties:
name: control_virtual_ip
- network_id: {get_param: NeutronControlPlaneID}
+ network: {get_param: NeutronControlPlaneID}
fixed_ips: {get_param: ControlFixedIPs}
replacement_policy: AUTO
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index 0bb8035b..98c7ba00 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -180,6 +180,30 @@ parameters:
type: string
constraints:
- allowed_values: ['swift', 'file', 'rbd']
+ GlanceFilePcmkDevice:
+ default: ''
+ description: >
+ An exported storage device that should be mounted by Pacemaker
+ as Glance storage. Effective when GlanceFilePcmkManage is true.
+ type: string
+ GlanceFilePcmkFstype:
+ default: 'nfs'
+ description: >
+ Filesystem type for Pacemaker mount used as Glance storage.
+ Effective when GlanceFilePcmkManage is true.
+ type: string
+ GlanceFilePcmkManage:
+ default: false
+ description: >
+ Whether to make Glance file backend a mount managed by Pacemaker.
+ Effective when GlanceBackend is 'file'.
+ type: boolean
+ GlanceFilePcmkOptions:
+ default: ''
+ description: >
+ Mount options for Pacemaker mount used as Glance storage.
+ Effective when GlanceFilePcmkManage is true.
+ type: string
HAProxySyslogAddress:
default: /dev/log
description: Syslog address where HAproxy will send its log
@@ -728,6 +752,10 @@ resources:
glance_port: {get_param: GlancePort}
glance_password: {get_param: GlancePassword}
glance_backend: {get_param: GlanceBackend}
+ glance_file_pcmk_device: {get_param: GlanceFilePcmkDevice}
+ glance_file_pcmk_fstype: {get_param: GlanceFilePcmkFstype}
+ glance_file_pcmk_manage: {get_param: GlanceFilePcmkManage}
+ glance_file_pcmk_options: {get_param: GlanceFilePcmkOptions}
glance_notifier_strategy: {get_param: GlanceNotifierStrategy}
glance_log_file: {get_param: GlanceLogFile}
glance_dsn:
@@ -885,7 +913,9 @@ resources:
ceilometer_dsn:
list_join:
- ''
- - - 'mysql://ceilometer:unset@'
+ - - 'mysql://ceilometer:'
+ - {get_param: CeilometerPassword}
+ - '@'
- {get_param: MysqlVirtualIP}
- '/ceilometer'
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
@@ -1081,6 +1111,10 @@ resources:
glance::backend::swift::swift_store_key: {get_input: glance_password}
glance_backend: {get_input: glance_backend}
glance::db::mysql::password: {get_input: glance_password}
+ glance_file_pcmk_device: {get_input: glance_file_pcmk_device}
+ glance_file_pcmk_fstype: {get_input: glance_file_pcmk_fstype}
+ glance_file_pcmk_manage: {get_input: glance_file_pcmk_manage}
+ glance_file_pcmk_options: {get_input: glance_file_pcmk_options}
# Heat
heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml
index 4a872d57..030f661d 100644
--- a/puppet/hieradata/common.yaml
+++ b/puppet/hieradata/common.yaml
@@ -29,3 +29,5 @@ cinder::rabbit_heartbeat_timeout_threshold: 60
ceilometer::rabbit_heartbeat_timeout_threshold: 60
heat::rabbit_heartbeat_timeout_threshold: 60
keystone::rabbit_heartbeat_timeout_threshold: 60
+
+nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
diff --git a/puppet/hieradata/compute.yaml b/puppet/hieradata/compute.yaml
index d7c1f879..4a94c237 100644
--- a/puppet/hieradata/compute.yaml
+++ b/puppet/hieradata/compute.yaml
@@ -15,10 +15,6 @@ nova::compute::rbd::rbd_keyring: 'client.openstack'
nova::compute::rbd::libvirt_images_rbd_pool: 'vms'
nova::compute::rbd::libvirt_rbd_secret_uuid: "%{hiera('ceph::profile::params::fsid')}"
-nova::config::nova_config:
- cinder/catalog_info:
- value: 'volumev2:cinderv2:internalURL'
-
ceilometer::agent::auth::auth_tenant_name: 'service'
compute_classes: []
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index b659ed78..bc135260 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -64,6 +64,7 @@ glance::api::pipeline: 'keystone'
glance::registry::pipeline: 'keystone'
glance::backend::swift::swift_store_create_container_on_put: true
glance::backend::rbd::rbd_store_user: 'openstack'
+glance_file_pcmk_directory: '/var/lib/glance/images'
# neutron
neutron::server::sync_db: true
@@ -75,6 +76,9 @@ nova::api::default_floating_pool: 'public'
nova::api::osapi_v3: true
nova::scheduler::filter::ram_allocation_ratio: '1.0'
+# ceilometer
+ceilometer::agent::auth::auth_endpoint_type: 'internalURL'
+
# cinder
cinder::scheduler::scheduler_driver: cinder.scheduler.filter_scheduler.FilterScheduler
@@ -92,6 +96,9 @@ pacemaker::resource_defaults::defaults:
# horizon
horizon::cache_backend: django.core.cache.backends.memcached.MemcachedCache
horizon::django_session_engine: 'django.contrib.sessions.backends.cache'
+horizon::vhost_extra_params:
+ add_listen: false
+ priority: 10
# mysql
mysql::server::manage_config_file: true
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index c3302362..777af228 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -461,10 +461,8 @@ if hiera('step') >= 3 {
$_profile_support = 'None'
}
$neutron_options = {'profile_support' => $_profile_support }
- $vhost_params = { add_listen => false }
class { 'horizon':
cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
- vhost_extra_params => $vhost_params,
neutron_options => $neutron_options,
}
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 6da577b2..38ee9c39 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -525,6 +525,16 @@ if hiera('step') >= 3 {
$http_store = ['glance.store.http.Store']
$glance_store = concat($http_store, $backend_store)
+ if $glance_backend == 'file' and hiera('glance_file_pcmk_manage', false) {
+ pacemaker::resource::filesystem { "glance-fs":
+ device => hiera('glance_file_pcmk_device'),
+ directory => hiera('glance_file_pcmk_directory'),
+ fstype => hiera('glance_file_pcmk_fstype'),
+ fsoptions => hiera('glance_file_pcmk_options', ''),
+ clone_params => '',
+ }
+ }
+
# TODO: notifications, scrubber, etc.
include ::glance
class { 'glance::api':
@@ -883,14 +893,8 @@ if hiera('step') >= 3 {
$_profile_support = 'None'
}
$neutron_options = {'profile_support' => $_profile_support }
- $vhost_params = {
- add_listen => false,
- priority => 10,
- }
class { 'horizon':
cache_server_ip => hiera('memcache_node_ips', '127.0.0.1'),
- vhost_extra_params => $vhost_params,
- server_aliases => $::hostname,
neutron_options => $neutron_options,
}
diff --git a/validation-scripts/all-nodes.sh b/validation-scripts/all-nodes.sh
index 38a5a55e..8057f201 100644
--- a/validation-scripts/all-nodes.sh
+++ b/validation-scripts/all-nodes.sh
@@ -2,7 +2,7 @@
# For each unique remote IP (specified via Heat) we check to
# see if one of the locally configured networks matches and if so we
-# attempt a ping test on that networks remote IP.
+# attempt a ping test the remote network IP.
function ping_controller_ips() {
local REMOTE_IPS=$1
@@ -15,7 +15,7 @@ function ping_controller_ips() {
if [ $REMOTE_NETWORK/$LOCAL_CIDR == $LOCAL_NETWORK ]; then
echo -n "Trying to ping $REMOTE_IP for local network $LOCAL_NETWORK..."
- if ! ping -c 1 $REMOTE_IP &> /dev/null; then
+ if ! ping -W 300 -c 1 $REMOTE_IP &> /dev/null; then
echo "FAILURE"
echo "$REMOTE_IP is not pingable. Local Network: $LOCAL_NETWORK" >&2
exit 1
@@ -26,4 +26,22 @@ function ping_controller_ips() {
done
}
+# Ping all default gateways. There should only be one
+# if using upstream t-h-t network templates but we test
+# all of them should some manual network config have
+# multiple gateways.
+function ping_default_gateways() {
+ DEFAULT_GW=$(ip r | grep ^default | cut -d " " -f 3)
+ for GW in $DEFAULT_GW; do
+ echo -n "Trying to ping default gateway ${GW}..."
+ if ! ping -c 1 $GW &> /dev/null; then
+ echo "FAILURE"
+ echo "$GW is not pingable."
+ exit 1
+ fi
+ done
+ echo "SUCCESS"
+}
+
ping_controller_ips "$ping_test_ips"
+ping_default_gateways