tripleo-ansible/tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/prepare.yml

105 lines
4.2 KiB
YAML

---
# Copyright 2019 Red Hat, Inc.
# All Rights Reserved.
#
# 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: create ceph-ansible temp dirs
become: true
file:
path: "{{ item }}"
state: directory
owner: "{{ ansible_user }}"
with_items:
- "{{ playbook_dir }}/ceph-ansible"
- "{{ playbook_dir }}/ceph-ansible/group_vars"
- "{{ playbook_dir }}/ceph-ansible/host_vars"
- "{{ playbook_dir }}/ceph-ansible/fetch_dir"
- name: symbolic link to tripleo inventory from ceph-ansible work directory
# If we call ceph-ansible with the same inventory as the calling
# playbook, then config-download/groups_vars will be used instead
# of config-download/ceph-ansible/group_vars.
file:
src: "{{ inventory_file }}"
dest: "{{ playbook_dir }}/ceph-ansible/inventory.yml"
state: link
force: true
tags:
- run_uuid_ansible
- run_ceph_ansible
- name: get the list of enabled services on the overcloud
set_fact:
tripleo_enabled_services: "{{ enabled_services | default([]) }}"
- name: build the openstack pool list
import_tasks: build_pools.yml
vars:
tripleo_pool_images: "{{ ceph_pools.glance_pool.enabled }}"
tripleo_pool_vms: "{{ ceph_pools.nova_pool.enabled }}"
tripleo_pool_volumes: "{{ ceph_pools.cinder_pool.enabled }}"
tripleo_pool_backup: "{{ ceph_pools.cinder_backup_pool.enabled }}"
tripleo_pool_metrics: "{{ ceph_pools.gnocchi_pool.enabled }}"
- name: build openstack keys
include_tasks: build_keys.yml
- name: build ceph config overrides
include_tasks: build_config_overrides.yml
- name: generate ceph-ansible group vars all
copy:
dest: "{{ playbook_dir }}/ceph-ansible/group_vars/all.yml"
content: "{{ ceph_ansible_group_vars_all | combine(ceph_overrides|default({}))
| combine(openstack_pools|default({'openstack_pools': []})) | combine(openstack_keys|default({'openstack_keys': []}))
| combine(keys|default({'keys': []})) | combine(cephfs_data|default({})) | combine(cephfs_metadata|default({})) | to_nice_yaml }}"
- name: generate ceph-ansible extra vars
copy:
dest: "{{ playbook_dir }}/ceph-ansible/extra_vars.yml"
content: "{{ ceph_ansible_extra_vars | to_nice_yaml }}"
- when:
- ceph_external_multi_config is defined
- (ceph_external_multi_config|length) > 0
block:
- name: generate ceph-ansible extra vars foreach ceph in ceph_external_multi_config
copy:
dest: "{{ playbook_dir }}/ceph-ansible/external_{{ item.cluster }}_extra_vars.yml"
content: "{{ item | default('') | to_nice_yaml }}"
loop: "{{ ceph_external_multi_config }}"
- name: get hosts of ceph_mon group and ceph_client group from inventory
# Any host in the internal ceph cluster clients group and mon group
# should also be a client of the additional external ceph cluster(s).
# The clients group is sufficient if all cases are external, but if
# default ceph-ansible run is internal, then roles with Ceph may not
# include the CephClient service like the CephMon service found in the
# Controller role. If the CephMon service is present, CephClient is
# not necessary to get a key and conf file, but the additional runs
# for the external Ceph cluster(s) do need the key and conf file on
# the hosts in that role.
set_fact:
mon_client_hosts: "{{ mon_client_hosts | default([]) + [ item ] }}"
with_inventory_hostnames:
- ceph_client
- ceph_mon
- name: generate ceph-ansible/external_inventory.ini for ceph_external_multi_config
# Build a new inventory where the collected hosts are only clients
template:
src: "external_inventory.ini.j2"
dest: "{{ playbook_dir }}/ceph-ansible/external_inventory.ini"