Browse Source

Remove the ceph-ansible roles

ceph-ansible is not used anymore in master and both ceph
deployment and day2 ops are managed by the new cephadm tool.
This change aligns the tripleo-ansible tree to make sure
only cephadm is used to deploy Ceph (see [1]).

[1] https://blueprints.launchpad.net/tripleo/+spec/tripleo-ceph

Change-Id: I2ce4f0068aac3b2ab4712e22c433b97fad208655
changes/59/797959/5
Francesco Pantano 3 months ago
parent
commit
69dcd53747
No known key found for this signature in database GPG Key ID: 458D4D1F41BD75C
  1. 103
      tripleo_ansible/roles/tripleo_ceph_common/defaults/main.yml
  2. 37
      tripleo_ansible/roles/tripleo_ceph_common/molecule/default/Dockerfile
  3. 21
      tripleo_ansible/roles/tripleo_ceph_common/molecule/default/converge.yml
  4. 51
      tripleo_ansible/roles/tripleo_ceph_common/molecule/default/molecule.yml
  5. 21
      tripleo_ansible/roles/tripleo_ceph_common/molecule/default/prepare.yml
  6. 66
      tripleo_ansible/roles/tripleo_ceph_common/tasks/main.yml
  7. 20
      tripleo_ansible/roles/tripleo_ceph_run_ansible/defaults/main.yml
  8. 37
      tripleo_ansible/roles/tripleo_ceph_run_ansible/meta/main.yml
  9. 37
      tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/Dockerfile
  10. 24
      tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/converge.yml
  11. 51
      tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/molecule.yml
  12. 21
      tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/prepare.yml
  13. 65
      tripleo_ansible/roles/tripleo_ceph_run_ansible/tasks/create_ceph_ansible_remote_tmp.yml
  14. 159
      tripleo_ansible/roles/tripleo_ceph_run_ansible/tasks/main.yml
  15. 37
      tripleo_ansible/roles/tripleo_ceph_uuid/meta/main.yml
  16. 37
      tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/Dockerfile
  17. 21
      tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/converge.yml
  18. 51
      tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/molecule.yml
  19. 21
      tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/prepare.yml
  20. 39
      tripleo_ansible/roles/tripleo_ceph_uuid/tasks/gather.yml
  21. 22
      tripleo_ansible/roles/tripleo_ceph_uuid/tasks/main.yml
  22. 48
      tripleo_ansible/roles/tripleo_ceph_uuid/tasks/prepare.yml
  23. 5
      tripleo_ansible/roles/tripleo_ceph_work_dir/meta/main.yml
  24. 48
      tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/get_ssh_private_key.yml
  25. 5
      tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/main.yml
  26. 125
      tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/prepare.yml
  27. 11
      zuul.d/molecule.yaml

103
tripleo_ansible/roles/tripleo_ceph_common/defaults/main.yml

@ -1,103 +0,0 @@
---
# 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.
# todo(fultonj): evolve this to derive more of these values from facts
ceph_ansible_group_vars_all:
ceph_container_image: ceph/daemon
ceph_container_image_tag: v4.0.1-stable-4.0-nautilus-centos-7-x86_64
ceph_container_registry: 192.168.24.1:8787
ceph_origin: distro
ceph_stable: true
cluster: ceph
cluster_network: 192.168.24.0/24
containerized_deployment: true
configure_firewall: false
fsid: b8df929e-7c29-11e9-b1bd-244253215215
generate_fsid: false
ip_version: ipv4
monitor_address_block: 192.168.24.0/24
ntp_service_enabled: false
openstack_config: true
pools: []
public_network: 192.168.24.0/24
user_config: true
dashboard_enabled: false
blacklisted_hostnames: []
ceph_ansible_extra_vars:
ireallymeanit: 'yes'
container_binary: 'podman'
uuid_content: {}
ceph_ansible_playbook_verbosity: 3
ceph_ansible_playbooks_param: ['default']
ceph_ansible_skip_tags: 'package-install,with_pkg'
ceph_ansible_environment_variables: []
ceph_ansible_inherits_calling_ansible_environment: false
ceph_pools:
gnocchi_pool:
name: 'metrics'
enabled: true
nova_pool:
name: 'vms'
enabled: true
glance_pool:
name: 'images'
enabled: true
cinder_pool:
name: 'volumes'
enabled: true
cinder_extra_pools: [altrbd, pool2, pool3]
cinder_backup_pool:
name: 'backups'
enabled: false
extra_pools:
- application: rbd
name: altrbd
pg_num: 1
rule_name: replicated_rule
pg_num: 32
manila_pools:
data: 'manila_data'
data_pg_num: 16
metadata: 'manila_metadata'
metadata_pg_num: 16
ceph_keys:
openstack_client:
name: "openstack"
key: "AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw=="
manila:
name: "manila"
key: "AQDVdVZeAAAAABAAhhhLNK3G8Bb8kShtnPBXnA=="
radosgw:
name: "radosgw"
key: "AQDVdVZeAAAAABAAzv4Bo8gRRyuOvs2MaLtnYQ=="
extra_keys:
- caps:
mgr: allow *
mon: profile rbd
osd: profile rbd pool=images
key: AQBRgQ9eAAAAABAAv84zEilJYZPNuJ0Iwn9Ndg==
mode: '0600'
name: client.glance
ceph_default_overrides:
global:
osd_pool_default_pg_num: 32
osd_pool_default_pgp_num: 32
osd_pool_default_size: 1

