
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
161 lines
4.0 KiB
YAML
161 lines
4.0 KiB
YAML
---
|
|
# Copyright 2014, 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.
|
|
|
|
- name: Fail if our required secrets are not present
|
|
fail:
|
|
msg: "Please set the {{ item }} variable prior to applying this role."
|
|
when: (item is undefined) or (item is none)
|
|
with_items: "{{ keystone_required_secrets }}"
|
|
tags:
|
|
- always
|
|
|
|
- name: Fail if incompatible configuration detected
|
|
fail:
|
|
msg: "keystone_apache_enabled must be True when keystone_mod_wsgi_enabled."
|
|
when:
|
|
- not keystone_apache_enabled | bool
|
|
- keystone_mod_wsgi_enabled | bool
|
|
tags:
|
|
- always
|
|
|
|
- name: Gather variables for each operating system
|
|
include_vars: "{{ item }}"
|
|
with_first_found:
|
|
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
|
|
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
|
- "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
|
- "{{ ansible_distribution | lower }}.yml"
|
|
- "{{ ansible_os_family | lower }}-{{ ansible_distribution_version.split('.')[0] }}.yml"
|
|
- "{{ ansible_os_family | lower }}.yml"
|
|
tags:
|
|
- always
|
|
|
|
- include: keystone_pre_install.yml
|
|
tags:
|
|
- keystone-install
|
|
|
|
- include: keystone_install.yml
|
|
tags:
|
|
- keystone-install
|
|
|
|
- include: keystone_post_install.yml
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_key_setup.yml
|
|
tags:
|
|
- keystone-install
|
|
|
|
- include: keystone_fernet.yml
|
|
static: no
|
|
when:
|
|
- "'fernet' in keystone_token_provider"
|
|
- keystone_service_setup | bool
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_credential.yml
|
|
static: no
|
|
when: keystone_service_setup | bool
|
|
tags:
|
|
- keystone-install
|
|
|
|
- include: keystone_federation_sp_setup.yml
|
|
static: no
|
|
when: keystone_sp != {}
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_db_setup.yml
|
|
when:
|
|
- keystone_database_enabled | bool
|
|
- inventory_hostname == groups['keystone_all'][0]
|
|
- keystone_get_venv | changed or keystone_venv_dir | changed or install_packages | changed
|
|
tags:
|
|
- keystone-install
|
|
|
|
- include: keystone_token_cleanup.yml
|
|
static: no
|
|
when:
|
|
- "'sql' in keystone_token_driver"
|
|
tags:
|
|
- keystone-install
|
|
|
|
- include: keystone_ssl.yml
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_apache.yml
|
|
static: no
|
|
when: keystone_apache_enabled | bool
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_nginx.yml
|
|
static: no
|
|
when: not keystone_apache_enabled | bool
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_uwsgi.yml
|
|
static: no
|
|
when: not keystone_mod_wsgi_enabled | bool
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- name: Flush handlers
|
|
meta: flush_handlers
|
|
|
|
- include: keystone_service_setup.yml
|
|
when:
|
|
- keystone_service_setup | bool
|
|
- inventory_hostname == groups['keystone_all'][0]
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_ldap_setup.yml
|
|
static: no
|
|
when: keystone_service_setup | bool
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- include: keystone_federation_sp_idp_setup.yml
|
|
when:
|
|
- keystone_service_setup | bool
|
|
- keystone_sp != {}
|
|
- inventory_hostname == groups['keystone_all'][0]
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|
|
|
|
- name: Flush handlers
|
|
meta: flush_handlers
|
|
|
|
- include: keystone_idp_setup.yml
|
|
static: no
|
|
when: keystone_idp != {}
|
|
tags:
|
|
- keystone-install
|
|
- keystone-config
|