RETIRED, Heat templates for deploying OpenStack
Go to file
Damien Ciabrini 3230f005c1 HA: reorder init_bundle and restart_bundle for improved updates
A pacemaker bundle can be restarted either because:
  . a tripleo config has been updated (from /var/lib/config-data)
  . the bundle config has been updated (container image, bundle
    parameter,...)

In HA services, special container "*_restart_bundle" is in charge
of restarting the HA service on tripleo config change. Special
container "*_init_bundle" handles restart on bundle config change.

When both types of change occur at the same time, the bundle must
be restarted first, so that the container has a chance to be
recreated with all bind-mounts updated before it tries to reload
the updated config.

Implement the improvement with two changes:

1. Make the "*_restart_bundle" start after the "*_init_bundle", and
make sure "*_restart_bundle" is only enabled after the initial
deployment.

2. During minor update, make sure that the "*_restart_bundle" not
only restarts the container, but also waits until the service
is operational (e.g. galera fully promoted to Master). This forces
the rolling restart to happen sequentially, and avoid service
disruption in quorum-based clustered services like galera and
rabbitmq.

Tested the following update use cases:

* minor update: ensure that *_restart_bundle restarts all types of
  resources (OCF, bundles, A/P, A/P Master/Slave).

* minor update: ensure *_restart_bundle is not executed when no
  config or image update happened for a service.

* restart_bundle: when resource (OCF or container) fails to
  restart, bail out early instead of waiting for nothing until
  timeout is reached.

* restart_bundle: make sure a resource is restarted even when it
  is in failed stated when *_restart_bundle is called.

* restart_bundle: A/P can be restarted on any node, so watch
  restart globally. When the resource restarts as Slave, continue
  watching for a Master elsewhere in the cluster.

* restart_bundle: if an A/P is not running locally, make sure it
  doesn't get restarted anywhere else in the cluster.

* restart_bundle: do not try to restart stopped (disabled) or
  unmanaged resource. Bail out early instead, to not wait until
  timeout is reached.

* stack update: make sure that running a stack update with no
  change does not trigger any *_restart_bundle, and does not
  restart any HA container either.

* stack update: when bundle and config will change, ensure bundle
  is updated before HA containers are restarted (e.g. HAProxy
  migration to TLS everywhere)

Change-Id: Ic41d4597e9033f9d7847bb6c10c25f443fbd5b0e
Closes-Bug: #1839858
2020-01-23 16:09:36 +01:00
ci Merge "Enable external public endpoint for MetricsQdr" 2020-01-13 17:12:28 +00:00
common Fix generation of TRIPLEO_CONFIG_HASH for services 2020-01-20 19:47:07 +01:00
container_config_scripts HA: reorder init_bundle and restart_bundle for improved updates 2020-01-23 16:09:36 +01:00
deployed-server Remove previously deprecated deployed-server bootstrap files 2019-12-10 21:27:26 +00:00
deployment HA: reorder init_bundle and restart_bundle for improved updates 2020-01-23 16:09:36 +01:00
environments split() function expects string not array 2020-01-21 14:26:45 -05:00
extraconfig Merge "Remove upload_validations workflow execution" 2020-01-06 19:17:53 +00:00
firstboot Replace chronyc "waitsync" with "makestep" 2019-10-15 15:47:57 +01:00
network Change optparse to argparse 2020-01-21 04:17:09 +00:00
plan-samples Role specific derive parameters workflow parameter 2018-06-28 08:10:27 -04:00
puppet Remove PreNetworkConfig resource 2020-01-02 15:04:56 +05:30
releasenotes Raise Heat API WSGI timeout to 600s 2020-01-21 13:49:20 -05:00
roles roles: Update description of ComputeRealTime role 2020-01-21 13:55:38 +00:00
sample-env-generator Use ansible to install client packages 2020-01-16 08:16:01 -06:00
scripts Move instanceha into scripts 2019-07-18 19:13:08 +00:00
tools Hyper-converged SR-IOV role for compute nodes. 2020-01-06 14:10:05 -03:00
tripleo_heat_templates mysql: refactor upgrade tasks to work without paunch 2020-01-14 14:55:22 +01:00
validation-scripts Make comparisons case insensitive 2019-06-19 10:01:41 -06:00
zuul.d Make tripleo-ci-centos-7-containers-undercloud-minion depends on pep 2019-12-09 16:28:10 -05:00
.gitignore Remove mac_hostname & random_string 2019-07-18 19:10:31 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:34:55 +00:00
.testr.conf Improve nova statedir ownership logic 2018-07-09 17:07:30 +01:00
LICENSE Add license file 2014-01-20 11:58:20 +01:00
README.rst Remove EC2 api 2019-10-23 15:24:39 +02:00
all-nodes-validation.yaml Optional ICMP validation of controllers and gateways 2019-01-28 17:18:27 +00:00
babel.cfg Add release configuration. 2013-10-22 17:49:35 +01:00
bindep.txt Use https instead of http for docs links 2018-12-03 03:29:26 -08:00
capabilities-map.yaml Merge "Remove EC2 api" 2019-10-30 13:54:19 +00:00
config-download-software.yaml Change template names to rocky 2018-05-09 08:28:42 +02:00
config-download-structured.yaml Change template names to rocky 2018-05-09 08:28:42 +02:00
default_passwords.yaml Change template names to rocky 2018-05-09 08:28:42 +02:00
hosts-config.yaml [Templates] Use str_replace for hosts. 2018-11-12 16:33:27 +01:00
j2_excludes.yaml Remove ipv6 specific network templates 2017-08-31 13:12:17 -07:00
lower-constraints.txt Merge "tox: Keeping going with docs" 2019-11-07 20:02:09 +00:00
net-config-bond.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-bridge.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-linux-bridge.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-noop.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-standalone.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-static-bridge-with-external-dhcp.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-static-bridge.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-static.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
net-config-undercloud.j2.yaml Drop EC2MetadataIp parameter and its uses 2019-07-05 14:05:59 +02:00
network_data.yaml Add external_resource_vip_id property to network_data.yaml 2019-03-25 10:48:40 -04:00
network_data_dashboard.yaml Add a StorageDashboard network used by CephGrafana service 2019-08-30 19:16:47 +02:00
network_data_ganesha.yaml Merge "Allow overlay tunnel endpoints on IPv6 address" 2019-01-10 21:13:19 +00:00
network_data_routed.yaml Merge "Allow overlay tunnel endpoints on IPv6 address" 2019-01-10 21:13:19 +00:00
network_data_subnets_routed.yaml L3 routed networks - data + env (1/3) 2018-12-30 19:24:29 +01:00
network_data_undercloud.yaml Add network data for the undercloud 2019-01-21 19:35:37 +01:00
overcloud-resource-registry-puppet.j2.yaml Merge "Remove PreNetworkConfig resource" 2020-01-08 23:46:27 +00:00
overcloud.j2.yaml Manage all Keystone resources with Ansible 2020-01-06 22:33:05 +00:00
plan-environment.yaml Add name and description fields to plan-environment.yaml 2017-04-12 17:25:40 +02:00
requirements.txt Enable paunch logging to its full extent 2019-03-22 11:42:12 +01:00
roles_data.yaml Adding ReaR THT 2019-11-21 11:07:51 -03:00
roles_data_undercloud.yaml Revert "Optional enable undercloud nova-metadata-api" 2019-12-18 22:36:23 +00:00
setup.cfg Replace git.openstack.org URLs with opendev.org URLs 2019-06-26 02:43:46 +00:00
setup.py Updated from global requirements 2017-03-28 13:03:01 +00:00
test-ansible-requirements.txt Ansible lint check in THT 2019-10-30 04:56:05 -04:00
test-requirements.txt Merge "tox: Keeping going with docs" 2019-11-07 20:02:09 +00:00
tox.ini Stop configuring install_command in tox. 2019-11-14 13:04:50 +01:00

