--- # 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: Ensure cinder api is available uri: url: "{{ cinder_service_internaluri }}" status_code: 200,300 validate_certs: "{{ cinder_service_internaluri_insecure | bool }}" register: api_status until: api_status is success retries: 10 delay: 10 # TODO(odyssey4me): # Once these tasks can be replaced by using Ansible modules instead, # we should do that and use the delegation to the service setup host # so that we can remove the openrc file from the target host. - name: Implement openrc/clouds.yaml include_role: name: "openstack_openrc" - 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_services['cinder-volume']['group']] }}" - name: Add in cinder devices types shell: | . {{ ansible_env.HOME }}/openrc CLI_OPTIONS="{{ ((keystone_service_adminuri_insecure | bool) or (cinder_service_internaluri_insecure | bool)) | ternary('--insecure','') }}" if ! {{ cinder_bin }}/openstack ${CLI_OPTIONS} volume type show "{{ item.key }}"; then {{ cinder_bin }}/openstack ${CLI_OPTIONS} volume type create --property volume_backend_name="{{ item.value.volume_backend_name }}" {% if not (item.value.public | default(True)) | bool %} --private {% endif %} "{{ item.key }}" fi args: executable: /bin/bash with_dict: "{{ _cinder_backends|default({}) }}" changed_when: false - name: Add extra cinder volume types shell: | . {{ ansible_env.HOME }}/openrc CLI_OPTIONS="{{ ((keystone_service_adminuri_insecure | bool) or (cinder_service_internaluri_insecure | bool)) | ternary('--insecure','') }}" {% for evtype in item.value.extra_volume_types %} if ! {{ cinder_bin }}/openstack ${CLI_OPTIONS} volume type show "{{ evtype }}"; then {{ cinder_bin }}/openstack ${CLI_OPTIONS} volume type create --property volume_backend_name="{{ item.value.volume_backend_name }}" {% if not (item.value.public | default(True)) | bool %} --private {% endif %} "{{ evtype }}" fi {% endfor %} args: executable: /bin/bash with_dict: "{{ _cinder_backends|default({}) }}" when: item.value.extra_volume_types is defined - include_tasks: cinder_qos.yml when: cinder_qos_specs is defined tags: - cinder-qos