Implement serialisable rolling upgrade

The current rolling upgrade implementation
relies on the role to orchestrate the rolling
upgrade. When the role is executed using
playbook serialisation, the db sync contract
is executed before all hosts are upgraded,
potentially resulting in data corruption.

This patch returns the role to the simpler,
best practice model of expecting that the role
is applied to a single host and that the
playbook handles orchestration. This method
can be used with any form of serialisation.

Depends-On: Ie90cdcbf9e73082a2074c8832b7490d188e178af
Change-Id: I5650f16b9a115bd392012b743788057a94d09226
This commit is contained in:
Jesse Pretorius 2017-06-17 08:36:47 +01:00 committed by Jesse Pretorius (odyssey4me)
parent ed136ef79c
commit aad8144bfb
18 changed files with 125 additions and 214 deletions

View File

@ -13,26 +13,6 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
- name: Restart web server on first node
command: "/bin/true"
notify:
- Restart web server
- Wait for web server to complete starting
when:
- inventory_hostname == groups['keystone_all'][0]
tags:
- keystone-config
- name: Restart web server on other nodes
command: "/bin/true"
notify:
- Restart web server
- Wait for web server to complete starting
when:
- inventory_hostname != groups['keystone_all'][0]
tags:
- keystone-config
- name: Restart web server - name: Restart web server
service: service:
name: "{{ (keystone_apache_enabled | bool) | ternary(keystone_system_service_name, 'nginx') }}" name: "{{ (keystone_apache_enabled | bool) | ternary(keystone_system_service_name, 'nginx') }}"
@ -43,8 +23,6 @@
until: _restart | success until: _restart | success
retries: 5 retries: 5
delay: 2 delay: 2
tags:
- keystone-config
- name: Wait for web server to complete starting - name: Wait for web server to complete starting
wait_for: wait_for:
@ -57,32 +35,7 @@
register: _wait_check register: _wait_check
until: _wait_check | success until: _wait_check | success
retries: 5 retries: 5
tags: listen: "Restart web server"
- keystone-config
- name: Restart uWSGI on first node
command: "/bin/true"
when:
- inventory_hostname == groups['keystone_all'][0]
notify:
- Stop uWSGI
- Copy new policy file into place
- Start uWSGI
- Wait for uWSGI socket to be ready
tags:
- keystone-config
- name: Restart uWSGI on other nodes
command: "/bin/true"
when:
- inventory_hostname != groups['keystone_all'][0]
notify:
- Stop uWSGI
- Copy new policy file into place
- Start uWSGI
- Wait for uWSGI socket to be ready
tags:
- keystone-config
- name: Stop uWSGI - name: Stop uWSGI
service: service:
@ -96,8 +49,7 @@
with_items: "{{ keystone_wsgi_program_names }}" with_items: "{{ keystone_wsgi_program_names }}"
when: when:
- not keystone_mod_wsgi_enabled | bool - not keystone_mod_wsgi_enabled | bool
tags: listen: "Restart uWSGI"
- keystone-config
# Note (odyssey4me): # Note (odyssey4me):
# The policy.json file is currently read continually by the services # The policy.json file is currently read continually by the services
@ -115,8 +67,7 @@
group: "{{ keystone_system_group_name }}" group: "{{ keystone_system_group_name }}"
mode: "0640" mode: "0640"
remote_src: yes remote_src: yes
tags: listen: "Restart uWSGI"
- keystone-config
- name: Start uWSGI - name: Start uWSGI
service: service:
@ -131,8 +82,7 @@
with_items: "{{ keystone_wsgi_program_names }}" with_items: "{{ keystone_wsgi_program_names }}"
when: when:
- not keystone_mod_wsgi_enabled | bool - not keystone_mod_wsgi_enabled | bool
tags: listen: "Restart uWSGI"
- keystone-config
- name: Wait for uWSGI socket to be ready - name: Wait for uWSGI socket to be ready
wait_for: wait_for:
@ -147,8 +97,7 @@
register: _wait_check register: _wait_check
until: _wait_check | success until: _wait_check | success
retries: 5 retries: 5
tags: listen: "Restart uWSGI"
- keystone-config
- name: Restart Shibd - name: Restart Shibd
service: service:
@ -160,13 +109,3 @@
until: _restart | success until: _restart | success
retries: 5 retries: 5
delay: 2 delay: 2
tags:
- keystone-config
- name: Perform a Keystone DB sync contract
command: "{{ keystone_bin }}/keystone-manage db_sync --contract"
become: yes
become_user: "{{ keystone_system_user_name }}"
tags:
- keystone-config