README.rst

Team and repository tags

image

tripleo-heat-templates

Heat templates to deploy OpenStack using OpenStack.

Features

The ability to deploy a multi-node, role based OpenStack deployment using OpenStack Heat. Notable features include:

  • Choice of deployment/configuration tooling: puppet, (soon) docker
  • Role based deployment: roles for the controller, compute, ceph, swift, and cinder storage
  • physical network configuration: support for isolated networks, bonding, and standard ctlplane networking

Directories

A description of the directory layout in TripleO Heat Templates.

  • environments: contains heat environment files that can be used with -e

    on the command like to enable features, etc.

  • extraconfig: templates used to enable 'extra' functionality. Includes

    functionality for distro specific registration and upgrades.

  • firstboot: example first_boot scripts that can be used when initially

    creating instances.

  • network: heat templates to help create isolated networks and ports
  • puppet: templates mostly driven by configuration with puppet. To use these

    templates you can use the overcloud-resource-registry-puppet.yaml.

  • validation-scripts: validation scripts useful to all deployment

    configurations

  • roles: example roles that can be used with the tripleoclient to generate

    a roles_data.yaml for a deployment See the roles/README.rst for additional details.

Service testing matrix

The configuration for the CI scenarios will be defined in tripleo-heat-templates/ci/ and should be executed according to the following table:

- scn000 scn001 scn002 scn003 scn004 scn006 scn007 scn009 scn010 non-ha ovh-ha
keystone

X

X

X

X

X

X

X

X

X

X

glance

rbd

swift

file

rgw

file

file

rbd

file

file

cinder

rbd

iscsi
heat

X

X

ironic

X

mysql

X

X

X

X

X

X

X

X

X

X

neutron

ovn

ovn

ovn

ovn

ovn

ovs

ovn

ovn

ovn

neutron-bgpvpn

wip

ovn

X

neutron-l2gw

wip

om-rpc rabbit rabbit

amqp1

rabbit rabbit rabbit rabbit rabbit rabbit
om-notify rabbit rabbit rabbit rabbit rabbit rabbit rabbit rabbit rabbit
redis

X

X

haproxy

X

X

X

X

X

X

X

X

X

memcached

X

X

X

X

X

X

X

X

X

pacemaker

X

X

X

X

X

X

X

X

X

nova

qemu

qemu

qemu

qemu

ironic

qemu

qemu

qemu

qemu

ntp

X

X

X

X

X

X

X

X

X

X

X

snmp

X

X

X

X

X

X

X

X

X

X

X

timezone

X

X

X

X

X

X

X

X

X

X

X

sahara

X

mistral

X

swift

X

aodh

X

X

ceilometer

X

X

gnocchi

rbd

swift

barbican

X

zaqar

X

cephrgw

X

tacker

X

cephmds

X

manila

X

collectd

X

designate

X

octavia

X