37
tripleo_ansible/roles/tripleo_ceph_common/molecule/default/Dockerfile

@ -1,37 +0,0 @@
# Molecule managed
# 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.
{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install sudo python*-devel python*-dnf bash {{ item.pkg_extras | default('') }} && dnf clean all; \
elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl python-setuptools bash {{ item.pkg_extras | default('') }} && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml {{ item.pkg_extras | default('') }} && zypper clean -a; \
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates {{ item.pkg_extras | default('') }}; \
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates {{ item.pkg_extras | default('') }} && xbps-remove -O; fi
{% for pkg in item.easy_install | default([]) %}
# install pip for centos where there is no python-pip rpm in default repos
RUN easy_install {{ pkg }}
{% endfor %}
CMD ["sh", "-c", "while true; do sleep 10000; done"]

21
tripleo_ansible/roles/tripleo_ceph_common/molecule/default/converge.yml

@ -1,21 +0,0 @@
---
# 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: Converge
hosts: all
roles:
- role: "tripleo_ceph_common"

51
tripleo_ansible/roles/tripleo_ceph_common/molecule/default/molecule.yml

@ -1,51 +0,0 @@
---
driver:
name: podman
log: true
platforms:
- name: ubi8
hostname: ubi8
image: ubi8/ubi-init
registry:
url: registry.access.redhat.com
dockerfile: Dockerfile
pkg_extras: python*setuptools
volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
- /opt/yum.repos.d:/etc/yum.repos.d:rw
- /etc/dnf/vars:/etc/dnf/vars
privileged: true
environment: &env
http_proxy: "{{ lookup('env', 'http_proxy') }}"
https_proxy: "{{ lookup('env', 'https_proxy') }}"
ulimits: &ulimit
- host
provisioner:
name: ansible
inventory:
hosts:
all:
hosts:
ubi8:
ansible_python_interpreter: /usr/bin/python3
vars:
ansible_user: root
log: true
env:
ANSIBLE_STDOUT_CALLBACK: yaml
scenario:
test_sequence:
- destroy
- create
- prepare
- converge
- verify
- destroy
verifier:
name: testinfra

21
tripleo_ansible/roles/tripleo_ceph_common/molecule/default/prepare.yml

@ -1,21 +0,0 @@
---
# 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: Prepare
hosts: all
roles:
- role: test_deps

66
tripleo_ansible/roles/tripleo_ceph_common/tasks/main.yml

@ -1,66 +0,0 @@
---
# 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: set basic user fact
set_fact:
ansible_user: "{{ lookup('env', 'USER') }}"
when:
- ansible_user is undefined
- name: set basic home fact
set_fact:
ansible_user_dir: "{{ lookup('env', 'HOME') }}"
when:
- ansible_user_dir is undefined
- name: set calling_ansible_environment_variables fact
set_fact:
calling_ansible_environment_variables: []
when:
- (not ceph_ansible_inherits_calling_ansible_environment | default(true)) | bool
- name: Local environment inherit
when:
- (ceph_ansible_inherits_calling_ansible_environment | default(false)) | bool
block:
- name: get all ansible environment variables
shell: "env | grep ^ANSIBLE_ | grep -v CALLBACK"
register: env_shell_output
failed_when: false
delegate_to: localhost
connection: local
run_once: true
- name: set calling_ansible_environment_variables
run_once: true
set_fact:
calling_ansible_environment_variables: "{{ env_shell_output.stdout_lines }}"
when:
- env_shell_output.rc is defined
- env_shell_output.rc == 0
- env_shell_output.stdout_lines is defined
- (env_shell_output.stdout_lines|length) > 0
- name: Set common fact
set_fact:
ceph_common_done: true
- name: set ceph_ansible_limit to ansible_limit, only if ansible_limit defined
set_fact:
ceph_ansible_limit: "{{ ansible_limit }}"
when:
- (ceph_ansible_limit is not defined) or (ceph_ansible_limit|length == 0)
- (ansible_limit is defined) and (ansible_limit|length > 0)

20
tripleo_ansible/roles/tripleo_ceph_run_ansible/defaults/main.yml

@ -1,20 +0,0 @@
---
# Copyright 2020 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.
# All variables intended for modification should be placed in this file.
tripleo_ceph_run_ansible_hide_sensitive_logs: "{{ hide_sensitive_logs | default(true) }}"
tripleo_ceph_run_ansible_debug: "{{ ((ansible_verbosity | int) >= 2) | bool }}"

37
tripleo_ansible/roles/tripleo_ceph_run_ansible/meta/main.yml

@ -1,37 +0,0 @@
---
# 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.
galaxy_info:
author: OpenStack
description: TripleO OpenStack Role -- tripleo_ceph_run_ansible
company: Red Hat
license: Apache-2.0
min_ansible_version: 2.7
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
platforms:
- name: CentOS
versions:
- 7
- 8
galaxy_tags:
- tripleo

37
tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/Dockerfile

@ -1,37 +0,0 @@
# Molecule managed
# 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.
{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install sudo python*-devel python*-dnf bash {{ item.pkg_extras | default('') }} && dnf clean all; \
elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl python-setuptools bash {{ item.pkg_extras | default('') }} && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml {{ item.pkg_extras | default('') }} && zypper clean -a; \
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates {{ item.pkg_extras | default('') }}; \
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates {{ item.pkg_extras | default('') }} && xbps-remove -O; fi
{% for pkg in item.easy_install | default([]) %}
# install pip for centos where there is no python-pip rpm in default repos
RUN easy_install {{ pkg }}
{% endfor %}
CMD ["sh", "-c", "while true; do sleep 10000; done"]

24
tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/converge.yml

@ -1,24 +0,0 @@
---
# 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: Converge
hosts: all
roles:
- role: "tripleo_ceph_common"
- role: "tripleo_ceph_work_dir"
- role: "tripleo_ceph_uuid"
- role: "tripleo_ceph_run_ansible"

51
tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/molecule.yml

@ -1,51 +0,0 @@
---
driver:
name: podman
log: true
platforms:
- name: ubi8
hostname: ubi8
image: ubi8/ubi-init
registry:
url: registry.access.redhat.com
dockerfile: Dockerfile
pkg_extras: python*setuptools
volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
- /opt/yum.repos.d:/etc/yum.repos.d:rw
- /etc/dnf/vars:/etc/dnf/vars
privileged: true
environment: &env
http_proxy: "{{ lookup('env', 'http_proxy') }}"
https_proxy: "{{ lookup('env', 'https_proxy') }}"
ulimits: &ulimit
- host
provisioner:
name: ansible
inventory:
hosts:
all:
hosts:
ubi8:
ansible_python_interpreter: /usr/bin/python3
vars:
ansible_user: root
log: true
env:
ANSIBLE_STDOUT_CALLBACK: yaml
scenario:
test_sequence:
- destroy
- create
- prepare
- converge
- verify
- destroy
verifier:
name: testinfra

21
tripleo_ansible/roles/tripleo_ceph_run_ansible/molecule/default/prepare.yml

@ -1,21 +0,0 @@
---
# 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: Prepare
hosts: all
roles:
- role: test_deps

65
tripleo_ansible/roles/tripleo_ceph_run_ansible/tasks/create_ceph_ansible_remote_tmp.yml

@ -1,65 +0,0 @@
---
# Copyright 2020 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: genereate create_ceph_ansible_remote_tmp playbook
copy:
dest: "{{ playbook_dir }}/ceph-ansible/create_ceph_ansible_remote_tmp.yml"
content: |
- hosts: all
gather_facts: no
tasks:
# Avoiding the following by creating directory owned by user who will
# SSH into nodes (not root). When root needs to write to this directory
# it will not have permission problems by definition. As per ansible:
# """
# Module remote_tmp /tmp/ceph_ansible_tmp did not exist and was created
# with a mode of 0700, this may cause issues when running as another user.
# To avoid this, create the remote_tmp dir with the correct permissions
# manually.
# """
- name: create ceph_ansible_remote_tmp on all nodes with necessary ownership
become: true
file:
path: "{{ ceph_ansible_remote_tmp }}"
owner: "{{ lookup('env','ANSIBLE_REMOTE_USER') | default(ansible_user, true) }}"
group: "{{ lookup('env','ANSIBLE_REMOTE_USER') | default(ansible_user, true) }}"
mode: "700"
state: directory
- name: build create_ceph_ansible_remote_tmp command as list
set_fact:
create_ceph_ansible_remote_tmp_list:
- ANSIBLE_LOG_PATH="{{ playbook_dir }}/ceph-ansible/create_ceph_ansible_remote_tmp.log"
- ANSIBLE_SSH_CONTROL_PATH_DIR="/tmp/ceph_ansible_control_path"
- ANSIBLE_CONFIG=/usr/share/ceph-ansible/ansible.cfg
- ANSIBLE_REMOTE_TEMP=/tmp/create_ceph_ansible_remote_tmp
- "{{ calling_ansible_environment_variables|join(' ') }}"
- "{{ ceph_ansible_environment_variables|join(' ') }}"
- ansible-playbook
- '{% if ceph_ansible_private_key_file is defined %}--private-key {{ ceph_ansible_private_key_file }}{% endif %}'
- '-i'
- '{{ playbook_dir }}/ceph-ansible/inventory.yml'
- '{% if ansible_python_interpreter is defined %}-e ansible_python_interpreter={{ ansible_python_interpreter }}{% endif %}'
- "{{ playbook_dir }}/ceph-ansible/create_ceph_ansible_remote_tmp.yml"
- '{% if ceph_ansible_limit is defined and ceph_ansible_limit|length > 0 %}--limit {{ ceph_ansible_limit }}{% endif %}'
ceph_ansible_remote_tmp: '/tmp/ceph_ansible_tmp'
- name: run create_ceph_ansible_remote_tmp command
# needs become to be able to read the ssh private key
become: true
shell: "{{ create_ceph_ansible_remote_tmp_list|join(' ') }}"
tags:
- run_ceph_ansible

159
tripleo_ansible/roles/tripleo_ceph_run_ansible/tasks/main.yml

@ -1,159 +0,0 @@
---
# 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: set ceph-ansible playbook list
set_fact:
ceph_ansible_playbooks: >
{%- if ceph_ansible_playbooks_param != ['default'] -%}
{{ ceph_ansible_playbooks_param }}
{%- else -%}
{{ ceph_ansible_playbooks_default|default(['/usr/share/ceph-ansible/site-container.yml.sample']) }}
{%- endif -%}
- import_tasks: create_ceph_ansible_remote_tmp.yml
vars:
ceph_ansible_remote_tmp: '/tmp/ceph_ansible_tmp'
- name: set ceph-ansible command list
set_fact:
ceph_ansible_command_list:
- ANSIBLE_ACTION_PLUGINS=/usr/share/ceph-ansible/plugins/actions/
- ANSIBLE_CALLBACK_PLUGINS=/usr/share/ceph-ansible/plugins/callback/
- ANSIBLE_FILTER_PLUGINS=/usr/share/ceph-ansible/plugins/filter/
- ANSIBLE_ROLES_PATH=/usr/share/ceph-ansible/roles/
- ANSIBLE_LOG_PATH="{{ playbook_dir }}/ceph-ansible/ceph_ansible_command.log"
- ANSIBLE_SSH_CONTROL_PATH_DIR="/tmp/ceph_ansible_control_path"
- ANSIBLE_LIBRARY=/usr/share/ceph-ansible/library/
- ANSIBLE_CONFIG=/usr/share/ceph-ansible/ansible.cfg
- ANSIBLE_REMOTE_TEMP="{{ ceph_ansible_remote_tmp }}"
- ANSIBLE_FORKS=25
- ANSIBLE_GATHER_TIMEOUT=60
- ANSIBLE_CALLBACK_WHITELIST=profile_tasks
- ANSIBLE_STDOUT_CALLBACK=default
- "{{ calling_ansible_environment_variables|join(' ') }}"
- "{{ ceph_ansible_environment_variables|join(' ') }}"
# NOTE(mwhahaha): we need to force this for now until ansible addresses fact stuff
- ANSIBLE_INJECT_FACT_VARS=True
- ANSIBLE_GATHER_SUBSET="all"
- ANSIBLE_CACHE_PLUGIN="memory"
- ansible-playbook
- '{% if ceph_ansible_private_key_file is defined %}--private-key {{ ceph_ansible_private_key_file }}{% endif %}'
- '{% if ansible_python_interpreter is defined %}-e ansible_python_interpreter={{ ansible_python_interpreter }}{% endif %}'
- '-{%- for number in range(0, ceph_ansible_playbook_verbosity) -%}v{% endfor %}'
- '{% if ceph_ansible_skip_tags is defined and ceph_ansible_skip_tags|length > 0%}--skip-tags {{ ceph_ansible_skip_tags }}{% endif %}'
- '--extra-vars'
- '@{{ playbook_dir }}/ceph-ansible/extra_vars.yml'
- '{% if ceph_ansible_limit is defined and ceph_ansible_limit|length > 0 %}--limit {{ ceph_ansible_limit }}{% endif %}'
- name: try to find ANSIBLE_LOG_PATH in ceph_ansible_environment_variables
set_fact:
calling_ansible_log_path: "{{ item | regex_replace('ANSIBLE_LOG_PATH=', '') }}"
when: item is match("ANSIBLE_LOG_PATH.*")
loop: "{{ ceph_ansible_environment_variables }}"
- name: do we need to keep looking for the ANSIBLE_LOG_PATH?
when: calling_ansible_log_path is undefined
block:
- name: try to find ANSIBLE_LOG_PATH in calling_ansible_environment_variables
set_fact:
calling_ansible_log_path: "{{ item | regex_replace('ANSIBLE_LOG_PATH=', '') }}"
when: item is match("ANSIBLE_LOG_PATH.*")
loop: "{{ calling_ansible_environment_variables }}"
- name: Set ANSIBLE_LOG_PATH to default
when: calling_ansible_log_path is undefined
set_fact:
calling_ansible_log_path: "{{ playbook_dir }}/ceph-ansible/ceph_ansible_command.log"
- name: save ceph-ansible playbook command(s) to shell script
copy:
dest: "{{ playbook_dir }}/ceph-ansible/ceph_ansible_command.sh"
mode: '0755'
content: |
#!/usr/bin/env bash
set -e
echo "Running $0" >> {{ calling_ansible_log_path }}
{% set inv = "-i "+ playbook_dir +"/ceph-ansible/inventory.yml" %}
{% for playbook in ceph_ansible_playbooks %}
{{ ceph_ansible_command_list|join(' ') }} {{ inv }} {{ playbook }} 2>&1
{% endfor %}
- when:
- ceph_external_multi_config is defined
- (ceph_external_multi_config|length) > 0
block:
- name: set default facts for ceph_scripts list
set_fact:
ceph_prefix: "{{ playbook_dir + '/ceph-ansible/external_' }}"
ceph_suffix: '_ceph_ansible_command.sh'
ceph_default: "{{ [playbook_dir + '/ceph-ansible/ceph_ansible_command.sh'] }}"
- name: save external ceph-ansible playbook command(s) to shell script(s)
copy:
dest: "{{ ceph_prefix + item + ceph_suffix }}"
mode: '0755'
content: |
#!/usr/bin/env bash
set -e
echo "Running $0" >> {{ calling_ansible_log_path }}
{% set inv = "-i " + ceph_prefix + "inventory.ini" %}
{% set extra = "-e @" + ceph_prefix + item + "_extra_vars.yml" %}
{% for playbook in ceph_ansible_playbooks %}
{{ ceph_ansible_command_list|join(' ') }} {{ inv }} {{ extra }} {{ playbook }} 2>&1
{% endfor %}
loop: "{{ ceph_external_multi_config | map(attribute='cluster') | list }}"
- name: add external ceph-ansible shell script(s) to list of ceph_scripts
set_fact:
ceph_scripts: "{{ ceph_scripts|default(ceph_default) + [ceph_prefix + item + ceph_suffix] }}"
loop: "{{ ceph_external_multi_config | map(attribute='cluster') | list }}"
- name: "Notify user about upcoming ceph-ansible execution(s)"
debug:
msg: "Running {{ ceph_scripts|default(['ceph_ansible_command.sh'])|length }} ceph-ansible playbook(s) (immediate log at {{ calling_ansible_log_path }})"
- name: run ceph-ansible
# Needs become to be able to read the ssh private key
become: true
shell: "{{ item }}"
# We want the output chunked into bits to prevent
# overflowing Zaqar message size
no_log: "{{ not (tripleo_ceph_run_ansible_debug | bool) }}"
failed_when: false
register: outputs
tags: run_ceph_ansible
when: outputs.rc is undefined or outputs.rc == 0
loop: "{{ ceph_scripts | default([playbook_dir + '/ceph-ansible/ceph_ansible_command.sh']) }}"
- name: search output of ceph-ansible run(s) non-zero return codes
set_fact:
ceph_ansible_std_out_err: "{{ item.stdout_lines | default([]) | union(item.stderr_lines | default([])) }}"
no_log: "{{ tripleo_ceph_run_ansible_hide_sensitive_logs | bool }}"
when:
- item.rc is defined
- item.rc != 0
loop: "{{ outputs.results }}"
tags:
- run_ceph_ansible
- name: print ceph-ansible output in case of failure
debug:
var: ceph_ansible_std_out_err
when:
- ceph_ansible_std_out_err is defined
failed_when:
- ceph_ansible_std_out_err is defined
tags:
- run_ceph_ansible

37
tripleo_ansible/roles/tripleo_ceph_uuid/meta/main.yml

@ -1,37 +0,0 @@
---
# 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.
galaxy_info:
author: OpenStack
description: TripleO OpenStack Role -- tripleo_ceph_uuid
company: Red Hat
license: Apache-2.0
min_ansible_version: 2.7
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
platforms:
- name: CentOS
versions:
- 7
- 8
galaxy_tags:
- tripleo

37
tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/Dockerfile

@ -1,37 +0,0 @@
# Molecule managed
# 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.
{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install sudo python*-devel python*-dnf bash {{ item.pkg_extras | default('') }} && dnf clean all; \
elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl python-setuptools bash {{ item.pkg_extras | default('') }} && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml {{ item.pkg_extras | default('') }} && zypper clean -a; \
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates {{ item.pkg_extras | default('') }}; \
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates {{ item.pkg_extras | default('') }} && xbps-remove -O; fi
{% for pkg in item.easy_install | default([]) %}
# install pip for centos where there is no python-pip rpm in default repos
RUN easy_install {{ pkg }}
{% endfor %}
CMD ["sh", "-c", "while true; do sleep 10000; done"]

21
tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/converge.yml

@ -1,21 +0,0 @@
---
# 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: Converge
hosts: all
roles:
- role: "tripleo_ceph_uuid"

51
tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/molecule.yml

@ -1,51 +0,0 @@
---
driver:
name: podman
log: true
platforms:
- name: ubi8
hostname: ubi8
image: ubi8/ubi-init
registry:
url: registry.access.redhat.com
dockerfile: Dockerfile
pkg_extras: python*setuptools
volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
- /opt/yum.repos.d:/etc/yum.repos.d:rw
- /etc/dnf/vars:/etc/dnf/vars
privileged: true
environment: &env
http_proxy: "{{ lookup('env', 'http_proxy') }}"
https_proxy: "{{ lookup('env', 'https_proxy') }}"
ulimits: &ulimit
- host
provisioner:
name: ansible
inventory:
hosts:
all:
hosts:
ubi8:
ansible_python_interpreter: /usr/bin/python3
vars:
ansible_user: root
log: true
env:
ANSIBLE_STDOUT_CALLBACK: yaml
scenario:
test_sequence:
- destroy
- create
- prepare
- converge
- verify
- destroy
verifier:
name: testinfra

21
tripleo_ansible/roles/tripleo_ceph_uuid/molecule/default/prepare.yml

@ -1,21 +0,0 @@
---
# 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: Prepare
hosts: all
roles:
- role: test_deps

39
tripleo_ansible/roles/tripleo_ceph_uuid/tasks/gather.yml

@ -1,39 +0,0 @@
---
# 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: build nodes-uuid command as list
set_fact:
nodes_uuid_list:
- ANSIBLE_LOG_PATH="{{ playbook_dir }}/ceph-ansible/nodes_uuid_command.log"
- ANSIBLE_SSH_CONTROL_PATH_DIR="/tmp/ceph_ansible_control_path"
- ANSIBLE_CONFIG=/usr/share/ceph-ansible/ansible.cfg
- ANSIBLE_REMOTE_TEMP=/tmp/nodes_uuid_tmp
- "{{ calling_ansible_environment_variables|join(' ') }}"
- "{{ ceph_ansible_environment_variables|join(' ') }}"
- ansible-playbook
- '{% if ceph_ansible_private_key_file is defined %}--private-key {{ ceph_ansible_private_key_file }}{% endif %}'
- '-i'
- '{{ playbook_dir }}/ceph-ansible/inventory.yml'
- '{% if ansible_python_interpreter is defined %}-e ansible_python_interpreter={{ ansible_python_interpreter }}{% endif %}'
- '{{ playbook_dir }}/ceph-ansible/nodes_uuid_playbook.yml'
- '{% if ceph_ansible_limit is defined and ceph_ansible_limit|length > 0 %}--limit {{ ceph_ansible_limit }}{% endif %}'
- name: run nodes-uuid command
# needs become to be able to read the ssh private key
become: true
shell: "{{ nodes_uuid_list|join(' ') }}"
tags:
- run_uuid_ansible

22
tripleo_ansible/roles/tripleo_ceph_uuid/tasks/main.yml

@ -1,22 +0,0 @@
---
# 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.
- import_tasks: prepare.yml
when:
- nodes_data is undefined
- import_tasks: gather.yml
when:
- nodes_uuid_list is undefined

48
tripleo_ansible/roles/tripleo_ceph_uuid/tasks/prepare.yml

@ -1,48 +0,0 @@
---
# 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: generate nodes-uuid data file
copy:
dest: "{{ playbook_dir }}/ceph-ansible/nodes_uuid_data.json"
content: "{{ uuid_content }}"
- name: generate nodes-uuid playbook
copy:
dest: "{{ playbook_dir }}/ceph-ansible/nodes_uuid_playbook.yml"
content: |
- hosts: all
gather_facts: no
tasks:
- name: set nodes data
set_fact:
nodes_data: "{% raw %}{{ lookup('file','./nodes_uuid_data.json') | from_json }}{% endraw %}"
- name: register machine id
become: true
# awk strips unwanted output, see LP bug #1762460
shell: >-
dmidecode -s system-uuid | \
awk 'match($0, /[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}/) { print substr($0, RSTART, RLENGTH) }' | \
tr A-F a-f
register: machine_uuid
# NOTE(tonyb): 0 == no error, 1 == -EPERM or bad data and 2 == Command not found
# 1 and 2 aren't great but shouldn't cause the deploy to fail. If we're using
# the node specific data we'll fail then. If we aren't then lets keep moving
failed_when: machine_uuid.rc not in [0, 1, 2]
- name: generate host vars from nodes data
copy:
content: "{% raw %}{{ nodes_data[machine_uuid.stdout|default('')]|default({})|to_nice_yaml }}{% endraw %}"
dest: "{{ playbook_dir }}/ceph-ansible/host_vars/{% raw %}{{ inventory_hostname }}{% endraw %}.yml"
delegate_to: localhost

5
tripleo_ansible/roles/tripleo_ceph_work_dir/meta/main.yml

@ -35,8 +35,3 @@ galaxy_info:
galaxy_tags:
- tripleo
dependencies:
- role: tripleo_ceph_common
when:
- ceph_common_done is undefined

48
tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/get_ssh_private_key.yml

@ -1,48 +0,0 @@
---
# 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: detect private key file in $HOME/.ssh/id_rsa_tripleo
# needs become to be able to read the ssh private key
become: true
stat:
path: "{{ lookup('env','HOME') }}/.ssh/id_rsa_tripleo"
register: detect_private_key_file
- name: set private key file
# needs become to be able to read the ssh private key
become: true
set_fact:
ceph_ansible_private_key_file: "{{ lookup('env','HOME') }}/.ssh/id_rsa_tripleo"
when:
- detect_private_key_file.stat.exists | bool
- name: Falling back to looking for ssh_private_key in playbook_dir
when: ceph_ansible_private_key_file is undefined
block:
- name: detect private key file in playbook_dir
# needs become to be able to read the ssh private key
become: true
stat:
path: "{{ playbook_dir }}/ssh_private_key"
register: detect_private_key_file
- name: set private key file
# needs become to be able to read the ssh private key
become: true
set_fact:
ceph_ansible_private_key_file: "{{ playbook_dir }}/ssh_private_key"
when:
- detect_private_key_file.stat.exists | bool

5
tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/main.yml

@ -13,8 +13,3 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
- import_tasks: prepare.yml
- import_tasks: get_ssh_private_key.yml
when:
- ceph_ansible_private_key_file is undefined

125
tripleo_ansible/roles/tripleo_ceph_work_dir/tasks/prepare.yml

@ -1,125 +0,0 @@
---
# 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
file:
path: "{{ item }}"
state: directory
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: set dashboard_vip variable if dashboard is enabled
block:
- name: set dashboard_frontend variable
set_fact:
ceph_ansible_group_vars_all: "{{ ceph_ansible_group_vars_all | combine({ 'dashboard_frontend_vip': dashboard_vip | default() })
| combine({ 'prometheus_frontend_vip': monitoring_stack_vip | default()})
| combine({ 'alertmanager_frontend_vip': monitoring_stack_vip | default()}) }}"
vars:
dashboard_vip: |-
{% set dashboard_vip = control_virtual_ip %}
{% if 'StorageDashboard' in enabled_networks %}
{% set dashboard_vip = net_vip_map.get('storage_dashboard') %}
{% endif %}
{{ dashboard_vip }}
monitoring_stack_vip: |-
{% set monitoring_vip = control_virtual_ip %}
{% if 'Storage' in enabled_networks %}
{% set monitoring_vip = net_vip_map.get('storage') %}
{% endif %}
{{ monitoring_vip }}
when:
- tripleo_enabled_services | intersect(['ceph_grafana'])
- 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"

11
zuul.d/molecule.yaml

@ -14,7 +14,6 @@
- tripleo-ansible-centos-8-molecule-tripleo_cellv2
- tripleo-ansible-centos-8-molecule-tripleo_ceph_client
- tripleo-ansible-centos-8-molecule-tripleo_ceph_distribute_keys
- tripleo-ansible-centos-8-molecule-tripleo_ceph_run_ansible
- tripleo-ansible-centos-8-molecule-tripleo_cephadm
- tripleo-ansible-centos-8-molecule-tripleo_clients_install
- tripleo-ansible-centos-8-molecule-tripleo_collectd
@ -76,7 +75,6 @@
- tripleo-ansible-centos-8-molecule-tripleo_cellv2
- tripleo-ansible-centos-8-molecule-tripleo_ceph_client
- tripleo-ansible-centos-8-molecule-tripleo_ceph_distribute_keys
- tripleo-ansible-centos-8-molecule-tripleo_ceph_run_ansible
- tripleo-ansible-centos-8-molecule-tripleo_cephadm
- tripleo-ansible-centos-8-molecule-tripleo_clients_install
- tripleo-ansible-centos-8-molecule-tripleo_collectd
@ -139,7 +137,6 @@
- tripleo-ansible-centos-8-molecule-tripleo_cellv2
- tripleo-ansible-centos-8-molecule-tripleo_ceph_client
- tripleo-ansible-centos-8-molecule-tripleo_ceph_distribute_keys
- tripleo-ansible-centos-8-molecule-tripleo_ceph_run_ansible
- tripleo-ansible-centos-8-molecule-tripleo_cephadm
- tripleo-ansible-centos-8-molecule-tripleo_clients_install
- tripleo-ansible-centos-8-molecule-tripleo_collectd
@ -259,14 +256,6 @@
vars:
tripleo_job_ansible_args: --skip-tags=ceph_fetch_admin_keyring,ceph_admin_key_rsync
tripleo_role_name: tripleo_ceph_distribute_keys
- job:
files:
- ^tripleo_ansible/roles/tripleo_ceph_.*
name: tripleo-ansible-centos-8-molecule-tripleo_ceph_run_ansible
parent: tripleo-ansible-centos-8-base
vars:
tripleo_job_ansible_args: -v --skip-tags=run_uuid_ansible,run_ceph_ansible
tripleo_role_name: tripleo_ceph_run_ansible
- job:
files:
- ^tripleo_ansible/roles/tripleo_cephadm/.*

Loading…
Cancel
Save