View File

@ -53,8 +53,7 @@
when: when:
- ansible_pkg_mgr == 'apt' - ansible_pkg_mgr == 'apt'
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
## NOTE(andymccr): ## NOTE(andymccr):
## We need to enable a module for httpd on RedHat/CentOS using LoadModule inside conf files ## We need to enable a module for httpd on RedHat/CentOS using LoadModule inside conf files
@ -66,8 +65,7 @@
when: when:
- ansible_pkg_mgr == 'yum' - ansible_pkg_mgr == 'yum'
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Drop apache2 config files - name: Drop apache2 config files
template: template:
@ -77,8 +75,7 @@
group: "root" group: "root"
with_items: "{{ keystone_apache_configs }}" with_items: "{{ keystone_apache_configs }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Disable default apache site - name: Disable default apache site
file: file:
@ -86,8 +83,7 @@
state: "absent" state: "absent"
with_items: "{{ keystone_apache_default_sites }}" with_items: "{{ keystone_apache_default_sites }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Enabled keystone vhost - name: Enabled keystone vhost
file: file:
@ -98,16 +94,14 @@
- keystone_apache_site_available is defined - keystone_apache_site_available is defined
- keystone_apache_site_enabled is defined - keystone_apache_site_enabled is defined
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Ensure Apache ServerName - name: Ensure Apache ServerName
lineinfile: lineinfile:
dest: "{{ keystone_apache_conf }}" dest: "{{ keystone_apache_conf }}"
line: "ServerName {{ ansible_hostname }}" line: "ServerName {{ ansible_hostname }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Ensure Apache ServerTokens - name: Ensure Apache ServerTokens
lineinfile: lineinfile:
@ -115,8 +109,7 @@
regexp: '^ServerTokens' regexp: '^ServerTokens'
line: "ServerTokens {{ keystone_apache_servertokens }}" line: "ServerTokens {{ keystone_apache_servertokens }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Ensure Apache ServerSignature - name: Ensure Apache ServerSignature
lineinfile: lineinfile:
@ -124,8 +117,7 @@
regexp: '^ServerSignature' regexp: '^ServerSignature'
line: "ServerSignature {{ keystone_apache_serversignature }}" line: "ServerSignature {{ keystone_apache_serversignature }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Remove Listen from Apache config - name: Remove Listen from Apache config
lineinfile: lineinfile:
@ -134,5 +126,4 @@
backrefs: yes backrefs: yes
line: '#\1' line: '#\1'
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes

View File

@ -16,18 +16,18 @@
# TODO(odyssey4me): # TODO(odyssey4me):
# This file and the task calling it may be removed in Queens. # This file and the task calling it may be removed in Queens.
- name: Convert the old fact format to the new fact format
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: keystone
option: need_db_sync
value: "{{ ansible_local['keystone']['general']['need_db_sync'] | bool }}"
- name: Remove the old fact file - name: Remove the old fact file
file: file:
path: "/etc/ansible/facts.d/keystone.fact" path: "/etc/ansible/facts.d/keystone.fact"
state: absent state: absent
- name: Remove the old db_sync fact
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: keystone
option: "need_db_sync"
state: absent
- name: refresh local facts - name: refresh local facts
setup: setup:
filter: ansible_local filter: ansible_local

View File

