From ae2fd459947f87fb849d1ae9cbdc4a41524fdb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Han?= Date: Thu, 3 Aug 2017 15:30:25 +0200 Subject: [PATCH] common: refactor installation method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The installation process is now described as follow: * you still have to choose a 'ceph_origin' installation method. The origin can be a 'repository' (add a new repository), distro (it will use the packages provided by the native repo source of your distribution), local (only available on redhat system, it installs locally built packages). This option is not well tested, so use it carefully * if ceph_origin == 'repository' you will have to decide what kind of repository you want to enable: - community: corresponds to the stable upstream/community version - enterprise: corresponds to the stable enterprise/downstream version (basically you are a red hat customer) - dev: it will install ceph from packages built out of the github development branches Signed-off-by: Sébastien Han Co-Authored-by: Guillaume Abrioux Signed-off-by: Guillaume Abrioux --- docs/source/index.rst | 27 +-- docs/source/installation/methods.rst | 68 +++++++ group_vars/all.yml.sample | 179 ++++++++++-------- group_vars/rhcs.yml.sample | 179 ++++++++++-------- rhcs_edits.txt | 3 +- .../tasks/checks/check_mandatory_vars.yml | 59 +++--- .../ceph-common/tasks/checks/check_system.yml | 27 ++- ...nfigure_debian_repository_installation.yml | 26 +++ .../configure_redhat_local_installation.yml | 46 +++++ ...nfigure_redhat_repository_installation.yml | 26 +++ .../tasks/installs/debian_ceph_repository.yml | 58 ------ .../installs/debian_community_repository.yml | 23 +++ .../installs/debian_custom_repository.yml | 6 + .../tasks/installs/debian_dev_repository.yml | 12 ++ .../installs/debian_enterprise_repository.yml | 4 + .../tasks/installs/debian_uca_repository.yml | 10 + ...=> install_debian_enterprise_packages.yml} | 26 +-- .../installs/install_debian_packages.yml | 62 ++++++ .../tasks/installs/install_on_debian.yml | 73 ++----- .../tasks/installs/install_on_redhat.yml | 154 +-------------- .../installs/install_redhat_packages.yml | 105 ++++++++++ .../installs/install_rh_storage_on_redhat.yml | 80 -------- .../prerequisite_rhcs_cdn_install.yml | 6 - .../prerequisite_rhcs_cdn_install_debian.yml | 0 .../prerequisite_rhcs_iso_install.yml | 26 +-- .../tasks/installs/redhat_ceph_repository.yml | 46 ----- .../installs/redhat_community_repository.yml | 14 ++ .../installs/redhat_custom_repository.yml | 7 + .../tasks/installs/redhat_dev_repository.yml | 14 ++ .../installs/redhat_enterprise_repository.yml | 8 + roles/ceph-common/tasks/main.yml | 53 +----- roles/ceph-config/tasks/main.yml | 4 +- roles/ceph-defaults/defaults/main.yml | 179 ++++++++++-------- .../centos/7/bluestore/group_vars/all | 3 +- .../centos/7/bs-crypt-ded-jrn/group_vars/all | 3 +- .../centos/7/bs-crypt-jrn-col/group_vars/all | 3 +- .../7/bs-dock-crypt-jrn-col/group_vars/all | 1 - .../centos/7/bs-dock-ded-jrn/group_vars/all | 1 - .../centos/7/bs-docker/group_vars/all | 1 - .../centos/7/bs-jrn-col/group_vars/all | 3 +- .../centos/7/cluster/group_vars/all | 3 +- .../centos/7/crypt-ded-jrn/group_vars/all | 3 +- .../centos/7/crypt-jrn-col/group_vars/all | 3 +- .../7/docker-crypt-jrn-col/group_vars/all | 1 - .../centos/7/docker-ded-jrn/group_vars/all | 1 - .../functional/centos/7/docker/group_vars/all | 1 - tests/functional/centos/7/docker/hosts | 2 +- .../centos/7/jrn-col/group_vars/all | 3 +- tests/functional/dev_setup.yml | 12 +- tests/functional/rhcs_setup.yml | 22 +-- .../ubuntu/16.04/cluster/group_vars/all | 3 +- tox.ini | 2 +- 52 files changed, 899 insertions(+), 782 deletions(-) create mode 100644 docs/source/installation/methods.rst create mode 100644 roles/ceph-common/tasks/installs/configure_debian_repository_installation.yml create mode 100644 roles/ceph-common/tasks/installs/configure_redhat_local_installation.yml create mode 100644 roles/ceph-common/tasks/installs/configure_redhat_repository_installation.yml delete mode 100644 roles/ceph-common/tasks/installs/debian_ceph_repository.yml create mode 100644 roles/ceph-common/tasks/installs/debian_community_repository.yml create mode 100644 roles/ceph-common/tasks/installs/debian_custom_repository.yml create mode 100644 roles/ceph-common/tasks/installs/debian_dev_repository.yml create mode 100644 roles/ceph-common/tasks/installs/debian_enterprise_repository.yml create mode 100644 roles/ceph-common/tasks/installs/debian_uca_repository.yml rename roles/ceph-common/tasks/installs/{install_rh_storage_on_debian.yml => install_debian_enterprise_packages.yml} (71%) create mode 100644 roles/ceph-common/tasks/installs/install_debian_packages.yml create mode 100644 roles/ceph-common/tasks/installs/install_redhat_packages.yml delete mode 100644 roles/ceph-common/tasks/installs/install_rh_storage_on_redhat.yml rename roles/ceph-common/tasks/{pre_requisites => installs}/prerequisite_rhcs_cdn_install.yml (90%) rename roles/ceph-common/tasks/{pre_requisites => installs}/prerequisite_rhcs_cdn_install_debian.yml (100%) rename roles/ceph-common/tasks/{pre_requisites => installs}/prerequisite_rhcs_iso_install.yml (71%) delete mode 100644 roles/ceph-common/tasks/installs/redhat_ceph_repository.yml create mode 100644 roles/ceph-common/tasks/installs/redhat_community_repository.yml create mode 100644 roles/ceph-common/tasks/installs/redhat_custom_repository.yml create mode 100644 roles/ceph-common/tasks/installs/redhat_dev_repository.yml create mode 100644 roles/ceph-common/tasks/installs/redhat_enterprise_repository.yml diff --git a/docs/source/index.rst b/docs/source/index.rst index 998827efd..1d4d2c855 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -5,6 +5,7 @@ ceph-ansible ============ + Ansible playbooks for Ceph, the distributed filesystem. @@ -42,6 +43,7 @@ The ``master`` branch should be considered experimental and used with caution. Configuration and Usage ======================= + This project assumes you have a basic knowledge of how ansible works and have already prepared your hosts for configuration by ansible. @@ -85,6 +87,15 @@ appropriate for your cluster setup. Perform the following steps to prepare your It's important the playbook you use is placed at the root of the ``ceph-ansible`` project. This is how ansible will be able to find the roles that ``ceph-ansible`` provides. +ceph-ansible - choose installation method +----------------------------------------- + +Ceph can be installed through several methods. + +.. toctree:: + :maxdepth: 1 + + installation/methods ceph-ansible Configuration -------------------------- @@ -106,32 +117,26 @@ at the end of the filename, uncomment the options you wish to change and provide An example configuration that deploys the upstream ``jewel`` version of ceph with OSDs that have collocated journals would look like this in ``group_vars/all.yml``:: - ceph_stable: True + ceph_origin: repository + ceph_repository: community ceph_stable_release: jewel public_network: "192.168.3.0/24" cluster_network: "192.168.4.0/24" monitor_interface: eth1 - journal_size: 100 - osd_objectstore: "filestore" devices: - '/dev/sda' - '/dev/sdb' osd_scenario: collocated - # use this to set your PG config for the cluster - ceph_conf_overrides: - global: - osd_pool_default_pg_num: 8 - osd_pool_default_size: 1 The following config options are required to be changed on all installations but there could be other required options depending on your OSD scenario selection or other aspects of your cluster. +- ``ceph_origin`` - ``ceph_stable_release`` -- ``ceph_stable`` or ``ceph_rhcs`` or ``ceph_dev`` - ``public_network`` - ``osd_scenario`` -- ``journal_size`` - ``monitor_interface`` or ``monitor_address`` +- ``radosgw_interface`` or ``radosgw_address`` ceph.conf Configuration ----------------------- @@ -166,7 +171,7 @@ by setting the ``osd_scenario`` configuration option. :maxdepth: 1 osds/scenarios - + Contribution ============ diff --git a/docs/source/installation/methods.rst b/docs/source/installation/methods.rst new file mode 100644 index 000000000..c62f1e32a --- /dev/null +++ b/docs/source/installation/methods.rst @@ -0,0 +1,68 @@ +Installation methods +==================== + +The following are all of the available options for the installing Ceph through different channels. +We support 3 main installation methods, all managed by the ``ceph_origin`` variable: + +- ``repository``: means that you will get ceph installed through a new repository. Later below choose between ``community``, ``rhcs`` or ``dev``. These options will be exposed through the ``ceph_repository`` variable. +- ``distro``: means that no separate repo file will be added and you will get whatever version of Ceph is included in your Linux distro. +- ``local``: means that the ceph binaries will be copied over from the local machine (not well tested, use at your own risk) + +Origin: Repository +------------------ + +If ``ceph_origin`` is set to ``repository``, you now have the choice between a couple of repositories controlled by the ``ceph_repository`` option: + +- ``community``: fetches packages from http://download.ceph.com, the official community Ceph repositories +- ``rhcs``: means you are a Red Hat customer, additionally you will have to select a repository type through ``ceph_repository_type`` (``cdn`` or ``iso``) +- ``dev``: fetches packages from shaman, a gitbuilder based package system +- ``uca``: fetches packages from Ubuntu Cloud Archive +- ``custom``: fetches packages from a specific repository + +Community repository +~~~~~~~~~~~~~~~~~~~~ + +If ``ceph_repository`` is set to ``community``, packages you will be by default installed from http://download.ceph.com, this can be changed by tweaking ``ceph_mirror``. +Final step is to select which Ceph release you want to install, for this you have to set ``ceph_stable_release`` accordingly. +For example, ``ceph_stable_release: luminous``. + +RHCS repository +~~~~~~~~~~~~~~~ + +RHCS is the Red Hat Ceph Storage product from Red Hat, the enterprise version of Ceph. +If ``ceph_repository`` is set to ``rhcs``, packages you will be installed from Red Hat sources. + +Additionally you will have to select a repository type through ``ceph_repository_type``, it can be ``cdn`` or ``iso``. +To choose a specific version of RHCS you can set the ``ceph_rhcs_version`` variable accordingly, e.g: ``ceph_rhcs_version: 2``. + +UCA repository +~~~~~~~~~~~~~~ + +If ``ceph_repository`` is set to ``uca``, packages you will be by default installed from http://ubuntu-cloud.archive.canonical.com/ubuntu, this can be changed by tweaking ``ceph_stable_repo_uca``. +You can also decide which OpenStack version the Ceph packages should come from by tweaking ``ceph_stable_openstack_release_uca``. +For example, ``ceph_stable_openstack_release_uca: liberty``. + +Dev repository +~~~~~~~~~~~~~~ + +If ``ceph_repository`` is set to ``dev``, packages you will be by default installed from https://shaman.ceph.com/, this can not be tweaked. +You can obviously decide which branch to install with the help of ``ceph_dev_branch`` (defaults to 'master'). +Additionally, you can specify a SHA1 with ``ceph_dev_sha1``, defaults to 'latest' (as in latest built). + +Custom repository +~~~~~~~~~~~~~~~~~ + +If ``ceph_repository`` is set to ``custom``, packages you will be by default installed from a desired repository. +This repository is specifie with ``ceph_custom_repo``, e.g: ``ceph_custom_repo: https://server.domain.com/ceph-custom-repo``. + + +Origin: Distro +-------------- + +If ``ceph_origin`` is set to ``distro``, no separate repo file will be added and you will get whatever version of Ceph is included in your Linux distro. + + +Origin: Local +------------- + +If ``ceph_origin`` is set to ``local``, the ceph binaries will be copied over from the local machine (not well tested, use at your own risk) diff --git a/group_vars/all.yml.sample b/group_vars/all.yml.sample index de1113419..b8a538dca 100644 --- a/group_vars/all.yml.sample +++ b/group_vars/all.yml.sample @@ -13,6 +13,22 @@ dummy: # GENERAL # ########### +###################################### +# Releases name to number dictionary # +###################################### +#ceph_release_num: +# dumpling: 0.67 +# emperor: 0.72 +# firefly: 0.80 +# giant: 0.87 +# hammer: 0.94 +# infernalis: 9 +# jewel: 10 +# kraken: 11 +# luminous: 12 +# mimic: 13 + +# Directory to fetch cluster fsid, keys etc... #fetch_directory: fetch/ # The 'cluster' variable determines the name of the cluster. @@ -26,16 +42,7 @@ dummy: # With that you will be able to run "ceph health" normally #cluster: ceph -########### -# INSTALL # -########### - -# Set uid/gid to default '64045' for bootstrap directories. -# '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. -# These values have to be set according to the base OS used by the container image, NOT the host. -#bootstrap_dirs_owner: "64045" -#bootstrap_dirs_group: "64045" - +# Inventory host group variables #mon_group_name: mons #osd_group_name: osds #rgw_group_name: rgws @@ -53,13 +60,10 @@ dummy: # want to set this to False to skip those checks. #check_firewall: False -# This variable determines if ceph packages can be updated. If False, the -# package resources will use "state=present". If True, they will use -# "state=latest". -#upgrade_ceph_packages: False - -# /!\ EITHER ACTIVE ceph_stable OR ceph_stable_uca OR ceph_dev OR ceph_custom /!\ +############ +# PACKAGES # +############ #debian_package_dependencies: # - python-pycurl # - hdparm @@ -76,69 +80,78 @@ dummy: # - hdparm # - python-setuptools +# Whether or not to install the ceph-test package. +#ceph_test: false + # Enable the ntp service by default to avoid clock skew on # ceph nodes #ntp_service_enabled: true -# Whether or not to install the ceph-test package. -#ceph_test: False +# Set uid/gid to default '64045' for bootstrap directories. +# '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. +# These values have to be set according to the base OS used by the container image, NOT the host. +#bootstrap_dirs_owner: "64045" +#bootstrap_dirs_group: "64045" -## Configure package origin -# -#ceph_origin: 'upstream' # or 'distro' or 'local' -# 'distro' means that no separate repo file will be added -# you will get whatever version of Ceph is included in your Linux distro. -# 'local' means that the ceph binaries will be copied over from the local machine - -# LOCAL CEPH INSTALLATION (ceph_origin==local) -# -# Path to DESTDIR of the ceph install -#ceph_installation_dir: "/path/to/ceph_installation/" -# Whether or not to use installer script rundep_installer.sh -# This script takes in rundep and installs the packages line by line onto the machine -# If this is set to false then it is assumed that the machine ceph is being copied onto will already have -# all runtime dependencies installed -#use_installer: false -# Root directory for ceph-ansible -#ansible_dir: "/path/to/ceph-ansible" +# This variable determines if ceph packages can be updated. If False, the +# package resources will use "state=present". If True, they will use +# "state=latest". +#upgrade_ceph_packages: False #ceph_use_distro_backports: false # DEBIAN ONLY -# STABLE -######## -# COMMUNITY VERSION -#ceph_stable: false # use ceph stable branch +########### +# INSTALL # +########### + + +# ORIGIN SOURCE +# +# Choose between: +# - 'repository' means that you will get ceph installed through a new repository. Later below choose between 'community', 'rhcs' or 'dev' +# - 'distro' means that no separate repo file will be added +# you will get whatever version of Ceph is included in your Linux distro. +# 'local' means that the ceph binaries will be copied over from the local machine +#ceph_origin: 'dummy' +#valid_ceph_origins: +# - repository +# - distro +# - local + + +#ceph_repository: dummy +#valid_ceph_repository: +# - community +# - rhcs +# - dev +# - uca +# - custom + + +# REPOSITORY: COMMUNITY VERSION +# +# Enabled when ceph_repository == 'community' +# #ceph_mirror: http://download.ceph.com #ceph_stable_key: https://download.ceph.com/keys/release.asc #ceph_stable_release: dummy #ceph_stable_repo: "{{ ceph_mirror }}/debian-{{ ceph_stable_release }}" -###################################### -# Releases name to number dictionary # -###################################### -#ceph_release_num: -# dumpling: 0.67 -# emperor: 0.72 -# firefly: 0.80 -# giant: 0.87 -# hammer: 0.94 -# infernalis: 9 -# jewel: 10 -# kraken: 11 -# luminous: 12 -# mimic: 13 - # Use the option below to specify your applicable package tree, eg. when using non-LTS Ubuntu versions # # for a list of available Debian distributions, visit http://download.ceph.com/debian-{{ ceph_stable_release }}/dists/ # for more info read: https://github.com/ceph/ceph-ansible/issues/305 -#ceph_stable_distro_source: +#ceph_stable_distro_source: "{{ ansible_lsb.codename }}" # This option is needed for _both_ stable and dev version, so please always fill the right version # # for supported distros, see http://download.ceph.com/rpm-{{ ceph_stable_release }}/ #ceph_stable_redhat_distro: el7 -# ENTERPRISE VERSION RED HAT STORAGE (from 1.3) + +# REPOSITORY: RHCS VERSION RED HAT STORAGE (from 1.3) +# +# Enabled when ceph_repository == 'rhcs' +# # This version is only supported on RHEL >= 7.1 # As of RHEL 7.1, libceph.ko and rbd.ko are now included in Red Hat's kernel # packages natively. The RHEL 7.1 kernel packages are more stable and secure than @@ -151,48 +164,64 @@ dummy: # on RHEL 7. # # -# Backward compatibility of variable names -# Commit 492518a2 changed variable names of rhcs installations -# to not break backward compatiblity we re-declare these variables -# with the content of the new variable -#ceph_rhcs: "{{ ceph_stable_rh_storage | default(false) }}" -# This will affect how/what repositories are enabled depending on the desired -# version. The previous version was 1.3. The current version is 2. #ceph_rhcs_version: "{{ ceph_stable_rh_storage_version | default(2) }}" -#ceph_rhcs_cdn_install: "{{ ceph_stable_rh_storage_cdn_install | default(false) }}" # assumes all the nodes can connect to cdn.redhat.com -#ceph_rhcs_cdn_debian_repo: https://customername:customerpasswd@rhcs.download.redhat.com -#ceph_rhcs_iso_install: "{{ ceph_stable_rh_storage_iso_install | default(false) }}" # usually used when nodes don't have access to cdn.redhat.com +#ceph_repository_type: dummy +#valid_ceph_repository_type: +# - cdn +# - iso #ceph_rhcs_iso_path: "{{ ceph_stable_rh_storage_iso_path | default('') }}" #ceph_rhcs_mount_path: "{{ ceph_stable_rh_storage_mount_path | default('/tmp/rh-storage-mount') }}" #ceph_rhcs_repository_path: "{{ ceph_stable_rh_storage_repository_path | default('/tmp/rh-storage-repo') }}" # where to copy iso's content -# UBUNTU CLOUD ARCHIVE +# REPOSITORY: UBUNTU CLOUD ARCHIVE +# +# Enabled when ceph_repository == 'uca' +# # This allows the install of Ceph from the Ubuntu Cloud Archive. The Ubuntu Cloud Archive # usually has newer Ceph releases than the normal distro repository. # -#ceph_stable_uca: false +# #ceph_stable_repo_uca: "http://ubuntu-cloud.archive.canonical.com/ubuntu" #ceph_stable_openstack_release_uca: liberty #ceph_stable_release_uca: "{{ansible_lsb.codename}}-updates/{{ceph_stable_openstack_release_uca}}" -# DEV -# ### -#ceph_dev: false # use ceph development branch +# REPOSITORY: DEV +# +# Enabled when ceph_repository == 'dev' +# #ceph_dev_branch: master # development branch you would like to use e.g: master, wip-hack #ceph_dev_sha1: latest # distinct sha1 to use, defaults to 'latest' (as in latest built) -# CUSTOM -# ### + +# REPOSITORY: CUSTOM +# +# Enabled when ceph_repository == 'custom' +# # Use a custom repository to install ceph. For RPM, ceph_custom_repo should be # a URL to the .repo file to be installed on the targets. For deb, # ceph_custom_repo should be the URL to the repo base. -#ceph_custom: false # use custom ceph repository +# #ceph_custom_repo: https://server.domain.com/ceph-custom-repo +# ORIGIN: LOCAL CEPH INSTALLATION +# +# Enabled when ceph_repository == 'local' +# +# Path to DESTDIR of the ceph install +#ceph_installation_dir: "/path/to/ceph_installation/" +# Whether or not to use installer script rundep_installer.sh +# This script takes in rundep and installs the packages line by line onto the machine +# If this is set to false then it is assumed that the machine ceph is being copied onto will already have +# all runtime dependencies installed +#use_installer: false +# Root directory for ceph-ansible +#ansible_dir: "/path/to/ceph-ansible" + + ###################### # CEPH CONFIGURATION # ###################### diff --git a/group_vars/rhcs.yml.sample b/group_vars/rhcs.yml.sample index b2c98d291..9b8aa0a1c 100644 --- a/group_vars/rhcs.yml.sample +++ b/group_vars/rhcs.yml.sample @@ -13,6 +13,22 @@ dummy: # GENERAL # ########### +###################################### +# Releases name to number dictionary # +###################################### +#ceph_release_num: +# dumpling: 0.67 +# emperor: 0.72 +# firefly: 0.80 +# giant: 0.87 +# hammer: 0.94 +# infernalis: 9 +# jewel: 10 +# kraken: 11 +# luminous: 12 +# mimic: 13 + +# Directory to fetch cluster fsid, keys etc... fetch_directory: ~/ceph-ansible-keys # The 'cluster' variable determines the name of the cluster. @@ -26,16 +42,7 @@ fetch_directory: ~/ceph-ansible-keys # With that you will be able to run "ceph health" normally #cluster: ceph -########### -# INSTALL # -########### - -# Set uid/gid to default '64045' for bootstrap directories. -# '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. -# These values have to be set according to the base OS used by the container image, NOT the host. -#bootstrap_dirs_owner: "64045" -#bootstrap_dirs_group: "64045" - +# Inventory host group variables #mon_group_name: mons #osd_group_name: osds #rgw_group_name: rgws @@ -53,13 +60,10 @@ fetch_directory: ~/ceph-ansible-keys # want to set this to False to skip those checks. #check_firewall: False -# This variable determines if ceph packages can be updated. If False, the -# package resources will use "state=present". If True, they will use -# "state=latest". -#upgrade_ceph_packages: False - -# /!\ EITHER ACTIVE ceph_stable OR ceph_stable_uca OR ceph_dev OR ceph_custom /!\ +############ +# PACKAGES # +############ #debian_package_dependencies: # - python-pycurl # - hdparm @@ -76,69 +80,78 @@ fetch_directory: ~/ceph-ansible-keys # - hdparm # - python-setuptools +# Whether or not to install the ceph-test package. +#ceph_test: false + # Enable the ntp service by default to avoid clock skew on # ceph nodes #ntp_service_enabled: true -# Whether or not to install the ceph-test package. -#ceph_test: False +# Set uid/gid to default '64045' for bootstrap directories. +# '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. +# These values have to be set according to the base OS used by the container image, NOT the host. +#bootstrap_dirs_owner: "64045" +#bootstrap_dirs_group: "64045" -## Configure package origin -# -#ceph_origin: 'upstream' # or 'distro' or 'local' -# 'distro' means that no separate repo file will be added -# you will get whatever version of Ceph is included in your Linux distro. -# 'local' means that the ceph binaries will be copied over from the local machine - -# LOCAL CEPH INSTALLATION (ceph_origin==local) -# -# Path to DESTDIR of the ceph install -#ceph_installation_dir: "/path/to/ceph_installation/" -# Whether or not to use installer script rundep_installer.sh -# This script takes in rundep and installs the packages line by line onto the machine -# If this is set to false then it is assumed that the machine ceph is being copied onto will already have -# all runtime dependencies installed -#use_installer: false -# Root directory for ceph-ansible -#ansible_dir: "/path/to/ceph-ansible" +# This variable determines if ceph packages can be updated. If False, the +# package resources will use "state=present". If True, they will use +# "state=latest". +#upgrade_ceph_packages: False #ceph_use_distro_backports: false # DEBIAN ONLY -# STABLE -######## -# COMMUNITY VERSION -#ceph_stable: false # use ceph stable branch +########### +# INSTALL # +########### + + +# ORIGIN SOURCE +# +# Choose between: +# - 'repository' means that you will get ceph installed through a new repository. Later below choose between 'community', 'rhcs' or 'dev' +# - 'distro' means that no separate repo file will be added +# you will get whatever version of Ceph is included in your Linux distro. +# 'local' means that the ceph binaries will be copied over from the local machine +ceph_origin: repository +#valid_ceph_origins: +# - repository +# - distro +# - local + + +ceph_repository: rhcs +#valid_ceph_repository: +# - community +# - rhcs +# - dev +# - uca +# - custom + + +# REPOSITORY: COMMUNITY VERSION +# +# Enabled when ceph_repository == 'community' +# #ceph_mirror: http://download.ceph.com #ceph_stable_key: https://download.ceph.com/keys/release.asc #ceph_stable_release: dummy #ceph_stable_repo: "{{ ceph_mirror }}/debian-{{ ceph_stable_release }}" -###################################### -# Releases name to number dictionary # -###################################### -#ceph_release_num: -# dumpling: 0.67 -# emperor: 0.72 -# firefly: 0.80 -# giant: 0.87 -# hammer: 0.94 -# infernalis: 9 -# jewel: 10 -# kraken: 11 -# luminous: 12 -# mimic: 13 - # Use the option below to specify your applicable package tree, eg. when using non-LTS Ubuntu versions # # for a list of available Debian distributions, visit http://download.ceph.com/debian-{{ ceph_stable_release }}/dists/ # for more info read: https://github.com/ceph/ceph-ansible/issues/305 -#ceph_stable_distro_source: +#ceph_stable_distro_source: "{{ ansible_lsb.codename }}" # This option is needed for _both_ stable and dev version, so please always fill the right version # # for supported distros, see http://download.ceph.com/rpm-{{ ceph_stable_release }}/ #ceph_stable_redhat_distro: el7 -# ENTERPRISE VERSION RED HAT STORAGE (from 1.3) + +# REPOSITORY: RHCS VERSION RED HAT STORAGE (from 1.3) +# +# Enabled when ceph_repository == 'rhcs' +# # This version is only supported on RHEL >= 7.1 # As of RHEL 7.1, libceph.ko and rbd.ko are now included in Red Hat's kernel # packages natively. The RHEL 7.1 kernel packages are more stable and secure than @@ -151,48 +164,64 @@ fetch_directory: ~/ceph-ansible-keys # on RHEL 7. # # -# Backward compatibility of variable names -# Commit 492518a2 changed variable names of rhcs installations -# to not break backward compatiblity we re-declare these variables -# with the content of the new variable -ceph_rhcs: true -# This will affect how/what repositories are enabled depending on the desired -# version. The previous version was 1.3. The current version is 2. #ceph_rhcs_version: "{{ ceph_stable_rh_storage_version | default(2) }}" -#ceph_rhcs_cdn_install: "{{ ceph_stable_rh_storage_cdn_install | default(false) }}" # assumes all the nodes can connect to cdn.redhat.com -#ceph_rhcs_cdn_debian_repo: https://customername:customerpasswd@rhcs.download.redhat.com -#ceph_rhcs_iso_install: "{{ ceph_stable_rh_storage_iso_install | default(false) }}" # usually used when nodes don't have access to cdn.redhat.com +#ceph_repository_type: dummy +#valid_ceph_repository_type: +# - cdn +# - iso #ceph_rhcs_iso_path: "{{ ceph_stable_rh_storage_iso_path | default('') }}" #ceph_rhcs_mount_path: "{{ ceph_stable_rh_storage_mount_path | default('/tmp/rh-storage-mount') }}" #ceph_rhcs_repository_path: "{{ ceph_stable_rh_storage_repository_path | default('/tmp/rh-storage-repo') }}" # where to copy iso's content -# UBUNTU CLOUD ARCHIVE +# REPOSITORY: UBUNTU CLOUD ARCHIVE +# +# Enabled when ceph_repository == 'uca' +# # This allows the install of Ceph from the Ubuntu Cloud Archive. The Ubuntu Cloud Archive # usually has newer Ceph releases than the normal distro repository. # -#ceph_stable_uca: false +# #ceph_stable_repo_uca: "http://ubuntu-cloud.archive.canonical.com/ubuntu" #ceph_stable_openstack_release_uca: liberty #ceph_stable_release_uca: "{{ansible_lsb.codename}}-updates/{{ceph_stable_openstack_release_uca}}" -# DEV -# ### -#ceph_dev: false # use ceph development branch +# REPOSITORY: DEV +# +# Enabled when ceph_repository == 'dev' +# #ceph_dev_branch: master # development branch you would like to use e.g: master, wip-hack #ceph_dev_sha1: latest # distinct sha1 to use, defaults to 'latest' (as in latest built) -# CUSTOM -# ### + +# REPOSITORY: CUSTOM +# +# Enabled when ceph_repository == 'custom' +# # Use a custom repository to install ceph. For RPM, ceph_custom_repo should be # a URL to the .repo file to be installed on the targets. For deb, # ceph_custom_repo should be the URL to the repo base. -#ceph_custom: false # use custom ceph repository +# #ceph_custom_repo: https://server.domain.com/ceph-custom-repo +# ORIGIN: LOCAL CEPH INSTALLATION +# +# Enabled when ceph_repository == 'local' +# +# Path to DESTDIR of the ceph install +#ceph_installation_dir: "/path/to/ceph_installation/" +# Whether or not to use installer script rundep_installer.sh +# This script takes in rundep and installs the packages line by line onto the machine +# If this is set to false then it is assumed that the machine ceph is being copied onto will already have +# all runtime dependencies installed +#use_installer: false +# Root directory for ceph-ansible +#ansible_dir: "/path/to/ceph-ansible" + + ###################### # CEPH CONFIGURATION # ###################### diff --git a/rhcs_edits.txt b/rhcs_edits.txt index 8c5b7f573..f6917bacf 100644 --- a/rhcs_edits.txt +++ b/rhcs_edits.txt @@ -1,2 +1,3 @@ -ceph_rhcs: true +ceph_repository: rhcs +ceph_origin: repository fetch_directory: ~/ceph-ansible-keys diff --git a/roles/ceph-common/tasks/checks/check_mandatory_vars.yml b/roles/ceph-common/tasks/checks/check_mandatory_vars.yml index 4b59a67bd..c542ed825 100644 --- a/roles/ceph-common/tasks/checks/check_mandatory_vars.yml +++ b/roles/ceph-common/tasks/checks/check_mandatory_vars.yml @@ -1,34 +1,34 @@ --- - name: make sure an installation origin was chosen fail: - msg: "choose an installation origin" + msg: "choose an installation origin between repository, distro and local\nValid ceph_origin are: {{ valid_ceph_origins }}" when: - - ceph_origin != 'upstream' - - ceph_origin != 'distro' - - ceph_origin != 'local' + - ceph_origin not in valid_ceph_origins tags: - package-install -- name: make sure an installation source was chosen +- name: make sure a repository was chosen fail: - msg: "choose an upstream installation source or read https://github.com/ceph/ceph-ansible/wiki" + msg: "choose a repository installation source: {{ valid_ceph_repository }} or read http://docs.ceph.com/ceph-ansible/master/" when: - - ceph_origin == 'upstream' - - not ceph_stable - - not ceph_dev - - not ceph_rhcs - - not ceph_stable_uca - - not ceph_custom + - ceph_origin == 'repository' + - ceph_repository not in valid_ceph_repository tags: - package-install +- name: fail if local scenario is enabled on debian + fail: + msg: "'local' installation scenario not supported on Debian systems" + when: + - ansible_os_family == 'Debian' + - ceph_origin == 'local' + - name: make sure ceph_stable_release is set fail: msg: "make sure ceph_stable_release is set to a release name (e.g: luminous), http://docs.ceph.com/docs/master/release-notes/" when: - ceph_stable_release == 'dummy' - - ceph_origin == 'upstream' - - ceph_stable + - (ceph_repository != 'rhcs' or ceph_repository != 'dev') tags: - package-install @@ -37,19 +37,18 @@ msg: "wrong release name, see http://docs.ceph.com/docs/master/release-notes/" when: - ceph_stable_release not in ceph_release_num - - ceph_origin == 'upstream' - - ceph_stable + - ceph_origin == 'repository' + - ceph_repository != 'rhcs' tags: - package-install -- name: verify that a method was chosen for red hat storage +- name: verify that a repository type was chosen for ceph rhcs version fail: - msg: "choose between ceph_rhcs_cdn_install and ceph_rhcs_iso_install" + msg: "choose between 'cdn' or 'iso' installation, e.g: ceph_repository_type: cdn.\nValid ceph_repository_type are: {{ valid_ceph_repository_type }}" when: - - ceph_rhcs - - not ceph_rhcs_cdn_install - - not ceph_rhcs_iso_install - - ceph_origin != 'distro' + - ceph_origin == 'repository' + - ceph_repository == 'rhcs' + - ceph_repository_type in valid_ceph_repository_type tags: - package-install @@ -57,13 +56,25 @@ fail: msg: "ceph_rhcs_cdn_debian_repo url is invalid, please set your customername:customerpasswd" when: - - ceph_rhcs - - ceph_rhcs_cdn_install + - 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' tags: - package-install +- name: verify that ceph_rhcs_cdn_debian_repo url is valid for red hat storage + fail: + msg: "iso installation is not supported by the Ceph Debian rhcs version" + when: + - ceph_origin == 'repository' + - ceph_repository == 'rhcs' + - ceph_repository_type == 'iso' + - ansible_os_family == 'Debian' + tags: + - package-install + - name: make sure monitor_interface or monitor_address is defined fail: msg: "you must set monitor_interface or monitor_address" diff --git a/roles/ceph-common/tasks/checks/check_system.yml b/roles/ceph-common/tasks/checks/check_system.yml index 0457e3119..880ceb284 100644 --- a/roles/ceph-common/tasks/checks/check_system.yml +++ b/roles/ceph-common/tasks/checks/check_system.yml @@ -18,15 +18,36 @@ fail: msg: "Distribution not supported {{ ansible_distribution_version }} by Red Hat Ceph Storage, only RHEL >= 7.3" when: - - ceph_rhcs + - ansible_distribution == 'Red Hat Enterprise Linux' + - ceph_repository == 'rhcs' - 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 + always_run: true + when: + - ansible_distribution == 'Red Hat Enterprise Linux' + - ceph_repository == 'rhcs' + - ceph_repository_type == 'cdn' + +- name: fail on unregistered red hat rhcs linux + fail: + msg: "You must register your machine with subscription-manager" + when: + - ansible_distribution == 'Red Hat Enterprise Linux' + - ceph_repository == 'rhcs' + - ceph_repository_type == 'cdn' + - subscription.rc != '0' + - name: fail on unsupported distribution for ubuntu cloud archive fail: msg: "Distribution not supported by Ubuntu Cloud Archive: {{ ansible_distribution }}" when: - ceph_stable_uca and - '{{ ansible_distribution }}' not in ['Ubuntu'] + - ceph_repository == 'uca' + - ansible_distribution != 'Ubuntu' - name: fail on unsupported ansible version fail: diff --git a/roles/ceph-common/tasks/installs/configure_debian_repository_installation.yml b/roles/ceph-common/tasks/installs/configure_debian_repository_installation.yml new file mode 100644 index 000000000..b404141ca --- /dev/null +++ b/roles/ceph-common/tasks/installs/configure_debian_repository_installation.yml @@ -0,0 +1,26 @@ +--- +- name: configure debian community repository + include: debian_community_repository.yml + when: + - ceph_repository == 'community' + +- name: configure debian rhcs repository + include: debian_rhcs_repository.yml + when: + - ceph_repository == 'rhcs' + +- name: configure debian dev repository + include: debian_dev_repository.yml + when: + - ceph_repository == 'dev' + +- name: configure debian custom repository + include: debian_custom_repository.yml + when: + - ceph_repository == 'custom' + +- name: configure debian cloud archive repository + include: debian_uca_repository.yml + when: + - ceph_repository == 'uca' + diff --git a/roles/ceph-common/tasks/installs/configure_redhat_local_installation.yml b/roles/ceph-common/tasks/installs/configure_redhat_local_installation.yml new file mode 100644 index 000000000..eebb61449 --- /dev/null +++ b/roles/ceph-common/tasks/installs/configure_redhat_local_installation.yml @@ -0,0 +1,46 @@ +--- +- name: make sure /tmp exists + file: + path: /tmp + state: directory + when: + - use_installer + +- name: use mktemp to create name for rundep + command: "mktemp /tmp/rundep.XXXXXXXX" + register: rundep_location + when: + - use_installer + +- name: copy rundep + copy: + src: "{{ansible_dir}}/rundep" + dest: "{{ item }}" + with_items: "{{ (rundep_location|default({})).stdout_lines|default([]) }}" + when: + - use_installer + +- name: install ceph dependencies + script: "{{ ansible_dir }}/rundep_installer.sh {{ item }}" + become: true + with_items: "{{ (rundep_location|default({})).stdout_lines|default([]) }}" + when: + - use_installer + +- name: ensure rsync is installed + package: + name: rsync + state: present + +- name: synchronize ceph install + synchronize: + src: "{{ceph_installation_dir}}/" + dest: "/" + +- name: create user group ceph + group: + name: 'ceph' + +- name: create user ceph + user: + name: 'ceph' diff --git a/roles/ceph-common/tasks/installs/configure_redhat_repository_installation.yml b/roles/ceph-common/tasks/installs/configure_redhat_repository_installation.yml new file mode 100644 index 000000000..eca135081 --- /dev/null +++ b/roles/ceph-common/tasks/installs/configure_redhat_repository_installation.yml @@ -0,0 +1,26 @@ +--- +- name: configure redhat community repository + include: redhat_community_repository.yml + when: + - ceph_repository == 'community' + +- name: configure redhat rhcs repository + include: redhat_rhcs_repository.yml + when: + - ceph_repository == 'rhcs' + +- name: configure redhat dev repository + include: redhat_dev_repository.yml + when: + - ceph_repository == 'dev' + +- name: configure redhat custom repository + include: redhat_custom_repository.yml + when: + - ceph_repository == 'custom' + +# Remove yum caches so yum doesn't get confused if we are reinstalling a different ceph version +- name: purge yum cache + command: yum clean all + when: + ansible_pkg_mgr == 'yum' diff --git a/roles/ceph-common/tasks/installs/debian_ceph_repository.yml b/roles/ceph-common/tasks/installs/debian_ceph_repository.yml deleted file mode 100644 index fd70f95af..000000000 --- a/roles/ceph-common/tasks/installs/debian_ceph_repository.yml +++ /dev/null @@ -1,58 +0,0 @@ ---- -- name: install the ceph repository stable key - apt_key: - data: "{{ lookup('file', role_path+'/files/cephstable.asc') }}" - state: present - when: ceph_stable - -- name: add ceph stable repository - apt_repository: - repo: "deb {{ ceph_stable_repo }} {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main" - state: present - changed_when: false - when: ceph_stable - -- name: fetch ceph development repository sources list file - uri: - url: https://shaman.ceph.com/api/repos/ceph/{{ ceph_dev_branch }}/{{ ceph_dev_sha1 }}/{{ ansible_distribution | lower }}/{{ ansible_lsb.codename }}/repo - return_content: yes - register: ceph_dev_deb_repo - when: ceph_dev - -- name: add ceph development repository - apt_repository: - repo: "{{ ceph_dev_deb_repo.content }}" - state: present - changed_when: false - when: ceph_dev - -- name: add ubuntu cloud archive key package - package: - name: ubuntu-cloud-keyring - when: ceph_stable_uca - -- name: add ubuntu cloud archive repository - apt_repository: - repo: "deb {{ ceph_stable_repo_uca }} {{ ceph_stable_release_uca}} main" - state: present - changed_when: false - when: ceph_stable_uca - -- name: add custom repo - apt_repository: - repo: "deb {{ ceph_custom_repo }} {{ ansible_lsb.codename }} main" - state: present - changed_when: false - when: ceph_custom - -- name: add gluster nfs ganesha repo - apt_repository: - repo: "{{ item }}" - state: present - with_items: - - ppa:gluster/libntirpc - - ppa:gluster/nfs-ganesha - changed_when: false - when: - - (nfs_obj_gw or nfs_file_gw) - - not ansible_distribution == "Debian" diff --git a/roles/ceph-common/tasks/installs/debian_community_repository.yml b/roles/ceph-common/tasks/installs/debian_community_repository.yml new file mode 100644 index 000000000..3996416a4 --- /dev/null +++ b/roles/ceph-common/tasks/installs/debian_community_repository.yml @@ -0,0 +1,23 @@ +--- +- name: configure debian ceph community repository stable key + apt_key: + data: "{{ lookup('file', role_path+'/files/cephstable.asc') }}" + state: present + +- name: configure debian ceph stable community repository + apt_repository: + repo: "deb {{ ceph_stable_repo }} {{ ceph_stable_distro_source | default(ansible_lsb.codename) }} main" + state: present + changed_when: false + +- name: configure debian gluster nfs ganesha community repository for rgw nfs + apt_repository: + repo: "{{ item }}" + state: present + with_items: + - ppa:gluster/libntirpc + - ppa:gluster/nfs-ganesha + changed_when: false + when: + - (nfs_obj_gw or nfs_file_gw) + - not ansible_distribution == "Debian" diff --git a/roles/ceph-common/tasks/installs/debian_custom_repository.yml b/roles/ceph-common/tasks/installs/debian_custom_repository.yml new file mode 100644 index 000000000..d7c3af335 --- /dev/null +++ b/roles/ceph-common/tasks/installs/debian_custom_repository.yml @@ -0,0 +1,6 @@ +--- +- name: configure debian custom repository + apt_repository: + repo: "deb {{ ceph_custom_repo }} {{ ansible_lsb.codename }} main" + state: present + changed_when: false diff --git a/roles/ceph-common/tasks/installs/debian_dev_repository.yml b/roles/ceph-common/tasks/installs/debian_dev_repository.yml new file mode 100644 index 000000000..e37e2ffe3 --- /dev/null +++ b/roles/ceph-common/tasks/installs/debian_dev_repository.yml @@ -0,0 +1,12 @@ +--- +- name: fetch ceph debian development repository + uri: + url: https://shaman.ceph.com/api/repos/ceph/{{ ceph_dev_branch }}/{{ ceph_dev_sha1 }}/{{ ansible_distribution | lower }}/{{ ansible_lsb.codename }}/repo + return_content: yes + register: ceph_dev_deb_repo + +- name: configure ceph debian development repository + apt_repository: + repo: "{{ ceph_dev_deb_repo.content }}" + state: present + changed_when: false diff --git a/roles/ceph-common/tasks/installs/debian_enterprise_repository.yml b/roles/ceph-common/tasks/installs/debian_enterprise_repository.yml new file mode 100644 index 000000000..853b4a8a3 --- /dev/null +++ b/roles/ceph-common/tasks/installs/debian_enterprise_repository.yml @@ -0,0 +1,4 @@ +--- +- include: prerequisite_rhcs_cdn_install_debian.yml + when: + - ceph_repository_type == 'cdn' diff --git a/roles/ceph-common/tasks/installs/debian_uca_repository.yml b/roles/ceph-common/tasks/installs/debian_uca_repository.yml new file mode 100644 index 000000000..6d272654b --- /dev/null +++ b/roles/ceph-common/tasks/installs/debian_uca_repository.yml @@ -0,0 +1,10 @@ +--- +- name: add ubuntu cloud archive key package + package: + name: ubuntu-cloud-keyring + +- name: add ubuntu cloud archive repository + apt_repository: + repo: "deb {{ ceph_stable_repo_uca }} {{ ceph_stable_release_uca }} main" + state: present + changed_when: false diff --git a/roles/ceph-common/tasks/installs/install_rh_storage_on_debian.yml b/roles/ceph-common/tasks/installs/install_debian_enterprise_packages.yml similarity index 71% rename from roles/ceph-common/tasks/installs/install_rh_storage_on_debian.yml rename to roles/ceph-common/tasks/installs/install_debian_enterprise_packages.yml index 1ec33a4f4..1aa67ea2b 100644 --- a/roles/ceph-common/tasks/installs/install_rh_storage_on_debian.yml +++ b/roles/ceph-common/tasks/installs/install_debian_enterprise_packages.yml @@ -1,61 +1,53 @@ --- -- name: install dependencies - apt: - pkg: "{{ item }}" - state: present - update_cache: yes - cache_valid_time: 3600 - with_items: "{{ debian_package_dependencies }}" - -- name: install red hat storage ceph mon +- name: install red hat storage ceph mon for debian apt: name: ceph-mon state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: mon_group_name in group_names -- name: install red hat storage ceph osd +- name: install red hat storage ceph osd for debian apt: name: ceph-osd state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: osd_group_name in group_names -- name: install ceph-test +- name: install ceph-test for debian apt: name: ceph-test state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: ceph_test -- name: install red hat storage radosgw +- name: install red hat storage radosgw for debian apt: name: radosgw state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: rgw_group_name in group_names -- name: install red hat storage ceph mds +- name: install red hat storage ceph mds for debian apt: pkg: ceph-mds state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: mds_group_name in group_names -- name: install red hat storage ceph-fuse client +- name: install red hat storage ceph-fuse client for debian apt: pkg: ceph-fuse state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: client_group_name in group_names -- name: install red hat storage ceph-common +- name: install red hat storage ceph-common for debian apt: pkg: ceph-common state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: client_group_name in group_names -- name: install red hat storage nfs gateway +- name: install red hat storage nfs gateway for debian apt: name: nfs-ganesha-fsal state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" when: nfs_group_name in group_names -- name: install ceph mgr +- name: install ceph mgr for debian apt: pkg: ceph-mgr state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" diff --git a/roles/ceph-common/tasks/installs/install_debian_packages.yml b/roles/ceph-common/tasks/installs/install_debian_packages.yml new file mode 100644 index 000000000..9797aaf70 --- /dev/null +++ b/roles/ceph-common/tasks/installs/install_debian_packages.yml @@ -0,0 +1,62 @@ +--- +- name: install ceph for debian + apt: + name: "ceph" + update_cache: no + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" + +- name: install ceph-common for debian + apt: + name: ceph-common + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" + +- name: install ceph-test for debian + apt: + name: ceph-test + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" + when: + - ceph_test + +- name: install rados gateway for debian + apt: + name: radosgw + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + update_cache: yes + when: + - rgw_group_name in group_names + +- name: install ceph mds for debian + apt: + name: ceph-mds + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" + when: + - mds_group_name in group_names + +- name: install jemalloc for debian + apt: + name: libjemalloc1 + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + update_cache: yes + when: + - nfs_group_name in group_names + +- name: install nfs gateway for debian + apt: + name: nfs-ganesha-fsal + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + update_cache: yes + when: + - nfs_group_name in group_names + +- name: install ceph mgr for debian + apt: + name: ceph-mgr + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" + when: + - mgr_group_name in group_names + - ceph_release_num.{{ ceph_release }} > ceph_release_num.jewel diff --git a/roles/ceph-common/tasks/installs/install_on_debian.yml b/roles/ceph-common/tasks/installs/install_on_debian.yml index 00f5eb6ee..ca621b538 100644 --- a/roles/ceph-common/tasks/installs/install_on_debian.yml +++ b/roles/ceph-common/tasks/installs/install_on_debian.yml @@ -1,4 +1,9 @@ --- +- name: configure debian repository installation + include: configure_debian_repository_installation.yml + when: + - ceph_origin == 'repository' + - name: install dependencies apt: name: "{{ item }}" @@ -7,66 +12,18 @@ cache_valid_time: 3600 with_items: "{{ debian_package_dependencies }}" -- name: configure ceph apt repository - include: debian_ceph_repository.yml - when: ceph_origin == 'upstream' - - name: update apt cache apt: update_cache: yes -- name: install ceph - apt: - name: "ceph" - update_cache: no - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" - -- name: install ceph-test - apt: - pkg: ceph-test - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" - when: ceph_test - -- name: install ceph-common - package: - name: 'ceph-common' - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - -- name: install rados gateway - apt: - pkg: radosgw - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - update_cache: yes - when: rgw_group_name in group_names - -- name: install ceph mds - apt: - pkg: ceph-mds - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" - when: mds_group_name in group_names - -- name: install jemalloc - apt: - pkg: libjemalloc1 - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - update_cache: yes - when: nfs_group_name in group_names - -- name: install NFS gateway - apt: - pkg: nfs-ganesha-fsal - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - update_cache: yes - when: nfs_group_name in group_names - -- name: install ceph mgr - apt: - pkg: ceph-mgr - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - default_release: "{{ ceph_stable_release_uca | default(ansible_distribution_release) }}{{ '-backports' if ceph_origin == 'distro' and ceph_use_distro_backports else ''}}" +- name: install ceph debian packages + include: install_debian_packages.yml when: - - mgr_group_name in group_names - - ceph_release_num.{{ ceph_release }} > ceph_release_num.jewel + - (ceph_origin == 'repository' or ceph_origin == 'distro') + - ceph_repository != 'rhcs' + +- name: install ceph rhcs debian packages + include: install_debian_rhcs_packages.yml + when: + - (ceph_origin == 'repository' or ceph_origin == 'distro') + - ceph_repository == 'rhcs' diff --git a/roles/ceph-common/tasks/installs/install_on_redhat.yml b/roles/ceph-common/tasks/installs/install_on_redhat.yml index 55b0bd4af..30cb48337 100644 --- a/roles/ceph-common/tasks/installs/install_on_redhat.yml +++ b/roles/ceph-common/tasks/installs/install_on_redhat.yml @@ -1,153 +1,15 @@ --- -- name: install redhat dependencies - package: - name: "{{ item }}" - state: present - with_items: "{{ redhat_package_dependencies }}" - when: ansible_distribution == "RedHat" - -- name: install centos dependencies - package: - name: "{{ item }}" - state: present - with_items: "{{ centos_package_dependencies }}" - when: ansible_distribution == "CentOS" - -- name: configure ceph yum repository - include: redhat_ceph_repository.yml - when: ceph_origin == 'upstream' - -- name: make sure /tmp exists - file: - path: /tmp - state: directory +- name: configure redhat repository installation + include: configure_redhat_repository_installation.yml when: - - ceph_origin == 'local' - - use_installer + - ceph_origin == 'repository' -- name: use mktemp to create name for rundep - command: "mktemp /tmp/rundep.XXXXXXXX" - register: rundep_location - when: - - ceph_origin == 'local' - - use_installer - -- name: copy rundep - copy: - src: "{{ansible_dir}}/rundep" - dest: "{{ item }}" - with_items: "{{ (rundep_location|default({})).stdout_lines|default([]) }}" - when: - - ceph_origin == 'local' - - use_installer - -- name: install ceph dependencies - script: "{{ ansible_dir }}/rundep_installer.sh {{ item }}" - become: true - with_items: "{{ (rundep_location|default({})).stdout_lines|default([]) }}" - when: - - ceph_origin == 'local' - - use_installer - -- name: ensure rsync is installed - package: - name: rsync - state: present +- name: configure redhat local installation + include: configure_redhat_local_installation.yml when: - ceph_origin == 'local' -- name: synchronize ceph install - synchronize: - src: "{{ceph_installation_dir}}/" - dest: "/" +- name: install redhat packages + include: install_redhat_packages.yml when: - - ceph_origin == 'local' - -- name: create user group ceph - group: - name: 'ceph' - when: - - ceph_origin == 'local' - -- name: create user ceph - user: - name: 'ceph' - when: - - ceph_origin == 'local' - -- name: install ceph-common - package: - name: 'ceph-common' - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - -- name: install distro or red hat storage ceph mon - package: - name: "ceph-mon" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - mon_group_name in group_names - -- name: install distro or red hat storage ceph osd - package: - name: "ceph-osd" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - osd_group_name in group_names - -- name: install distro or red hat storage ceph mds - package: - name: "ceph-mds" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - mds_group_name in group_names - -- name: install distro or red hat storage ceph-fuse - package: - name: "ceph-fuse" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - client_group_name in group_names - -- name: install distro or red hat storage ceph base - package: - name: "ceph-base" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - client_group_name in group_names - -- name: install ceph-test - package: - name: ceph-test - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: ceph_test - -- name: install rados gateway - package: - name: ceph-radosgw - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: rgw_group_name in group_names - -- name: install nfs ceph gateway - package: - name: nfs-ganesha-ceph - when: - - nfs_group_name in group_names - - nfs_file_gw - -- name: install nfs rgw gateway - package: - name: "{{ item }}" - with_items: - - nfs-ganesha-rgw - - ceph-radosgw - when: - - nfs_group_name in group_names - - nfs_obj_gw - -- name: install ceph mgr - package: - name: ceph-mgr - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - mgr_group_name in group_names - - ceph_release_num.{{ ceph_release }} > ceph_release_num.jewel + - (ceph_origin == 'repository' or ceph_origin == 'distro') diff --git a/roles/ceph-common/tasks/installs/install_redhat_packages.yml b/roles/ceph-common/tasks/installs/install_redhat_packages.yml new file mode 100644 index 000000000..51e07c3f1 --- /dev/null +++ b/roles/ceph-common/tasks/installs/install_redhat_packages.yml @@ -0,0 +1,105 @@ +--- +- name: install redhat dependencies + package: + name: "{{ item }}" + state: present + with_items: "{{ redhat_package_dependencies }}" + when: ansible_distribution == "RedHat" + +- name: install centos dependencies + package: + name: "{{ item }}" + state: present + with_items: "{{ centos_package_dependencies }}" + when: ansible_distribution == "CentOS" + +- name: install redhat ceph-common + package: + name: "ceph-common" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + +- name: install redhat ceph-mon package + package: + name: "ceph-mon" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - mon_group_name in group_names + +- name: install redhat ceph-osd package + package: + name: "ceph-osd" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - osd_group_name in group_names + +- name: install redhat ceph-mds package + package: + name: "ceph-mds" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - mds_group_name in group_names + +- name: install redhat ceph-fuse package + package: + name: "ceph-fuse" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - client_group_name in group_names + +- name: install redhat ceph-base package + package: + package: + name: "ceph-base" + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - client_group_name in group_names + +- name: install redhat ceph-test package + package: + name: ceph-test + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: ceph_test + +- name: install redhat ceph-radosgw package + package: + name: ceph-radosgw + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: rgw_group_name in group_names + +- name: install redhat nfs-ganesha-ceph package + package: + name: nfs-ganesha-ceph + when: + - nfs_group_name in group_names + - nfs_file_gw + +- name: install redhat nfs-ganesha-rgw and ceph-radosgw packages + package: + name: "{{ item }}" + with_items: + - nfs-ganesha-fsal + - ceph-radosgw + when: + - nfs_group_name in group_names + - nfs_obj_gw + - ceph_rhcs_version == "2" + +- name: install redhat nfs-ganesha-rgw and ceph-radosgw packages + package: + name: "{{ item }}" + with_items: + - nfs-ganesha-rgw + - nfs-ganesha-ceph + - ceph-radosgw + when: + - nfs_group_name in group_names + - nfs_obj_gw + - ceph_rhcs_version == "3" + +- name: install redhat ceph-mgr package + package: + name: ceph-mgr + state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" + when: + - mgr_group_name in group_names + - ceph_release_num.{{ ceph_release }} > ceph_release_num.jewel diff --git a/roles/ceph-common/tasks/installs/install_rh_storage_on_redhat.yml b/roles/ceph-common/tasks/installs/install_rh_storage_on_redhat.yml deleted file mode 100644 index 136259363..000000000 --- a/roles/ceph-common/tasks/installs/install_rh_storage_on_redhat.yml +++ /dev/null @@ -1,80 +0,0 @@ ---- -- name: install red hat storage repository key - rpm_key: - key: "{{ ceph_rhcs_repository_path }}/RPM-GPG-KEY-redhat-release" - state: present - when: - - ceph_rhcs_iso_install - -- name: add red hat storage repository - template: - src: "{{ role_path }}/templates/redhat_storage_repo.j2" - dest: /etc/yum.repos.d/rh_storage.repo - owner: root - group: root - mode: 0644 - when: - - ceph_rhcs_iso_install - -- name: install dependencies - package: - name: "{{ item }}" - state: present - with_items: "{{ redhat_package_dependencies }}" - -- name: install red hat storage ceph mon - package: - name: "ceph-mon" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - mon_group_name in group_names - -- name: install red hat storage ceph osd - package: - name: "ceph-osd" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - osd_group_name in group_names - -- name: install red hat storage ceph mds - package: - name: "ceph-mds" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - mds_group_name in group_names - -- name: install red hat storage ceph-common - package: - name: "ceph-common" - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - client_group_name in group_names - -- name: install ceph-test - package: - name: ceph-test - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - ceph_test - -- name: install rados gateway - package: - name: ceph-radosgw - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - rgw_group_name in group_names - -- name: install NFS gateway - package: - name: nfs-ganesha-ceph - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - nfs_group_name in group_names - -- name: install ceph mgr - package: - name: ceph-mgr - state: "{{ (upgrade_ceph_packages|bool) | ternary('latest','present') }}" - when: - - mgr_group_name in group_names - - ceph_release_num.{{ ceph_release }} > ceph_release_num.jewel diff --git a/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install.yml b/roles/ceph-common/tasks/installs/prerequisite_rhcs_cdn_install.yml similarity index 90% rename from roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install.yml rename to roles/ceph-common/tasks/installs/prerequisite_rhcs_cdn_install.yml index 5e7603c0b..e1af07597 100644 --- a/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install.yml +++ b/roles/ceph-common/tasks/installs/prerequisite_rhcs_cdn_install.yml @@ -1,10 +1,4 @@ --- -- name: determine if node is registered with subscription-manager. - command: subscription-manager identity - register: subscription - changed_when: false - always_run: true - - name: check if the red hat storage monitor repo is already present shell: yum --noplugins --cacheonly repolist | grep -sq rhel-7-server-rhceph-{{ ceph_rhcs_version }}-mon-rpms changed_when: false diff --git a/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install_debian.yml b/roles/ceph-common/tasks/installs/prerequisite_rhcs_cdn_install_debian.yml similarity index 100% rename from roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_cdn_install_debian.yml rename to roles/ceph-common/tasks/installs/prerequisite_rhcs_cdn_install_debian.yml diff --git a/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_iso_install.yml b/roles/ceph-common/tasks/installs/prerequisite_rhcs_iso_install.yml similarity index 71% rename from roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_iso_install.yml rename to roles/ceph-common/tasks/installs/prerequisite_rhcs_iso_install.yml index 51ada8e58..302abc519 100644 --- a/roles/ceph-common/tasks/pre_requisites/prerequisite_rhcs_iso_install.yml +++ b/roles/ceph-common/tasks/installs/prerequisite_rhcs_iso_install.yml @@ -42,21 +42,15 @@ fstype: iso9660 state: unmounted -- name: install the red hat ceph storage repository key - apt_key: - file: "{{ ceph_rhcs_repository_path }}/MON/release.asc" +- name: install red hat storage repository key + rpm_key: + key: "{{ ceph_rhcs_repository_path }}/RPM-GPG-KEY-redhat-release" state: present - when: ceph_rhcs_iso_install - -- name: add red hat ceph storage repositories - apt_repository: - repo: "deb file://{{ ceph_rhcs_repository_path }}/{{ item }}/ {{ ansible_lsb.codename }} main" - state: present - changed_when: false - with_items: - - "MON" - - "OSD" - - "Tools" - - "Agent" - when: ceph_rhcs_iso_install +- name: add red hat storage repository + template: + src: "{{ role_path }}/templates/redhat_storage_repo.j2" + dest: /etc/yum.repos.d/rh_storage.repo + owner: root + group: root + mode: 0644 diff --git a/roles/ceph-common/tasks/installs/redhat_ceph_repository.yml b/roles/ceph-common/tasks/installs/redhat_ceph_repository.yml deleted file mode 100644 index 4d8ea056e..000000000 --- a/roles/ceph-common/tasks/installs/redhat_ceph_repository.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -- name: install the ceph stable repository key - rpm_key: - key: "{{ ceph_stable_key }}" - state: present - when: ceph_stable - -- name: add ceph stable repository - yum_repository: - name: ceph_stable - description: Ceph Stable repo - gpgcheck: yes - state: present - gpgkey: "{{ ceph_stable_key }}" - baseurl: "{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}/{{ ceph_stable_redhat_distro }}/$basearch" - when: ceph_stable - -- name: fetch ceph development repo file - uri: - url: https://shaman.ceph.com/api/repos/ceph/{{ ceph_dev_branch }}/{{ ceph_dev_sha1 }}/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/repo - return_content: yes - register: ceph_dev_yum_repo - when: ceph_dev - -- name: add ceph development repository - copy: - content: "{{ ceph_dev_yum_repo.content }}" - dest: /etc/yum.repos.d/ceph-dev.repo - owner: root - group: root - backup: yes - when: ceph_dev - -- name: add custom repo - get_url: - url: "{{ ceph_custom_repo }}" - dest: /etc/yum.repos.d - owner: root - group: root - when: ceph_custom - -# Remove yum caches so yum doesn't get confused if we are reinstalling a different ceph version -- name: purge yum cache - command: yum clean all - when: - ansible_pkg_mgr == 'yum' diff --git a/roles/ceph-common/tasks/installs/redhat_community_repository.yml b/roles/ceph-common/tasks/installs/redhat_community_repository.yml new file mode 100644 index 000000000..013f8aa7f --- /dev/null +++ b/roles/ceph-common/tasks/installs/redhat_community_repository.yml @@ -0,0 +1,14 @@ +--- +- name: configure red hat ceph community repository stable key + rpm_key: + key: "{{ ceph_stable_key }}" + state: present + +- name: configure red hat ceph stable community repository + yum_repository: + name: ceph_stable + description: Ceph Stable repo + gpgcheck: yes + state: present + gpgkey: "{{ ceph_stable_key }}" + baseurl: "{{ ceph_mirror }}/rpm-{{ ceph_stable_release }}/{{ ceph_stable_redhat_distro }}/$basearch" diff --git a/roles/ceph-common/tasks/installs/redhat_custom_repository.yml b/roles/ceph-common/tasks/installs/redhat_custom_repository.yml new file mode 100644 index 000000000..273262927 --- /dev/null +++ b/roles/ceph-common/tasks/installs/redhat_custom_repository.yml @@ -0,0 +1,7 @@ +--- +- name: configure red hat custom repository + get_url: + url: "{{ ceph_custom_repo }}" + dest: /etc/yum.repos.d + owner: root + group: root diff --git a/roles/ceph-common/tasks/installs/redhat_dev_repository.yml b/roles/ceph-common/tasks/installs/redhat_dev_repository.yml new file mode 100644 index 000000000..6bc4b065b --- /dev/null +++ b/roles/ceph-common/tasks/installs/redhat_dev_repository.yml @@ -0,0 +1,14 @@ +--- +- name: fetch ceph red hat development repository + uri: + url: https://shaman.ceph.com/api/repos/ceph/{{ ceph_dev_branch }}/{{ ceph_dev_sha1 }}/{{ ansible_distribution | lower }}/{{ ansible_distribution_major_version }}/repo + return_content: yes + register: ceph_dev_yum_repo + +- name: configure ceph red hat development repository + copy: + content: "{{ ceph_dev_yum_repo.content }}" + dest: /etc/yum.repos.d/ceph-dev.repo + owner: root + group: root + backup: yes diff --git a/roles/ceph-common/tasks/installs/redhat_enterprise_repository.yml b/roles/ceph-common/tasks/installs/redhat_enterprise_repository.yml new file mode 100644 index 000000000..40e07d828 --- /dev/null +++ b/roles/ceph-common/tasks/installs/redhat_enterprise_repository.yml @@ -0,0 +1,8 @@ +--- +- include: prerequisite_rhcs_iso_install.yml + when: + - ceph_repository_type == 'iso' + +- include: prerequisite_rhcs_cdn_install.yml + when: + - ceph_repository_type == 'cdn' diff --git a/roles/ceph-common/tasks/main.yml b/roles/ceph-common/tasks/main.yml index d72a89e1b..46313ee8a 100644 --- a/roles/ceph-common/tasks/main.yml +++ b/roles/ceph-common/tasks/main.yml @@ -12,39 +12,9 @@ # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) static: False -- include: ./pre_requisites/prerequisite_rhcs_iso_install.yml - when: - - ceph_rhcs - - ceph_rhcs_iso_install - tags: - - package-install - # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) - static: False - -- include: ./pre_requisites/prerequisite_rhcs_cdn_install.yml - when: - - ceph_rhcs - - ceph_rhcs_cdn_install - - ansible_os_family == "RedHat" - tags: - - package-install - # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) - static: False - -- include: ./pre_requisites/prerequisite_rhcs_cdn_install_debian.yml - when: - - ceph_rhcs - - ceph_rhcs_cdn_install - - ansible_os_family == "Debian" - tags: - - package-install - # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) - static: False - - include: ./installs/install_on_redhat.yml when: - ansible_os_family == 'RedHat' - - not ceph_rhcs tags: - package-install # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) @@ -53,25 +23,6 @@ - include: ./installs/install_on_debian.yml when: - ansible_os_family == 'Debian' - - not ceph_rhcs - tags: - - package-install - # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) - static: False - -- include: ./installs/install_rh_storage_on_redhat.yml - when: - - ceph_rhcs - - ansible_distribution == "RedHat" - tags: - - package-install - # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) - static: False - -- include: ./installs/install_rh_storage_on_debian.yml - when: - - ansible_os_family == 'Debian' - - ceph_rhcs tags: - package-install # Hard code this so we will skip the entire file instead of individual tasks (Default isn't Consistent) @@ -109,7 +60,9 @@ # override ceph_stable_release for ceph_dev and rhcs installations since ceph_stable_release is not mandatory - include: ./release-rhcs.yml - when: (ceph_rhcs or ceph_dev) + when: + - ansible_os_family == 'RedHat' + - ceph_repository in ['rhcs', 'dev'] tags: - always diff --git a/roles/ceph-config/tasks/main.yml b/roles/ceph-config/tasks/main.yml index 551e4cfae..e4ec2b4e4 100644 --- a/roles/ceph-config/tasks/main.yml +++ b/roles/ceph-config/tasks/main.yml @@ -52,7 +52,7 @@ - restart ceph mdss - restart ceph rgws - restart ceph nfss - when: not containerized_deployment + when: not containerized_deployment|bool # ceph-docker-common # only create fetch directory when: @@ -118,4 +118,4 @@ set_fact: fsid: "{{ cluster_uuid.stdout }}" when: generate_fsid - when: containerized_deployment + when: containerized_deployment|bool diff --git a/roles/ceph-defaults/defaults/main.yml b/roles/ceph-defaults/defaults/main.yml index 7e976f64f..473d9cdfb 100644 --- a/roles/ceph-defaults/defaults/main.yml +++ b/roles/ceph-defaults/defaults/main.yml @@ -5,6 +5,22 @@ # GENERAL # ########### +###################################### +# Releases name to number dictionary # +###################################### +ceph_release_num: + dumpling: 0.67 + emperor: 0.72 + firefly: 0.80 + giant: 0.87 + hammer: 0.94 + infernalis: 9 + jewel: 10 + kraken: 11 + luminous: 12 + mimic: 13 + +# Directory to fetch cluster fsid, keys etc... fetch_directory: fetch/ # The 'cluster' variable determines the name of the cluster. @@ -18,16 +34,7 @@ fetch_directory: fetch/ # With that you will be able to run "ceph health" normally cluster: ceph -########### -# INSTALL # -########### - -# Set uid/gid to default '64045' for bootstrap directories. -# '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. -# These values have to be set according to the base OS used by the container image, NOT the host. -bootstrap_dirs_owner: "64045" -bootstrap_dirs_group: "64045" - +# Inventory host group variables mon_group_name: mons osd_group_name: osds rgw_group_name: rgws @@ -45,13 +52,10 @@ mgr_group_name: mgrs # want to set this to False to skip those checks. check_firewall: False -# This variable determines if ceph packages can be updated. If False, the -# package resources will use "state=present". If True, they will use -# "state=latest". -upgrade_ceph_packages: False - -# /!\ EITHER ACTIVE ceph_stable OR ceph_stable_uca OR ceph_dev OR ceph_custom /!\ +############ +# PACKAGES # +############ debian_package_dependencies: - python-pycurl - hdparm @@ -68,69 +72,78 @@ redhat_package_dependencies: - hdparm - python-setuptools +# Whether or not to install the ceph-test package. +ceph_test: false + # Enable the ntp service by default to avoid clock skew on # ceph nodes ntp_service_enabled: true -# Whether or not to install the ceph-test package. -ceph_test: False +# Set uid/gid to default '64045' for bootstrap directories. +# '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. +# These values have to be set according to the base OS used by the container image, NOT the host. +bootstrap_dirs_owner: "64045" +bootstrap_dirs_group: "64045" -## Configure package origin -# -ceph_origin: 'upstream' # or 'distro' or 'local' -# 'distro' means that no separate repo file will be added -# you will get whatever version of Ceph is included in your Linux distro. -# 'local' means that the ceph binaries will be copied over from the local machine - -# LOCAL CEPH INSTALLATION (ceph_origin==local) -# -# Path to DESTDIR of the ceph install -#ceph_installation_dir: "/path/to/ceph_installation/" -# Whether or not to use installer script rundep_installer.sh -# This script takes in rundep and installs the packages line by line onto the machine -# If this is set to false then it is assumed that the machine ceph is being copied onto will already have -# all runtime dependencies installed -#use_installer: false -# Root directory for ceph-ansible -#ansible_dir: "/path/to/ceph-ansible" +# This variable determines if ceph packages can be updated. If False, the +# package resources will use "state=present". If True, they will use +# "state=latest". +upgrade_ceph_packages: False ceph_use_distro_backports: false # DEBIAN ONLY -# STABLE -######## -# COMMUNITY VERSION -ceph_stable: false # use ceph stable branch +########### +# INSTALL # +########### + + +# ORIGIN SOURCE +# +# Choose between: +# - 'repository' means that you will get ceph installed through a new repository. Later below choose between 'community', 'rhcs' or 'dev' +# - 'distro' means that no separate repo file will be added +# you will get whatever version of Ceph is included in your Linux distro. +# 'local' means that the ceph binaries will be copied over from the local machine +ceph_origin: 'dummy' +valid_ceph_origins: + - repository + - distro + - local + + +ceph_repository: dummy +valid_ceph_repository: + - community + - rhcs + - dev + - uca + - custom + + +# REPOSITORY: COMMUNITY VERSION +# +# Enabled when ceph_repository == 'community' +# ceph_mirror: http://download.ceph.com ceph_stable_key: https://download.ceph.com/keys/release.asc ceph_stable_release: dummy ceph_stable_repo: "{{ ceph_mirror }}/debian-{{ ceph_stable_release }}" -###################################### -# Releases name to number dictionary # -###################################### -ceph_release_num: - dumpling: 0.67 - emperor: 0.72 - firefly: 0.80 - giant: 0.87 - hammer: 0.94 - infernalis: 9 - jewel: 10 - kraken: 11 - luminous: 12 - mimic: 13 - # Use the option below to specify your applicable package tree, eg. when using non-LTS Ubuntu versions # # for a list of available Debian distributions, visit http://download.ceph.com/debian-{{ ceph_stable_release }}/dists/ # for more info read: https://github.com/ceph/ceph-ansible/issues/305 -#ceph_stable_distro_source: +#ceph_stable_distro_source: "{{ ansible_lsb.codename }}" # This option is needed for _both_ stable and dev version, so please always fill the right version # # for supported distros, see http://download.ceph.com/rpm-{{ ceph_stable_release }}/ ceph_stable_redhat_distro: el7 -# ENTERPRISE VERSION RED HAT STORAGE (from 1.3) + +# REPOSITORY: RHCS VERSION RED HAT STORAGE (from 1.3) +# +# Enabled when ceph_repository == 'rhcs' +# # This version is only supported on RHEL >= 7.1 # As of RHEL 7.1, libceph.ko and rbd.ko are now included in Red Hat's kernel # packages natively. The RHEL 7.1 kernel packages are more stable and secure than @@ -143,48 +156,64 @@ ceph_stable_redhat_distro: el7 # on RHEL 7. # # -# Backward compatibility of variable names -# Commit 492518a2 changed variable names of rhcs installations -# to not break backward compatiblity we re-declare these variables -# with the content of the new variable -ceph_rhcs: "{{ ceph_stable_rh_storage | default(false) }}" -# This will affect how/what repositories are enabled depending on the desired -# version. The previous version was 1.3. The current version is 2. ceph_rhcs_version: "{{ ceph_stable_rh_storage_version | default(2) }}" -ceph_rhcs_cdn_install: "{{ ceph_stable_rh_storage_cdn_install | default(false) }}" # assumes all the nodes can connect to cdn.redhat.com -ceph_rhcs_cdn_debian_repo: https://customername:customerpasswd@rhcs.download.redhat.com -ceph_rhcs_iso_install: "{{ ceph_stable_rh_storage_iso_install | default(false) }}" # usually used when nodes don't have access to cdn.redhat.com +ceph_repository_type: dummy +valid_ceph_repository_type: + - cdn + - iso ceph_rhcs_iso_path: "{{ ceph_stable_rh_storage_iso_path | default('') }}" ceph_rhcs_mount_path: "{{ ceph_stable_rh_storage_mount_path | default('/tmp/rh-storage-mount') }}" ceph_rhcs_repository_path: "{{ ceph_stable_rh_storage_repository_path | default('/tmp/rh-storage-repo') }}" # where to copy iso's content -# UBUNTU CLOUD ARCHIVE +# REPOSITORY: UBUNTU CLOUD ARCHIVE +# +# Enabled when ceph_repository == 'uca' +# # This allows the install of Ceph from the Ubuntu Cloud Archive. The Ubuntu Cloud Archive # usually has newer Ceph releases than the normal distro repository. # -ceph_stable_uca: false +# #ceph_stable_repo_uca: "http://ubuntu-cloud.archive.canonical.com/ubuntu" #ceph_stable_openstack_release_uca: liberty #ceph_stable_release_uca: "{{ansible_lsb.codename}}-updates/{{ceph_stable_openstack_release_uca}}" -# DEV -# ### -ceph_dev: false # use ceph development branch +# REPOSITORY: DEV +# +# Enabled when ceph_repository == 'dev' +# ceph_dev_branch: master # development branch you would like to use e.g: master, wip-hack ceph_dev_sha1: latest # distinct sha1 to use, defaults to 'latest' (as in latest built) -# CUSTOM -# ### + +# REPOSITORY: CUSTOM +# +# Enabled when ceph_repository == 'custom' +# # Use a custom repository to install ceph. For RPM, ceph_custom_repo should be # a URL to the .repo file to be installed on the targets. For deb, # ceph_custom_repo should be the URL to the repo base. -ceph_custom: false # use custom ceph repository +# ceph_custom_repo: https://server.domain.com/ceph-custom-repo +# ORIGIN: LOCAL CEPH INSTALLATION +# +# Enabled when ceph_repository == 'local' +# +# Path to DESTDIR of the ceph install +#ceph_installation_dir: "/path/to/ceph_installation/" +# Whether or not to use installer script rundep_installer.sh +# This script takes in rundep and installs the packages line by line onto the machine +# If this is set to false then it is assumed that the machine ceph is being copied onto will already have +# all runtime dependencies installed +#use_installer: false +# Root directory for ceph-ansible +#ansible_dir: "/path/to/ceph-ansible" + + ###################### # CEPH CONFIGURATION # ###################### diff --git a/tests/functional/centos/7/bluestore/group_vars/all b/tests/functional/centos/7/bluestore/group_vars/all index f35ee302f..24be5a99c 100644 --- a/tests/functional/centos/7/bluestore/group_vars/all +++ b/tests/functional/centos/7/bluestore/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community cluster: test monitor_interface: eth1 radosgw_interface: eth1 diff --git a/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all b/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all index 2a3d14803..d533b666c 100644 --- a/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/bs-crypt-ded-jrn/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community public_network: "192.168.11.0/24" cluster_network: "192.168.12.0/24" journal_size: 100 diff --git a/tests/functional/centos/7/bs-crypt-jrn-col/group_vars/all b/tests/functional/centos/7/bs-crypt-jrn-col/group_vars/all index 6b701dc86..f2ae187e8 100644 --- a/tests/functional/centos/7/bs-crypt-jrn-col/group_vars/all +++ b/tests/functional/centos/7/bs-crypt-jrn-col/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community public_network: "192.168.13.0/24" cluster_network: "192.168.14.0/24" journal_size: 100 diff --git a/tests/functional/centos/7/bs-dock-crypt-jrn-col/group_vars/all b/tests/functional/centos/7/bs-dock-crypt-jrn-col/group_vars/all index 7b96a4f7e..17f7d3ba0 100644 --- a/tests/functional/centos/7/bs-dock-crypt-jrn-col/group_vars/all +++ b/tests/functional/centos/7/bs-dock-crypt-jrn-col/group_vars/all @@ -1,7 +1,6 @@ --- docker: true containerized_deployment: True -ceph_stable: True ceph_mon_docker_subnet: "{{ public_network }}" public_network: "192.168.23.0/24" cluster_network: "192.168.24.0/24" diff --git a/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all b/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all index 44232c7c6..4197480ce 100644 --- a/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/bs-dock-ded-jrn/group_vars/all @@ -3,7 +3,6 @@ # that this scenario is using docker docker: True -ceph_stable: True containerized_deployment: True cluster: test monitor_interface: eth1 diff --git a/tests/functional/centos/7/bs-docker/group_vars/all b/tests/functional/centos/7/bs-docker/group_vars/all index 6f34d9eae..4b2fc1cc1 100644 --- a/tests/functional/centos/7/bs-docker/group_vars/all +++ b/tests/functional/centos/7/bs-docker/group_vars/all @@ -3,7 +3,6 @@ # that this scenario is using docker docker: True -ceph_stable: True containerized_deployment: True cluster: test monitor_interface: eth1 diff --git a/tests/functional/centos/7/bs-jrn-col/group_vars/all b/tests/functional/centos/7/bs-jrn-col/group_vars/all index 6d4fc1190..8e4baf863 100644 --- a/tests/functional/centos/7/bs-jrn-col/group_vars/all +++ b/tests/functional/centos/7/bs-jrn-col/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community cluster: test monitor_interface: eth1 radosgw_interface: eth1 diff --git a/tests/functional/centos/7/cluster/group_vars/all b/tests/functional/centos/7/cluster/group_vars/all index e90587a26..5e3e67819 100644 --- a/tests/functional/centos/7/cluster/group_vars/all +++ b/tests/functional/centos/7/cluster/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community cluster: test public_network: "192.168.1.0/24" cluster_network: "192.168.2.0/24" diff --git a/tests/functional/centos/7/crypt-ded-jrn/group_vars/all b/tests/functional/centos/7/crypt-ded-jrn/group_vars/all index ef1fa393c..c99b892f5 100644 --- a/tests/functional/centos/7/crypt-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/crypt-ded-jrn/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community public_network: "192.168.11.0/24" cluster_network: "192.168.12.0/24" journal_size: 100 diff --git a/tests/functional/centos/7/crypt-jrn-col/group_vars/all b/tests/functional/centos/7/crypt-jrn-col/group_vars/all index e7c2134de..6ded58382 100644 --- a/tests/functional/centos/7/crypt-jrn-col/group_vars/all +++ b/tests/functional/centos/7/crypt-jrn-col/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community public_network: "192.168.13.0/24" cluster_network: "192.168.14.0/24" journal_size: 100 diff --git a/tests/functional/centos/7/docker-crypt-jrn-col/group_vars/all b/tests/functional/centos/7/docker-crypt-jrn-col/group_vars/all index b042cb62d..49336fbfd 100644 --- a/tests/functional/centos/7/docker-crypt-jrn-col/group_vars/all +++ b/tests/functional/centos/7/docker-crypt-jrn-col/group_vars/all @@ -3,7 +3,6 @@ # that this scenario is using docker docker: True -ceph_stable: True containerized_deployment: True cluster: ceph monitor_interface: eth1 diff --git a/tests/functional/centos/7/docker-ded-jrn/group_vars/all b/tests/functional/centos/7/docker-ded-jrn/group_vars/all index 74c84409f..03e8f233d 100644 --- a/tests/functional/centos/7/docker-ded-jrn/group_vars/all +++ b/tests/functional/centos/7/docker-ded-jrn/group_vars/all @@ -3,7 +3,6 @@ # that this scenario is using docker docker: True -ceph_stable: True containerized_deployment: True cluster: test monitor_interface: eth1 diff --git a/tests/functional/centos/7/docker/group_vars/all b/tests/functional/centos/7/docker/group_vars/all index 864ec8c9f..265db4964 100644 --- a/tests/functional/centos/7/docker/group_vars/all +++ b/tests/functional/centos/7/docker/group_vars/all @@ -3,7 +3,6 @@ # that this scenario is using docker docker: True -ceph_stable: True containerized_deployment: True cluster: test monitor_interface: eth1 diff --git a/tests/functional/centos/7/docker/hosts b/tests/functional/centos/7/docker/hosts index 9683f9760..25807504d 100644 --- a/tests/functional/centos/7/docker/hosts +++ b/tests/functional/centos/7/docker/hosts @@ -16,4 +16,4 @@ rgw0 mgr0 [clients] -client0 +client0 ceph_origin="repository" ceph_repository="community" containerized_deployment="False" diff --git a/tests/functional/centos/7/jrn-col/group_vars/all b/tests/functional/centos/7/jrn-col/group_vars/all index 88d7a335d..7e6ef1b4d 100644 --- a/tests/functional/centos/7/jrn-col/group_vars/all +++ b/tests/functional/centos/7/jrn-col/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community cluster: test public_network: "192.168.3.0/24" cluster_network: "192.168.4.0/24" diff --git a/tests/functional/dev_setup.yml b/tests/functional/dev_setup.yml index bf07351c6..1fa60cda5 100644 --- a/tests/functional/dev_setup.yml +++ b/tests/functional/dev_setup.yml @@ -6,16 +6,10 @@ - vagrant_setup tasks: - - name: change ceph_stable to False + - name: change ceph_repository to 'dev' replace: - regexp: "ceph_stable:.*" - replace: "ceph_stable: False" - dest: "{{ change_dir }}/group_vars/all" - when: change_dir is defined - - - name: set ceph_dev to True - lineinfile: - line: "ceph_dev: True" + regexp: "ceph_repository:.*" + replace: "ceph_repository: dev" dest: "{{ change_dir }}/group_vars/all" when: change_dir is defined diff --git a/tests/functional/rhcs_setup.yml b/tests/functional/rhcs_setup.yml index 78f131f87..00f813103 100644 --- a/tests/functional/rhcs_setup.yml +++ b/tests/functional/rhcs_setup.yml @@ -27,22 +27,17 @@ dest: "{{ change_dir }}/vagrant_variables.yml" when: change_dir is defined - - name: change ceph_stable to False + - name: change ceph_origin to distro replace: - regexp: "ceph_stable:.*" - replace: "ceph_stable: False" + regexp: "ceph_origin:.*" + replace: "ceph_origin: distro" dest: "{{ change_dir }}/group_vars/all" when: change_dir is defined - - name: set ceph_rhcs to True - lineinfile: - line: "ceph_rhcs: True" - dest: "{{ change_dir }}/group_vars/all" - when: change_dir is defined - - - name: set ceph_origin to distro - lineinfile: - line: "ceph_origin: distro" + - name: change ceph_repository to rhcs + replace: + regexp: "ceph_repository:.*" + replace: "ceph_repository: rhcs" dest: "{{ change_dir }}/group_vars/all" when: change_dir is defined @@ -55,7 +50,8 @@ tasks: - name: check if it is Atomic host - stat: path=/run/ostree-booted + stat: + path: /run/ostree-booted register: stat_ostree always_run: true diff --git a/tests/functional/ubuntu/16.04/cluster/group_vars/all b/tests/functional/ubuntu/16.04/cluster/group_vars/all index 2fdb5cd32..b12fab9c9 100644 --- a/tests/functional/ubuntu/16.04/cluster/group_vars/all +++ b/tests/functional/ubuntu/16.04/cluster/group_vars/all @@ -1,6 +1,7 @@ --- -ceph_stable: True +ceph_origin: repository +ceph_repository: community cluster: test public_network: "192.168.5.0/24" cluster_network: "192.168.6.0/24" diff --git a/tox.ini b/tox.ini index f6359c292..31355e921 100644 --- a/tox.ini +++ b/tox.ini @@ -152,7 +152,7 @@ changedir= commands= rhcs: ansible-playbook -vv -i "localhost," -c local {toxinidir}/tests/functional/rhcs_setup.yml --extra-vars "change_dir={changedir}" --tags "vagrant_setup" - dev: ansible-playbook -vv -i "localhost," -c local {toxinidir}/tests/functional/dev_setup.yml --extra-vars "change_dir={changedir}" --tags "vagrant_setup" + dev: ansible-playbook -vv -i "localhost," -c local {toxinidir}/tests/functional/dev_setup.yml --extra-vars "change_dir={changedir} ceph_dev_branch={env:CEPH_DEV_BRANCH:master} ceph_dev_sha1={env:CEPH_DEV_SHA1:latest}" --tags "vagrant_setup" vagrant up --no-provision {posargs:--provider=virtualbox} bash {toxinidir}/tests/scripts/generate_ssh_config.sh {changedir}