Ensure all cinder_backends are created

Combine all cinder_volume host's "cinder_backends" var to ensure all
cinder_backends are created, and there is no race condition setting up
the same backend for multiple hosts (e.g. rbd backends which exist on
multiple volume servers).

This adds a second cinder_volume node for testing, with a new backend,
as well as the old backend - this should ensure duplicate backends are
not created whilst backends are created for each cinder_volumes host.

Change-Id: I1c2fb1ef07423fc415622767ff09f058c773c1ed
Closes-Bug: 1649914
This commit is contained in:
Andy McCrae 2016-12-21 18:02:07 +00:00
parent 8261c91259
commit 879082f204
4 changed files with 41 additions and 3 deletions

View File

@ -22,6 +22,11 @@
retries: 10
delay: 10
- name: Create singular cinder_backends variable for all hosts
set_fact:
_cinder_backends: "{{ (_cinder_backends | default(cinder_backends | default({}))) | combine(hostvars[item]['cinder_backends'] | default({})) }}"
with_items: "{{ groups['cinder_volume'] }}"
- name: Add in cinder devices types
shell: |
. {{ ansible_env.HOME }}/openrc
@ -29,7 +34,7 @@
{{ cinder_bin }}/cinder {{ keystone_service_adminuri_insecure | bool | ternary('--insecure','') }} type-create "{{ item.key }}"
{{ cinder_bin }}/cinder {{ keystone_service_adminuri_insecure | bool | ternary('--insecure','') }} type-key "{{ item.key }}" set volume_backend_name="{{ item.value.volume_backend_name }}"
fi
with_dict: "{{ cinder_backends|default({}) }}"
with_dict: "{{ _cinder_backends|default({}) }}"
changed_when: false
- name: Add extra cinder volume types
@ -41,7 +46,7 @@
{{ cinder_bin }}/cinder {{ keystone_service_adminuri_insecure | bool | ternary('--insecure','') }} type-key "{{ evtype }}" set volume_backend_name="{{ item.value.volume_backend_name }}"
fi
{% endfor %}
with_dict: "{{ cinder_backends|default({}) }}"
with_dict: "{{ _cinder_backends|default({}) }}"
when: item.value.extra_volume_types is defined
- include: cinder_qos.yml

View File

@ -62,7 +62,7 @@
- include: cinder_backends.yml
when:
- groups['cinder_volume'] | length > 0
- inventory_hostname in groups['cinder_volume'][0]
- inventory_hostname == groups['cinder_volume'][0]
tags:
- cinder-install

View File

@ -0,0 +1,30 @@
---
# 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.
ansible_host: 10.1.1.104
ansible_become: True
ansible_user: root
cinder_backends:
lvm:
volume_group: cinder-volumes
volume_driver: cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name: LVM_iSCSI
lvm2:
volume_group: cinder-volumes
volume_driver: cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name: LVM_iSCSI
# In order to use loopback devices we set this line
lxc_container_config_list:
- "lxc.cgroup.devices.allow = b 7:* rwm"

View File

@ -3,11 +3,13 @@ localhost
infra1
keystone
cinder
cinder_vol
[all_containers]
infra1
keystone
cinder
cinder_vol
[rabbitmq_all]
infra1
@ -40,6 +42,7 @@ cinder
[cinder_volume]
localhost
cinder_vol
[cinder_all:children]
cinder_api