@ -13,43 +13,68 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
- name: Ensure keystone service stopped on first node
service:
name: "{{ item }}"
state: stopped
register: keystone_stop
failed_when:
- keystone_stop.msg is defined
- "'no service or tool' not in keystone_stop.msg"
- "'systemd could not find' not in keystone_stop.msg"
- "'Could not find the requested service' not in keystone_stop.msg"
with_items:
- "{{ keystone_wsgi_program_names }}"
- "{{ keystone_system_service_name }}"
- name: Check current state of Keystone DB - name: Check current state of Keystone DB
command: "{{ keystone_bin }}/keystone-manage db_sync --check" command: "{{ keystone_bin }}/keystone-manage db_sync --check"
register: keystone_db_sync_check register: keystone_db_sync_check
failed_when: "keystone_db_sync_check.rc == 1" failed_when: "keystone_db_sync_check.rc == 1"
changed_when: "keystone_db_sync_check.rc not in [2, 3, 4]" changed_when: "keystone_db_sync_check.rc not in [2, 3, 4]"
- name: Set the db sync local facts
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: keystone
option: "{{ item.name }}"
value: "{{ item.state }}"
with_items:
- name: "need_db_expand"
state: "{{ (keystone_db_sync_check.rc | int == 2) | bool }}"
- name: "need_db_migrate"
state: "{{ (keystone_db_sync_check.rc | int in [2, 3] ) | bool }}"
- name: "need_db_contract"
state: "{{ (keystone_db_sync_check.rc | int in [2, 3, 4]) | bool }}"
- name: Refresh local facts
setup:
filter: ansible_local
gather_subset: "!all"
tags:
- keystone-config
- name: Ensure keystone service is stopped
service:
name: "{{ item }}"
state: stopped
register: keystone_stop
failed_when:
- "keystone_stop.msg is defined"
- "'no service or tool' not in keystone_stop.msg"
- "'systemd could not find' not in keystone_stop.msg"
- "'Could not find the requested service' not in keystone_stop.msg"
with_items:
- "{{ keystone_wsgi_program_names }}"
- "{{ keystone_system_service_name }}"
when:
- "(ansible_local['openstack_ansible']['keystone']['need_db_expand'] | bool) or
(ansible_local['openstack_ansible']['keystone']['need_db_migrate'] | bool)"
- name: Perform a Keystone DB sync expand - name: Perform a Keystone DB sync expand
command: "{{ keystone_bin }}/keystone-manage db_sync --expand" command: "{{ keystone_bin }}/keystone-manage db_sync --expand"
become: yes become: yes
become_user: "{{ keystone_system_user_name }}" become_user: "{{ keystone_system_user_name }}"
when: "keystone_db_sync_check.rc == 2" when:
- "ansible_local['openstack_ansible']['keystone']['need_db_expand'] | bool"
- name: Perform a Keystone DB sync migrate - name: Perform a Keystone DB sync migrate
command: "{{ keystone_bin }}/keystone-manage db_sync --migrate" command: "{{ keystone_bin }}/keystone-manage db_sync --migrate"
become: yes become: yes
become_user: "{{ keystone_system_user_name }}" become_user: "{{ keystone_system_user_name }}"
when: "keystone_db_sync_check.rc in [2, 3]" when:
notify: - "ansible_local['openstack_ansible']['keystone']['need_db_migrate'] | bool"
- Perform a Keystone DB sync contract
- name: Check if Keystone DB sync contract is required - name: Perform a Keystone DB sync contract
command: "true" command: "{{ keystone_bin }}/keystone-manage db_sync --contract"
changed_when: "keystone_db_sync_check.rc == 4" become: yes
register: dbsync become_user: "{{ keystone_system_user_name }}"
notify: when:
- Perform a Keystone DB sync contract - "(keystone_all_software_updated | default('no')) | bool"
- "ansible_local['openstack_ansible']['keystone']['need_db_contract'] | bool"

View File

@ -33,8 +33,7 @@
changed_when: false changed_when: false
when: inventory_hostname == groups['keystone_all'][0] when: inventory_hostname == groups['keystone_all'][0]
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- Restart Shibd - Restart Shibd
- name: Store sp cert - name: Store sp cert
@ -66,8 +65,7 @@
mode: "0640" mode: "0640"
when: inventory_hostname != groups['keystone_all'][0] when: inventory_hostname != groups['keystone_all'][0]
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- Restart Shibd - Restart Shibd
- name: Distribute sp cert - name: Distribute sp cert
@ -79,8 +77,7 @@
mode: "0640" mode: "0640"
when: inventory_hostname != groups['keystone_all'][0] when: inventory_hostname != groups['keystone_all'][0]
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- Restart Shibd - Restart Shibd
- name: Set appropriate file ownership on the Shibboleth SP key-pair - name: Set appropriate file ownership on the Shibboleth SP key-pair
@ -93,6 +90,5 @@
- "/etc/shibboleth/sp-key.pem" - "/etc/shibboleth/sp-key.pem"
when: inventory_hostname != groups['keystone_all'][0] when: inventory_hostname != groups['keystone_all'][0]
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- Restart Shibd - Restart Shibd

View File

@ -20,7 +20,4 @@
become_user: "{{ keystone_system_user_name }}" become_user: "{{ keystone_system_user_name }}"
when: keystone_idp != {} when: keystone_idp != {}
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes
- Restart web server on first node
- Restart web server on other nodes

View File

