From 8edbda96df6896d51703fcc250f562abb4011a2d Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Fri, 7 Sep 2018 18:15:43 +0530 Subject: [PATCH] use blocks directives to group tasks Using block directives simplifies the playbooks and makes them more readable. Fixes: https://github.com/ceph/ceph-ansible/issues/2835 Signed-off-by: Rishabh Dave --- .../purge-docker-cluster.yml | 195 +++++++--------- .../tasks/configure_cluster_name.yml | 56 ++--- roles/ceph-common/tasks/main.yml | 17 +- .../tasks/pre_requisites/prerequisites.yml | 87 ++++--- .../tasks/non-container/prerequisites.yml | 89 ++++---- .../tasks/pre_requisite_non_container.yml | 214 +++--------------- .../pre_requisite_non_container_debian.yml | 90 ++++++++ .../pre_requisite_non_container_red_hat.yml | 54 +++++ roles/ceph-osd/tasks/system_tuning.yml | 28 +-- roles/ceph-validate/tasks/check_system.yml | 72 +++--- roles/ceph-validate/tasks/main.yml | 31 +-- tests/functional/setup.yml | 58 ++--- 12 files changed, 474 insertions(+), 517 deletions(-) create mode 100644 roles/ceph-nfs/tasks/pre_requisite_non_container_debian.yml create mode 100644 roles/ceph-nfs/tasks/pre_requisite_non_container_red_hat.yml diff --git a/infrastructure-playbooks/purge-docker-cluster.yml b/infrastructure-playbooks/purge-docker-cluster.yml index 96b081839..2a87d1f5b 100644 --- a/infrastructure-playbooks/purge-docker-cluster.yml +++ b/infrastructure-playbooks/purge-docker-cluster.yml @@ -493,19 +493,28 @@ when: not is_atomic ignore_errors: true - - name: remove docker-py on Debian - pip: - name: docker-py - state: absent - when: - - ansible_distribution == 'Debian' + - name: debian based systems tasks + block: + - name: remove docker-py on debian + pip: + name: docker-py + state: absent - - name: remove six on Debian - pip: - name: six - state: absent - when: - - ansible_distribution == 'Debian' + - name: remove six on debian + pip: + name: six + state: absent + + - name: remove pip and docker on debian + apt: + name: "{{ item }}" + state: absent + update_cache: yes + autoremove: yes + with_items: + - python-pip + - docker-engine + when: ansible_distribution == 'Debian' - name: remove pip and docker on ubuntu apt: @@ -519,109 +528,75 @@ - docker.io when: ansible_distribution == 'Ubuntu' - - name: remove pip and docker on debian - apt: - name: "{{ item }}" - state: absent - update_cache: yes - autoremove: yes - with_items: - - python-pip - - docker-engine - when: ansible_distribution == 'Debian' + - name: red hat based systems tasks + block: + - name: remove epel-release on redhat + yum: + name: epel-release + state: absent - - name: remove epel-release on redhat - yum: - name: epel-release - state: absent + - name: yum related tasks on red hat + block: + - name: remove pip on redhat + yum: + name: "{{ item }}" + state: absent + with_items: + - python-pip + + - name: remove docker-engine on redhat + yum: + name: "{{ item }}" + state: absent + with_items: + - docker-engine + + # for CentOS + - name: remove docker on redhat + yum: + name: "{{ item }}" + state: absent + with_items: + - docker + + - name: remove package dependencies on redhat + command: yum -y autoremove + args: + warn: no + + - name: remove package dependencies on redhat again + command: yum -y autoremove + args: + warn: no + when: + ansible_pkg_mgr == "yum" + + - name: dnf related tasks on red hat + block: + - name: remove pip and docker on redhat + dnf: + name: "{{ item }}" + state: absent + with_items: + - python-pip + - docker-engine + - docker + + - name: remove package dependencies on redhat + command: dnf -y autoremove + args: + warn: no + + - name: remove package dependencies on redhat again + command: dnf -y autoremove + args: + warn: no + when: + ansible_pkg_mgr == "dnf" when: ansible_os_family == 'RedHat' and not is_atomic - - name: remove pip on redhat - yum: - name: "{{ item }}" - state: absent - with_items: - - python-pip - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "yum" and - not is_atomic - - - name: remove docker-engine on redhat - yum: - name: "{{ item }}" - state: absent - with_items: - - docker-engine - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "yum" and - not is_atomic - - # for CentOS - - name: remove docker on redhat - yum: - name: "{{ item }}" - state: absent - with_items: - - docker - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "yum" and - not is_atomic - - - name: remove pip and docker on redhat - dnf: - name: "{{ item }}" - state: absent - with_items: - - python-pip - - docker-engine - - docker - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "dnf" and - not is_atomic - - - name: remove package dependencies on redhat - command: yum -y autoremove - args: - warn: no - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "yum" and - not is_atomic - - - name: remove package dependencies on redhat again - command: yum -y autoremove - args: - warn: no - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "yum" and - not is_atomic - - - name: remove package dependencies on redhat - command: dnf -y autoremove - args: - warn: no - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "dnf" and - not is_atomic - - - name: remove package dependencies on redhat again - command: dnf -y autoremove - args: - warn: no - when: - ansible_os_family == 'RedHat' and - ansible_pkg_mgr == "dnf" and - not is_atomic - - - name: purge ceph directories hosts: diff --git a/roles/ceph-common/tasks/configure_cluster_name.yml b/roles/ceph-common/tasks/configure_cluster_name.yml index d516c27f5..16b3f587c 100644 --- a/roles/ceph-common/tasks/configure_cluster_name.yml +++ b/roles/ceph-common/tasks/configure_cluster_name.yml @@ -19,34 +19,36 @@ # - Jewel from latest Canonical 16.04 distro # - All previous versions from Canonical # - Infernalis from ceph.com -- name: check /etc/default/ceph exist - stat: - path: /etc/default/ceph - register: etc_default_ceph - check_mode: no - when: - - ansible_os_family == "Debian" +- name: debian based systems - configure cluster name + block: + - name: check /etc/default/ceph exist + stat: + path: /etc/default/ceph + register: etc_default_ceph + check_mode: no -- name: configure cluster name - lineinfile: - dest: /etc/default/ceph - insertafter: EOF - create: yes - regexp: "^CLUSTER=" - line: "CLUSTER={{ cluster }}" - when: - - ansible_os_family == "Debian" - - etc_default_ceph.stat.exists - - not etc_default_ceph.stat.isdir + - name: configure cluster name + block: + - name: when /etc/default/ceph is not dir + lineinfile: + dest: /etc/default/ceph + insertafter: EOF + create: yes + regexp: "^CLUSTER=" + line: "CLUSTER={{ cluster }}" + when: + - not etc_default_ceph.stat.isdir -- name: configure cluster name - lineinfile: - dest: /etc/default/ceph/ceph - insertafter: EOF - create: yes - regexp: "^CLUSTER=" - line: "CLUSTER={{ cluster }}" + - name: when /etc/default/ceph is dir + lineinfile: + dest: /etc/default/ceph/ceph + insertafter: EOF + create: yes + regexp: "^CLUSTER=" + line: "CLUSTER={{ cluster }}" + when: + - etc_default_ceph.stat.isdir + when: + - etc_default_ceph.stat.exists when: - ansible_os_family == "Debian" - - etc_default_ceph.stat.exists - - etc_default_ceph.stat.isdir diff --git a/roles/ceph-common/tasks/main.yml b/roles/ceph-common/tasks/main.yml index 894bf8e8a..1e1a1e7cf 100644 --- a/roles/ceph-common/tasks/main.yml +++ b/roles/ceph-common/tasks/main.yml @@ -11,11 +11,18 @@ tags: - package-install -- name: include_tasks installs/install_on_debian.yml - include_tasks: installs/install_on_debian.yml - when: ansible_os_family == 'Debian' - tags: - - package-install +- name: debian based systems tasks + block: + - name: include installs/install_on_debian.yml + include_tasks: installs/install_on_debian.yml + tags: + - package-install + - name: include ntp debian setup tasks + include_tasks: "misc/ntp_debian.yml" + when: + - ntp_service_enabled + when: + - ansible_os_family == 'Debian' - name: include_tasks installs/install_on_clear.yml include_tasks: installs/install_on_clear.yml diff --git a/roles/ceph-docker-common/tasks/pre_requisites/prerequisites.yml b/roles/ceph-docker-common/tasks/pre_requisites/prerequisites.yml index 1124264e1..d28f7f0b5 100644 --- a/roles/ceph-docker-common/tasks/pre_requisites/prerequisites.yml +++ b/roles/ceph-docker-common/tasks/pre_requisites/prerequisites.yml @@ -2,22 +2,39 @@ - name: include remove_ceph_udev_rules.yml include_tasks: remove_ceph_udev_rules.yml -- name: include debian_prerequisites.yml - include_tasks: debian_prerequisites.yml +- name: debian based systems tasks + block: + - name: include debian_prerequisites.yml + include_tasks: debian_prerequisites.yml + tags: + with_pkg + - name: install python-six + package: + name: python-six + state: present + update_cache: yes + tags: + with_pkg when: - ansible_distribution == 'Debian' - tags: - with_pkg -- name: install docker on ubuntu - package: - name: docker.io - state: present - update_cache: yes +- name: ubuntu based systems tasks + block: + - name: install docker on ubuntu + package: + name: docker.io + state: present + update_cache: yes + tags: + with_pkg + - name: install python-docker on ubuntu + package: + name: python-docker + state: present + tags: + with_pkg when: - ansible_distribution == 'Ubuntu' - tags: - with_pkg # ensure extras enabled for docker - name: enable extras on centos @@ -31,42 +48,22 @@ tags: with_pkg -- name: install python-six - package: - name: python-six - state: present - update_cache: yes - when: - - ansible_distribution != 'Debian' - tags: - with_pkg - -- name: install python-docker-py on red hat / centos - package: - name: python-docker-py - state: present +- name: red hat based systems tasks + block: + - name: install python-docker-py on red hat / centos + package: + name: python-docker-py + state: present + tags: + with_pkg + - name: install docker on red hat / centos + package: + name: docker + state: present + tags: + with_pkg when: - ansible_os_family == 'RedHat' - tags: - with_pkg - -- name: install python-docker on ubuntu - package: - name: python-docker - state: present - when: - - ansible_distribution == 'Ubuntu' - tags: - with_pkg - -- name: install docker on red hat / centos - package: - name: docker - state: present - when: - - ansible_os_family == 'RedHat' - tags: - with_pkg - name: pause after docker install before starting (on openstack vms) pause: seconds=5 diff --git a/roles/ceph-iscsi-gw/tasks/non-container/prerequisites.yml b/roles/ceph-iscsi-gw/tasks/non-container/prerequisites.yml index 59ebf268b..4ccbe70cf 100644 --- a/roles/ceph-iscsi-gw/tasks/non-container/prerequisites.yml +++ b/roles/ceph-iscsi-gw/tasks/non-container/prerequisites.yml @@ -1,55 +1,48 @@ --- -- name: set_fact ceph_iscsi_repos - set_fact: - ceph_iscsi_repos: - - ceph-iscsi-config - - tcmu-runner - - python-rtslib - - ceph-iscsi-cli - when: - - ansible_os_family == 'RedHat' - - ceph_origin == 'repository' - - ceph_repository == 'dev' - - ceph_iscsi_config_dev +- name: red hat based systems tasks + block: + - name: when ceph_iscsi_config_dev is true + block: + - name: set_fact ceph_iscsi_repos + set_fact: + ceph_iscsi_repos: + - ceph-iscsi-config + - tcmu-runner + - python-rtslib + - ceph-iscsi-cli -- name: fetch ceph-iscsi-config red hat development repository - uri: - url: https://shaman.ceph.com/api/repos/{{ item }}/{{ ceph_dev_branch }}/{{ ceph_dev_sha1 }}/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/repo - return_content: yes - register: ceph_iscsi_config_dev_yum_repo - with_items: "{{ ceph_iscsi_repos }}" - when: - - ansible_os_family == 'RedHat' - - ceph_origin == 'repository' - - ceph_repository == 'dev' - - ceph_iscsi_config_dev + - name: fetch ceph-iscsi-config development repository + uri: + url: https://shaman.ceph.com/api/repos/{{ item }}/{{ ceph_dev_branch }}/{{ ceph_dev_sha1 }}/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/repo + return_content: yes + register: ceph_iscsi_config_dev_yum_repo + with_items: "{{ ceph_iscsi_repos }}" -- name: configure ceph-iscsi-config red hat development repository - copy: - content: "{{ item.0.content }}" - dest: "/etc/yum.repos.d/{{ item.1 }}-dev.repo" - owner: root - group: root - backup: yes - with_together: - - "{{ ceph_iscsi_config_dev_yum_repo.results }}" - - "{{ ceph_iscsi_repos }}" - when: - - ansible_os_family == 'RedHat' - - ceph_origin == 'repository' - - ceph_repository == 'dev' - - ceph_iscsi_config_dev + - name: configure ceph-iscsi-config development repository + copy: + content: "{{ item.0.content }}" + dest: "/etc/yum.repos.d/{{ item.1 }}-dev.repo" + owner: root + group: root + backup: yes + with_together: + - "{{ ceph_iscsi_config_dev_yum_repo.results }}" + - "{{ ceph_iscsi_repos }}" + when: + - ceph_origin == 'repository' + - ceph_repository == 'dev' + - ceph_iscsi_config_dev -- name: install redhat ceph iscsi package - package: - name: "{{ item }}" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - with_items: - - tcmu-runner - - ceph-iscsi-config - - targetcli - - python-rtslib - - ceph-iscsi-cli + - name: install ceph iscsi package + package: + name: "{{ item }}" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + with_items: + - tcmu-runner + - ceph-iscsi-config + - targetcli + - python-rtslib + - ceph-iscsi-cli when: - ansible_os_family == 'RedHat' diff --git a/roles/ceph-nfs/tasks/pre_requisite_non_container.yml b/roles/ceph-nfs/tasks/pre_requisite_non_container.yml index aa0122aad..3115ed533 100644 --- a/roles/ceph-nfs/tasks/pre_requisite_non_container.yml +++ b/roles/ceph-nfs/tasks/pre_requisite_non_container.yml @@ -1,119 +1,12 @@ --- -- name: add nfs-ganesha stable repository - yum_repository: - name: nfs_ganesha_stable - description: nfs-ganesha stable repo - gpgcheck: yes - state: present - gpgkey: "{{ ceph_stable_key }}" - baseurl: "{{ ceph_mirror }}/nfs-ganesha/rpm-{{ nfs_ganesha_stable_branch }}/{{ ceph_release }}/$basearch" +- name: include red hat based system related tasks + include_tasks: pre_requisite_non_container_red_hat.yml when: - ansible_os_family == 'RedHat' - - nfs_ganesha_stable - - ceph_origin == 'repository' - - ceph_repository == 'community' -- name: fetch nfs-ganesha red hat development repository - uri: - url: https://shaman.ceph.com/api/repos/nfs-ganesha/next/latest/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/flavors/{{ nfs_ganesha_flavor }}/repo - return_content: yes - register: nfs_ganesha_dev_yum_repo +- name: include debian based system related tasks + include_tasks: pre_requisite_non_container_debian.yml when: - - ansible_os_family == 'RedHat' - - nfs_ganesha_dev - - ceph_origin == 'repository' - - ceph_repository == 'dev' - -- name: add nfs-ganesha development repository - copy: - content: "{{ nfs_ganesha_dev_yum_repo.content }}" - dest: /etc/yum.repos.d/nfs-ganesha-dev.repo - owner: root - group: root - backup: yes - when: - - ansible_os_family == 'RedHat' - - nfs_ganesha_dev - - ceph_origin == 'repository' - - ceph_repository == 'dev' - -- name: add nfs-ganesha stable repository - apt_repository: - repo: "deb {{ nfs_ganesha_stable_deb_repo }} {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main" - state: present - update_cache: no - register: add_ganesha_apt_repo - when: - - ansible_os_family == 'Debian' - - nfs_ganesha_stable - - ceph_origin == 'repository' - - ceph_repository == 'community' - -- name: update apt cache - apt: - update_cache: yes - register: update_ganesha_apt_cache - retries: 5 - delay: 2 - until: update_ganesha_apt_cache | success - when: - - ansible_os_family == 'Debian' - - nfs_ganesha_stable - - ceph_origin == 'repository' - - ceph_repository == 'community' - - add_ganesha_apt_repo | changed - -- name: fetch nfs-ganesha development repository - uri: - url: https://shaman.ceph.com/api/repos/nfs-ganesha/next/latest/{{ ansible_distribution | lower }}/{{ ansible_distribution_release }}/flavors/{{ nfs_ganesha_flavor }}/repo - return_content: yes - register: nfs_ganesha_apt_repo - when: - - ansible_os_family == 'Debian' - - nfs_ganesha_dev - - ceph_origin == 'repository' - - ceph_repository == 'dev' - -- name: add nfs-ganesha development repository - copy: - content: "{{ nfs_ganesha_dev_apt_repo.content }}" - dest: /etc/apt/sources.list.d/nfs-ganesha-dev.list - owner: root - group: root - backup: yes - when: - - ansible_os_family == 'Debian' - - nfs_ganesha_dev - - ceph_origin == 'repository' - - ceph_repository == 'dev' - -- name: install nfs cephfs gateway - package: - name: nfs-ganesha-ceph - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - nfs_file_gw - - ansible_os_family == 'RedHat' - -- name: install redhat nfs-ganesha-rgw and ceph-radosgw packages - package: - name: "{{ item }}" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - with_items: - - nfs-ganesha-rgw - - ceph-radosgw - when: - - nfs_obj_gw - - ansible_os_family == 'RedHat' - -- name: install jemalloc for debian - apt: - name: libjemalloc1 - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - update_cache: yes - when: - - (ceph_origin == 'repository' or ceph_origin == 'distro') - - ceph_repository != 'rhcs' - ansible_os_family == 'Debian' - name: install nfs rgw/cephfs gateway - suse @@ -130,50 +23,6 @@ - ansible_os_family == 'Suse' - item.install | bool -- name: install nfs rgw/cephfs gateway - debian - apt: - name: "{{ item.name }}" - allow_unauthenticated: yes - with_items: - - { name: 'nfs-ganesha-rgw', install: "{{ nfs_obj_gw }}" } - - { name: 'radosgw', install: "{{ nfs_obj_gw }}" } - - { name: 'nfs-ganesha-ceph', install: "{{ nfs_file_gw }}" } - when: - - (ceph_origin == 'repository' or ceph_origin == 'distro') - - ceph_repository != 'rhcs' - - ansible_os_family == 'Debian' - - item.install | bool - -# debian_rhcs installation -- name: install red hat storage nfs gateway for debian - apt: - name: nfs-ganesha - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - ansible_os_family == 'Debian' - - (ceph_origin == 'repository' or ceph_origin == 'distro') - - ceph_repository == 'rhcs' - -- name: install red hat storage nfs file gateway - apt: - name: nfs-ganesha-ceph - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - ansible_os_family == 'Debian' - - (ceph_origin == 'repository' or ceph_origin == 'distro') - - ceph_repository == 'rhcs' - - nfs_file_gw - -- name: install red hat storage nfs obj gateway - apt: - name: nfs-ganesha-rgw - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - ansible_os_family == 'Debian' - - (ceph_origin == 'repository' or ceph_origin == 'distro') - - ceph_repository == 'rhcs' - - nfs_obj_gw - # NOTE (leseb): we use root:ceph for permissions since ganesha # does not have the right selinux context to read ceph directories. - name: create rados gateway and ganesha directories @@ -193,36 +42,37 @@ when: - item.create|bool -- name: copy bootstrap cephx keys - copy: - src: "{{ fetch_directory }}/{{ fsid }}{{ item.name }}" - dest: "{{ item.name }}" - owner: "ceph" - group: "ceph" - mode: "0600" - with_items: - - { name: "/var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring", copy_key: "{{ nfs_obj_gw }}" } - when: - - cephx - - item.copy_key|bool +- name: cephx related tasks + block: + - name: copy bootstrap cephx keys + copy: + src: "{{ fetch_directory }}/{{ fsid }}{{ item.name }}" + dest: "{{ item.name }}" + owner: "ceph" + group: "ceph" + mode: "0600" + with_items: + - { name: "/var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring", copy_key: "{{ nfs_obj_gw }}" } + when: + - item.copy_key|bool -- name: create rados gateway keyring - command: ceph --cluster {{ cluster }} --name client.bootstrap-rgw --keyring /var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring auth get-or-create client.rgw.{{ ansible_hostname }} osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring - args: - creates: /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring - changed_when: false - when: - - nfs_obj_gw - - cephx + - name: nfs object gateway related tasks + block: + - name: create rados gateway keyring + command: ceph --cluster {{ cluster }} --name client.bootstrap-rgw --keyring /var/lib/ceph/bootstrap-rgw/{{ cluster }}.keyring auth get-or-create client.rgw.{{ ansible_hostname }} osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring + args: + creates: /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring + changed_when: false -- name: set rados gateway key permissions - file: - path: /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring - owner: "ceph" - group: "ceph" - mode: "0600" + - name: set rados gateway key permissions + file: + path: /var/lib/ceph/radosgw/{{ cluster }}-rgw.{{ ansible_hostname }}/keyring + owner: "ceph" + group: "ceph" + mode: "0600" + when: + - nfs_obj_gw when: - - nfs_obj_gw - cephx - name: change ownership on /var/log/ganesha diff --git a/roles/ceph-nfs/tasks/pre_requisite_non_container_debian.yml b/roles/ceph-nfs/tasks/pre_requisite_non_container_debian.yml new file mode 100644 index 000000000..b1c3d9a0a --- /dev/null +++ b/roles/ceph-nfs/tasks/pre_requisite_non_container_debian.yml @@ -0,0 +1,90 @@ +--- +- name: debian based systems - repo handling + block: + - name: stable repos specific tasks + block: + - name: add nfs-ganesha stable repository + apt_repository: + repo: "deb {{ nfs_ganesha_stable_deb_repo }} {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main" + state: present + update_cache: no + register: add_ganesha_apt_repo + + - name: update apt cache + apt: + update_cache: yes + register: update_ganesha_apt_cache + retries: 5 + delay: 2 + until: update_ganesha_apt_cache | success + when: + - add_ganesha_apt_repo | changed + when: + - nfs_ganesha_stable + - ceph_repository == 'community' + + - name: debian based systems - dev repos specific tasks + block: + - name: fetch nfs-ganesha development repository + uri: + url: https://shaman.ceph.com/api/repos/nfs-ganesha/next/latest/{{ ansible_distribution | lower }}/{{ ansible_distribution_release }}/flavors/{{ nfs_ganesha_flavor }}/repo + return_content: yes + register: nfs_ganesha_apt_repo + + - name: add nfs-ganesha development repository + copy: + content: "{{ nfs_ganesha_dev_apt_repo.content }}" + dest: /etc/apt/sources.list.d/nfs-ganesha-dev.list + owner: root + group: root + backup: yes + when: + - nfs_ganesha_dev + - ceph_repository == 'dev' + when: + - ceph_origin == 'repository' + +- name: debain based systems - install required packages + block: + - name: debian based systems- non-rhcs installation + block: + - name: install jemalloc for debian + apt: + name: libjemalloc1 + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + update_cache: yes + - name: install nfs rgw/cephfs gateway - debian + apt: + name: "{{ item.name }}" + allow_unauthenticated: yes + with_items: + - { name: 'nfs-ganesha-rgw', install: "{{ nfs_obj_gw }}" } + - { name: 'radosgw', install: "{{ nfs_obj_gw }}" } + - { name: 'nfs-ganesha-ceph', install: "{{ nfs_file_gw }}" } + when: + - item.install | bool + when: + - (ceph_origin == 'repository' or ceph_origin == 'distro') + - ceph_repository != 'rhcs' + + - name: debian based systems - rhcs installation + block: + - name: install red hat storage nfs gateway for debian + apt: + name: nfs-ganesha + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + - name: install red hat storage nfs file gateway + apt: + name: nfs-ganesha-ceph + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - nfs_file_gw + - name: install red hat storage nfs obj gateway + apt: + name: nfs-ganesha-rgw + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - nfs_obj_gw + when: + - (ceph_origin == 'repository' or ceph_origin == 'distro') + - ceph_repository == 'rhcs' diff --git a/roles/ceph-nfs/tasks/pre_requisite_non_container_red_hat.yml b/roles/ceph-nfs/tasks/pre_requisite_non_container_red_hat.yml new file mode 100644 index 000000000..bc4bd9169 --- /dev/null +++ b/roles/ceph-nfs/tasks/pre_requisite_non_container_red_hat.yml @@ -0,0 +1,54 @@ +--- +- name: red hat based systems - repo handling + block: + - name: add nfs-ganesha stable repository + yum_repository: + name: nfs_ganesha_stable + description: nfs-ganesha stable repo + gpgcheck: yes + state: present + gpgkey: "{{ ceph_stable_key }}" + baseurl: "{{ ceph_mirror }}/nfs-ganesha/rpm-{{ nfs_ganesha_stable_branch }}/{{ ceph_release }}/$basearch" + when: + - nfs_ganesha_stable + - ceph_repository == 'community' + + - name: red hat based systems - dev repo related tasks + block: + - name: fetch nfs-ganesha red hat development repository + uri: + url: https://shaman.ceph.com/api/repos/nfs-ganesha/next/latest/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/flavors/{{ nfs_ganesha_flavor }}/repo + return_content: yes + register: nfs_ganesha_dev_yum_repo + + - name: add nfs-ganesha development repository + copy: + content: "{{ nfs_ganesha_dev_yum_repo.content }}" + dest: /etc/yum.repos.d/nfs-ganesha-dev.repo + owner: root + group: root + backup: yes + when: + - nfs_ganesha_dev + - ceph_repository == 'dev' + when: + - ceph_origin == 'repository' + +- name: red hat based systems - install nfs packages + block: + - name: install nfs cephfs gateway + package: + name: nfs-ganesha-ceph + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - nfs_file_gw + + - name: install redhat nfs-ganesha-rgw and ceph-radosgw packages + package: + name: "{{ item }}" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + with_items: + - nfs-ganesha-rgw + - ceph-radosgw + when: + - nfs_obj_gw diff --git a/roles/ceph-osd/tasks/system_tuning.yml b/roles/ceph-osd/tasks/system_tuning.yml index a1e3eb58d..e956b35b9 100644 --- a/roles/ceph-osd/tasks/system_tuning.yml +++ b/roles/ceph-osd/tasks/system_tuning.yml @@ -1,21 +1,17 @@ --- -- name: disable osd directory parsing by updatedb - command: updatedb -e /var/lib/ceph - changed_when: false - failed_when: false +- name: debian based systems tasks + block: + - name: disable osd directory parsing by updatedb + command: updatedb -e /var/lib/ceph + changed_when: false + failed_when: false + - name: disable osd directory path in updatedb.conf + replace: + dest: /etc/updatedb.conf + regexp: '^(PRUNEPATHS(?!.*/var/lib/ceph).*)"$' + replace: '\1 /var/lib/ceph"' + failed_when: false when: - - ansible_os_family == "Debian" - - osd_objectstore == 'filestore' - - ansible_os_family == "Debian" - -- name: disable osd directory path in updatedb.conf - replace: - dest: /etc/updatedb.conf - regexp: '^(PRUNEPATHS(?!.*/var/lib/ceph).*)"$' - replace: '\1 /var/lib/ceph"' - failed_when: false - when: - - ansible_os_family == "Debian" - osd_objectstore == 'filestore' - ansible_os_family == "Debian" diff --git a/roles/ceph-validate/tasks/check_system.yml b/roles/ceph-validate/tasks/check_system.yml index 2fc8651ec..bcce73501 100644 --- a/roles/ceph-validate/tasks/check_system.yml +++ b/roles/ceph-validate/tasks/check_system.yml @@ -17,33 +17,33 @@ when: - ansible_os_family not in ['Debian', 'RedHat', 'ClearLinux', 'Suse'] -- name: fail on unsupported distribution for red hat ceph storage - fail: - msg: "Distribution not supported {{ ansible_distribution_version }} by Red Hat Ceph Storage, only RHEL >= 7.3" - when: - - ansible_distribution == 'Red Hat Enterprise Linux' - - ceph_repository == 'rhcs' - - ansible_distribution_version is version_compare('7.3', '<') +- name: red hat based systems tasks + block: + - name: fail on unsupported distribution for red hat ceph storage + fail: + msg: "Distribution not supported {{ ansible_distribution_version }} by Red Hat Ceph Storage, only RHEL >= 7.3" + when: + - ansible_distribution_version | version_compare('7.3', '<') -- name: determine if node is registered with subscription-manager - command: subscription-manager identity - register: subscription - changed_when: false - failed_when: false - check_mode: no - when: - - ansible_distribution == 'Red Hat Enterprise Linux' - - ceph_repository == 'rhcs' - - ceph_repository_type == 'cdn' + - name: subscription manager related tasks + block: + - name: determine if node is registered with subscription-manager + command: subscription-manager identity + register: subscription + changed_when: false + failed_when: false + check_mode: no -- name: fail on unregistered red hat rhcs linux - fail: - msg: "You must register your machine with subscription-manager" + - name: fail on unregistered red hat rhcs linux + fail: + msg: "You must register your machine with subscription-manager" + when: + - subscription.rc != '0' + when: + - ceph_repository_type == 'cdn' when: - - ansible_distribution == 'Red Hat Enterprise Linux' - ceph_repository == 'rhcs' - - ceph_repository_type == 'cdn' - - subscription.rc != '0' + - ansible_distribution == 'Red Hat Enterprise Linux' - name: fail on unsupported distribution for ubuntu cloud archive fail: @@ -78,19 +78,21 @@ when: - ansible_service_mgr != 'systemd' -- name: fail on unsupported distribution for iscsi gateways - fail: - msg: "iSCSI gateways can only be deployed on Red Hat Enterprise Linux or CentOS" - when: - - ansible_distribution not in ['RedHat', 'CentOS'] - - iscsi_gw_group_name in group_names +- name: check if iscsi gateways is target on supported distros and versions + block: + - name: fail on unsupported distribution for iscsi gateways + fail: + msg: "iSCSI gateways can only be deployed on Red Hat Enterprise Linux or CentOS" + when: + - ansible_distribution not in ['RedHat', 'CentOS'] -- name: fail on unsupported distribution version for iscsi gateways - fail: - msg: "iSCSI gateways can only be deployed on Red Hat Enterprise Linux or CentOS >= 7.4" + - name: fail on unsupported distribution version for iscsi gateways + fail: + msg: "iSCSI gateways can only be deployed on Red Hat Enterprise Linux or CentOS >= 7.4" + when: + - ansible_distribution_version < '7.4' + - ansible_distribution in ['RedHat', 'CentOS'] when: - - ansible_distribution in ['RedHat', 'CentOS'] - - ansible_distribution_version < '7.4' - iscsi_gw_group_name in group_names - name: warn users that ceph-disk scenarios will be removed on 3.3 @@ -99,4 +101,4 @@ run_once: true when: - osd_group_name in group_names - - osd_scenario != 'lvm' \ No newline at end of file + - osd_scenario != 'lvm' diff --git a/roles/ceph-validate/tasks/main.yml b/roles/ceph-validate/tasks/main.yml index 6efab8170..b732b2b89 100644 --- a/roles/ceph-validate/tasks/main.yml +++ b/roles/ceph-validate/tasks/main.yml @@ -10,23 +10,24 @@ - mon_use_fqdn or mds_use_fqdn - not use_fqdn_yes_i_am_sure -- name: fail if local scenario is enabled on debian - fail: - msg: "'local' installation scenario not supported on Debian systems" +- name: debian based systems tasks + block: + - name: fail if local scenario is enabled on debian + fail: + msg: "'local' installation scenario not supported on Debian systems" + when: + - ceph_origin == 'local' + - name: verify that ceph_rhcs_cdn_debian_repo url is valid for red hat storage + fail: + msg: "ceph_rhcs_cdn_debian_repo url is invalid, please set your customername:customerpasswd" + when: + - ceph_origin == 'repository' + - ceph_repository == 'rhcs' + - ceph_repository_type == 'cdn' + - ceph_rhcs_cdn_debian_repo == 'https://customername:customerpasswd@rhcs.download.redhat.com' + - ceph_repository not in ['rhcs', 'dev', 'obs'] when: - ansible_os_family == 'Debian' - - ceph_origin == 'local' - -- name: verify that ceph_rhcs_cdn_debian_repo url is valid for red hat storage - fail: - msg: "ceph_rhcs_cdn_debian_repo url is invalid, please set your customername:customerpasswd" - when: - - ceph_origin == 'repository' - - ceph_repository == 'rhcs' - - ceph_repository_type == 'cdn' - - ansible_os_family == 'Debian' - - ceph_rhcs_cdn_debian_repo == 'https://customername:customerpasswd@rhcs.download.redhat.com' - - ceph_repository not in ['rhcs', 'dev', 'obs'] - name: validate ntp daemon type fail: diff --git a/tests/functional/setup.yml b/tests/functional/setup.yml index 6b1845668..989ae5078 100644 --- a/tests/functional/setup.yml +++ b/tests/functional/setup.yml @@ -23,40 +23,30 @@ when: - not is_atomic - - name: disable fastest mirror detection - ini_file: - path: /etc/yum/pluginconf.d/fastestmirror.conf - section: main - option: enabled - value: 0 - when: - - ansible_distribution == 'CentOS' - - not is_atomic - - - name: install epel - package: - name: epel-release - state: present - when: - - ansible_distribution == 'CentOS' - - not is_atomic - - - name: enable local epel repository - ini_file: - path: /etc/yum.repos.d/epel.repo - section: epel - option: baseurl - value: http://apt-mirror.front.sepia.ceph.com/epel7/ - when: - - ansible_distribution == 'CentOS' - - not is_atomic - - - name: disable remote epel repository - ini_file: - path: /etc/yum.repos.d/epel.repo - section: epel - option: metalink - state: absent + - name: centos based systems - configure repos + block: + - name: disable fastest mirror detection + ini_file: + path: /etc/yum/pluginconf.d/fastestmirror.conf + section: main + option: enabled + value: 0 + - name: install epel + package: + name: epel-release + state: present + - name: enable local epel repository + ini_file: + path: /etc/yum.repos.d/epel.repo + section: epel + option: baseurl + value: http://apt-mirror.front.sepia.ceph.com/epel7/ + - name: disable remote epel repository + ini_file: + path: /etc/yum.repos.d/epel.repo + section: epel + option: metalink + state: absent when: - ansible_distribution == 'CentOS' - not is_atomic