openstack-ansible-os_keystone/tasks/keystone_uwsgi.yml
Jimmy McCrory 04737f5dbd Implement zero downtime upgrades
This patch implements upgrading keystone with zero downtime as the
default installation process. Handlers have been modified to ensure that
the first keystone node is stopped, facilitates the database migrations,
and that it is started and available before restarting any other keystone
nodes. Migrations also now only occur when there is a change within the
installed keystone venv.

This process is documented at
http://docs.openstack.org/developer/keystone/upgrading.html#upgrading-without-downtime

A new test scenario has been added for testing basic upgradability
between releases.

Implements: blueprint upgrade-testing
Change-Id: I0d3cfcb80b64d005d60f4c8445f991855f844796
2016-11-17 08:10:57 -08:00

65 lines
2.1 KiB
YAML

# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Uwsgi Configuration
- name: Ensure uWSGI directory exists
file:
path: "/etc/uwsgi/"
state: directory
mode: "0711"
- name: Apply uWSGI configuration
config_template:
src: "keystone-uwsgi.ini.j2"
dest: "/etc/uwsgi/{{ item }}.ini"
mode: "0744"
config_overrides: "{{ keystone_uwsgi_ini_overrides }}"
config_type: ini
with_items: "{{ keystone_wsgi_program_names }}"
notify:
- Restart Keystone APIs on first node
- Restart Keystone APIs on other nodes
- include: keystone_init_common.yml
vars:
program_name: "{{ keystone_wsgi_public_program_name }}"
service_name: "{{ keystone_wsgi_public_program_name }}"
system_user: "{{ keystone_system_user_name }}"
system_group: "{{ keystone_system_group_name }}"
service_home: "{{ keystone_system_user_home }}"
notify:
- Restart Keystone APIs on first node
- Restart Keystone APIs on other nodes
- include: keystone_init_common.yml
vars:
program_name: "{{ keystone_wsgi_admin_program_name }}"
service_name: "{{ keystone_wsgi_admin_program_name }}"
system_user: "{{ keystone_system_user_name }}"
system_group: "{{ keystone_system_group_name }}"
service_home: "{{ keystone_system_user_home }}"
notify:
- Restart Keystone APIs on first node
- Restart Keystone APIs on other nodes
- name: Ensure uwsgi service started
service:
name: "{{ item }}"
state: started
register: keystone_start
until: keystone_start | success
retries: 5
delay: 2
with_items: "{{ keystone_wsgi_program_names }}"