@ -33,8 +33,7 @@
when: > when: >
inventory_hostname == groups['keystone_all'][0] inventory_hostname == groups['keystone_all'][0]
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Set appropriate file ownership on the IdP self-signed cert - name: Set appropriate file ownership on the IdP self-signed cert
file: file:

View File

@ -30,8 +30,7 @@
retries: 5 retries: 5
delay: 2 delay: 2
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Set appropriate file ownership on the IdP self-signed cert - name: Set appropriate file ownership on the IdP self-signed cert
file: file:

View File

@ -32,10 +32,8 @@
owner: "root" owner: "root"
group: "root" group: "root"
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes
- name: Place the systemd init script - name: Place the systemd init script
config_template: config_template:
@ -47,7 +45,5 @@
config_overrides: "{{ keystone_uwsgi_init_overrides }}" config_overrides: "{{ keystone_uwsgi_init_overrides }}"
config_type: "ini" config_type: "ini"
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes

View File

@ -60,8 +60,7 @@
retries: 5 retries: 5
delay: 2 delay: 2
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Create developer mode constraint file - name: Create developer mode constraint file
copy: copy:
@ -120,10 +119,8 @@
copy: "no" copy: "no"
when: keystone_get_venv | changed when: keystone_get_venv | changed
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes
- name: Install pip packages - name: Install pip packages
pip: pip:
@ -141,10 +138,8 @@
delay: 2 delay: 2
when: keystone_get_venv | failed or keystone_get_venv | skipped when: keystone_get_venv | failed or keystone_get_venv | skipped
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes
- name: CentOS remove python from path first - name: CentOS remove python from path first
file: file:
@ -171,15 +166,21 @@
- src: "{{ keystone_bin }}/keystone-wsgi-public" - src: "{{ keystone_bin }}/keystone-wsgi-public"
dest: main dest: main
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Record the need for a db sync - name: Initialise the db sync local facts
ini_file: ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact" dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: keystone section: keystone
option: need_db_sync option: "{{ item.name }}"
value: True value: "{{ item.state }}"
with_items:
- name: "need_db_expand"
state: "True"
- name: "need_db_migrate"
state: "True"
- name: "need_db_contract"
state: "True"
when: keystone_get_venv | changed or when: keystone_get_venv | changed or
keystone_venv_dir | changed or keystone_venv_dir | changed or
install_packages | changed install_packages | changed

View File

@ -35,10 +35,8 @@
mode: "0640" mode: "0640"
with_dict: "{{ keystone_ldap }}" with_dict: "{{ keystone_ldap }}"
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes
# Bug 1547542 - Older versions of the keystone role would deploy a blank # Bug 1547542 - Older versions of the keystone role would deploy a blank
# keystone.Default.conf and this will cause errors when adding LDAP-backed # keystone.Default.conf and this will cause errors when adding LDAP-backed
@ -49,7 +47,5 @@
state: absent state: absent
when: keystone_ldap.Default is not defined when: keystone_ldap.Default is not defined
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes

View File

@ -24,8 +24,7 @@
path: /etc/nginx/sites-enabled/default path: /etc/nginx/sites-enabled/default
state: absent state: absent
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Configure custom nginx log format - name: Configure custom nginx log format
lineinfile: lineinfile:
@ -33,8 +32,7 @@
dest: "/etc/nginx/nginx.conf" dest: "/etc/nginx/nginx.conf"
line: "log_format custom '{{ keystone_nginx_access_log_format_combined }} {{ keystone_nginx_access_log_format_extras }}';" line: "log_format custom '{{ keystone_nginx_access_log_format_combined }} {{ keystone_nginx_access_log_format_extras }}';"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
# Configure app # Configure app
- name: Configure virtual hosts - name: Configure virtual hosts
@ -43,8 +41,7 @@
dest: "/etc/nginx/{{ keystone_nginx_conf_path }}/{{ item }}.conf" dest: "/etc/nginx/{{ keystone_nginx_conf_path }}/{{ item }}.conf"
with_items: "{{ keystone_wsgi_program_names }}" with_items: "{{ keystone_wsgi_program_names }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Link to enable virtual hosts - name: Link to enable virtual hosts
file: file:
@ -54,5 +51,4 @@
with_items: "{{ keystone_wsgi_program_names }}" with_items: "{{ keystone_wsgi_program_names }}"
when: ansible_os_family == "Debian" when: ansible_os_family == "Debian"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes

View File

