From 9e6c9e2bf8202963e3935e1909d3a7a26ebec613 Mon Sep 17 00:00:00 2001 From: Jonathan Rosser Date: Tue, 16 Oct 2018 20:37:38 +0100 Subject: [PATCH] Refactor ceph server playbooks Change-Id: I58191dbe10c34e27b0f0192d06e2e891ae9ecfce --- playbooks/ceph-install.yml | 102 ++----------------------- playbooks/ceph-rgw-install.yml | 23 +----- playbooks/common-tasks/ceph-server.yml | 84 ++++++++++++++++++++ 3 files changed, 94 insertions(+), 115 deletions(-) create mode 100644 playbooks/common-tasks/ceph-server.yml diff --git a/playbooks/ceph-install.yml b/playbooks/ceph-install.yml index 5bfeb2dbe1..df1502f4b3 100644 --- a/playbooks/ceph-install.yml +++ b/playbooks/ceph-install.yml @@ -19,53 +19,9 @@ vars_files: - "defaults/{{ install_method }}_install.yml" pre_tasks: - - include: common-tasks/os-log-dir-setup.yml - vars: - log_dirs: - - src: "/openstack/log/{{ inventory_hostname }}-ceph" - dest: "/var/log/ceph" - - include: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml" - when: not is_metal - static: no - vars: - list_of_bind_mounts: "{{ ceph_container_bind_mounts }}" - - include: common-tasks/unbound-clients.yml - static: no - when: - - hostvars['localhost']['resolvconf_enabled'] | bool - #TODO: mgariepy, revisit to use include_role when https://github.com/ansible/ansible/issues/20077 is fixed - - name: install the ceph stable repository key - rpm_key: - key: "{{ ceph_stable_key }}" - state: present - when: - - ceph_origin == 'repository' - - ceph_repository == 'community' - - ansible_pkg_mgr in ['yum', 'dnf'] - - name: add ceph stable repository - package: - name: http://download.ceph.com/rpm-{{ ceph_stable_release }}/{{ ceph_stable_redhat_distro }}/noarch/ceph-release-1-0.{{ ceph_stable_redhat_distro|replace('rhel', 'el') }}.noarch.rpm - state: present - changed_when: false - when: - - ceph_origin == 'repository' - - ceph_repository == 'community' - - ansible_pkg_mgr in ['yum', 'dnf'] - - name: Purge yum/dnf cache - command: "{{ ansible_pkg_mgr }} clean all" - when: - - ansible_pkg_mgr in ['yum', 'dnf'] - tags: - - skip_ansible_lint - - name: Set default priority for Ceph repos - command: > - yum-config-manager - --enable Ceph - --setopt="Ceph.priority=99" - --enable Ceph-noarch - --setopt="Ceph-noarch.priority=99" - when: - - ansible_pkg_mgr in ['yum', 'dnf'] + + - import_tasks: common-tasks/ceph-server.yml + - name: Create systemd service directory file: path: "/etc/systemd/system/ceph-mon@.service.d/" @@ -76,6 +32,7 @@ when: - ansible_pkg_mgr in ['yum', 'dnf'] - ansible_service_mgr == 'systemd' + - name: Add systemd override for PrivateDevices copy: dest: "/etc/systemd/system/ceph-mon@.service.d/ceph-mon-systemd-overrides.conf" @@ -85,12 +42,6 @@ when: - ansible_pkg_mgr in ['yum', 'dnf'] - ansible_service_mgr == 'systemd' - - name: Ensure Ansible can work with SELinux - package: - name: libselinux-python - state: present - when: - - ansible_pkg_mgr in ['yum', 'dnf'] # Set the priority of the ceph community apt repo either above or below that of UCA or distro sources - name: Set apt package pins @@ -146,48 +97,9 @@ vars_files: - "defaults/{{ install_method }}_install.yml" pre_tasks: - - include: common-tasks/os-log-dir-setup.yml - vars: - log_dirs: - - src: "/openstack/log/{{ inventory_hostname }}-ceph" - dest: "/var/log/ceph" - - include: common-tasks/unbound-clients.yml - static: no - when: - - hostvars['localhost']['resolvconf_enabled'] | bool - #TODO: mgariepy, revisit to use include_role when https://github.com/ansible/ansible/issues/20077 is fixed - - name: install the ceph stable repository key - rpm_key: - key: "{{ ceph_stable_key }}" - state: present - when: - - ceph_origin == 'repository' - - ceph_repository == 'community' - - ansible_pkg_mgr in ['yum', 'dnf'] - - name: add ceph stable repository - package: - name: http://download.ceph.com/rpm-{{ ceph_stable_release }}/{{ ceph_stable_redhat_distro }}/noarch/ceph-release-1-0.{{ ceph_stable_redhat_distro|replace('rhel', 'el') }}.noarch.rpm - state: present - changed_when: false - when: - - ceph_origin == 'repository' - - ceph_repository == 'community' - - ansible_pkg_mgr in ['yum', 'dnf'] - - name: Purge yum/dnf cache - command: "{{ ansible_pkg_mgr }} clean all" - when: - - ansible_pkg_mgr in ['yum', 'dnf'] - tags: - - skip_ansible_lint - - name: Set default priority for Ceph repos - command: > - yum-config-manager - --enable Ceph - --setopt="Ceph.priority=99" - --enable Ceph-noarch - --setopt="Ceph-noarch.priority=99" - when: - - ansible_pkg_mgr in ['yum', 'dnf'] + + - import_tasks: common-tasks/ceph-server.yml + - name: Gather ceph-mon facts action: setup delegate_to: "{{ item }}" diff --git a/playbooks/ceph-rgw-install.yml b/playbooks/ceph-rgw-install.yml index 4fb3cf9e07..f58f91bebf 100644 --- a/playbooks/ceph-rgw-install.yml +++ b/playbooks/ceph-rgw-install.yml @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -- include: ceph-rgw-keystone-setup.yml +- import_playbook: ceph-rgw-keystone-setup.yml when: (groups['ceph-rgw'] is defined and groups['ceph-rgw'] | length > 0) or (ceph_rgws | length > 0) - name: Install ceph radosgw @@ -22,15 +22,8 @@ vars_files: - "defaults/{{ install_method }}_install.yml" pre_tasks: - - include: common-tasks/os-log-dir-setup.yml - vars: - log_dirs: - - src: "/openstack/log/{{ inventory_hostname }}-ceph" - dest: "/var/log/ceph" - - include: common-tasks/os-lxc-container-setup.yml - when: not is_metal - static: no + - import_tasks: common-tasks/ceph-server.yml - name: Gather ceph-mon facts action: setup @@ -41,17 +34,7 @@ - inventory_hostname == ansible_play_hosts[0] tags: - ceph-mon-facts - - # Set the priority of the ceph community apt repo either above or below that of UCA or distro sources - - name: Set apt package pins - include_role: - name: apt_package_pinning - vars: - apt_package_pinning_file_name: "ceph_community_pin.pref" - apt_package_pinning_priority: "{{ (ceph_repository == 'community') | ternary(1000, 100) }}" - apt_pinned_packages: [{ package: '*', release: 'ceph.com' }] - when: - - ansible_pkg_mgr == 'apt' + - ceph-rgw roles: - role: ceph-defaults diff --git a/playbooks/common-tasks/ceph-server.yml b/playbooks/common-tasks/ceph-server.yml new file mode 100644 index 0000000000..ded8665321 --- /dev/null +++ b/playbooks/common-tasks/ceph-server.yml @@ -0,0 +1,84 @@ +--- +# Copyright 2017, Logan Vig +# +# 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: common-tasks/os-log-dir-setup.yml + vars: + log_dirs: + - src: "/openstack/log/{{ inventory_hostname }}-ceph" + dest: "/var/log/ceph" + +- include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml" + when: not is_metal + vars: + list_of_bind_mounts: "{{ ceph_container_bind_mounts }}" + +- include_tasks: common-tasks/unbound-clients.yml + when: + - hostvars['localhost']['resolvconf_enabled'] | bool + +#TODO: mgariepy, revisit to use include_role when https://github.com/ansible/ansible/issues/20077 is fixed +- name: Ensure Ansible can work with SELinux + package: + name: libselinux-python + state: present + when: + - ansible_pkg_mgr in ['yum', 'dnf'] + +- name: install the ceph stable repository key + rpm_key: + key: "{{ ceph_stable_key }}" + state: present + when: + - ceph_origin == 'repository' + - ceph_repository == 'community' + - ansible_pkg_mgr in ['yum', 'dnf'] + +- name: add ceph stable repository + package: + name: http://download.ceph.com/rpm-{{ ceph_stable_release }}/{{ ceph_stable_redhat_distro }}/noarch/ceph-release-1-0.{{ ceph_stable_redhat_distro|replace('rhel', 'el') }}.noarch.rpm + state: present + changed_when: false + when: + - ceph_origin == 'repository' + - ceph_repository == 'community' + - ansible_pkg_mgr in ['yum', 'dnf'] + +- name: Purge yum/dnf cache + command: "{{ ansible_pkg_mgr }} clean all" + when: + - ansible_pkg_mgr in ['yum', 'dnf'] + tags: + - skip_ansible_lint + +- name: Set default priority for Ceph repos + command: > + yum-config-manager + --enable Ceph + --setopt="Ceph.priority=99" + --enable Ceph-noarch + --setopt="Ceph-noarch.priority=99" + when: + - ansible_pkg_mgr in ['yum', 'dnf'] + +# Set the priority of the ceph community apt repo either above or below that of UCA or distro sources +- name: Set apt package pins + include_role: + name: apt_package_pinning + vars: + apt_package_pinning_file_name: "ceph_community_pin.pref" + apt_package_pinning_priority: "{{ (ceph_repository == 'community') | ternary(1000, 100) }}" + apt_pinned_packages: [{ package: '*', release: 'ceph.com' }] + when: + - ansible_pkg_mgr == 'apt'