@ -46,10 +46,8 @@
config_type: "json" config_type: "json"
content: "{{ keystone_policy_user_content | default('{}', true) }}" content: "{{ keystone_policy_user_content | default('{}', true) }}"
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes
- name: Copy Keystone Federation SP SSO callback template - name: Copy Keystone Federation SP SSO callback template
copy: copy:
@ -61,10 +59,8 @@
when: when:
- keystone_idp != {} - keystone_idp != {}
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes
- name: Clean up Keystone Federation SP SSO callback template - name: Clean up Keystone Federation SP SSO callback template
file: file:
@ -73,7 +69,5 @@
when: when:
- keystone_idp == {} - keystone_idp == {}
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes - Restart web server
- Restart web server on first node
- Restart web server on other nodes

View File

@ -29,8 +29,7 @@
-extensions v3_ca -extensions v3_ca
creates={{ keystone_ssl_cert }} creates={{ keystone_ssl_cert }}
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Ensure keystone user owns the self-signed key and certificate - name: Ensure keystone user owns the self-signed key and certificate
file: file:
@ -42,5 +41,4 @@
- "{{ keystone_ssl_key }}" - "{{ keystone_ssl_key }}"
- "{{ keystone_ssl_cert }}" - "{{ keystone_ssl_cert }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes

View File

@ -21,8 +21,7 @@
group: "{{ keystone_system_group_name }}" group: "{{ keystone_system_group_name }}"
mode: "0640" mode: "0640"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Distribute self signed ssl cert - name: Distribute self signed ssl cert
copy: copy:
@ -32,8 +31,7 @@
group: "{{ keystone_system_group_name }}" group: "{{ keystone_system_group_name }}"
mode: "0640" mode: "0640"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Ensure keystone user owns the self-signed key and certificate - name: Ensure keystone user owns the self-signed key and certificate
file: file:
@ -44,5 +42,4 @@
- "{{ keystone_ssl_key }}" - "{{ keystone_ssl_key }}"
- "{{ keystone_ssl_cert }}" - "{{ keystone_ssl_cert }}"
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes

View File

@ -22,8 +22,7 @@
mode: "0644" mode: "0644"
when: keystone_user_ssl_cert is defined when: keystone_user_ssl_cert is defined
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Drop user provided ssl key - name: Drop user provided ssl key
copy: copy:
@ -34,8 +33,7 @@
mode: "0640" mode: "0640"
when: keystone_user_ssl_key is defined when: keystone_user_ssl_key is defined
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes
- name: Drop user provided ssl CA cert - name: Drop user provided ssl CA cert
copy: copy:
@ -46,5 +44,4 @@
mode: "0644" mode: "0644"
when: keystone_user_ssl_ca_cert is defined when: keystone_user_ssl_ca_cert is defined
notify: notify:
- Restart web server on first node - Restart web server
- Restart web server on other nodes

View File

@ -27,8 +27,7 @@
config_type: ini config_type: ini
with_items: "{{ keystone_wsgi_program_names }}" with_items: "{{ keystone_wsgi_program_names }}"
notify: notify:
- Restart uWSGI on first node - Restart uWSGI
- Restart uWSGI on other nodes
- include: "keystone_init_{{ ansible_service_mgr }}.yml" - include: "keystone_init_{{ ansible_service_mgr }}.yml"
vars: vars:

View File

@ -53,12 +53,14 @@
- name: refresh local facts - name: refresh local facts
setup: setup:
filter: ansible_local filter: ansible_local
gather_subset: "!all"
tags: tags:
- keystone-config - keystone-config
- include: keystone_cleanup_old_facts.yml - include: keystone_cleanup_old_facts.yml
when: when:
- "ansible_local['keystone'] is defined" - "('keystone' in ansible_local) or
('need_db_sync' in ansible_local['openstack_ansible']['keystone'])"
tags: tags:
- keystone-config - keystone-config
@ -92,19 +94,8 @@
- include: keystone_db_setup.yml - include: keystone_db_setup.yml
when: when:
- keystone_database_enabled | bool - "keystone_database_enabled | bool"
- inventory_hostname == ansible_play_hosts[0] - "inventory_hostname == ansible_play_hosts[0]"
- ansible_local['openstack_ansible']['keystone']['need_db_sync'] | bool
tags:
- keystone-config
- name: Disable the need of a db sync on all nodes
ini_file:
dest: "/etc/ansible/facts.d/openstack_ansible.fact"
section: keystone
option: need_db_sync
value: False
when: dbsync | succeeded
tags: tags:
- keystone-config - keystone-config