install

A few different distributions are supported with some flags to allow some customization for installing ceph on remote nodes.

Supported distributions:

  • Ubuntu
  • Debian
  • Fedora
  • RedHat
  • CentOS
  • Suse
  • Scientific Linux
  • Arch Linux

Before any action is taken, a platform detection call is done to make sure that the platform that will get ceph installed is the correct one. If the platform is not supported no further actions will proceed and an error message will be displayed, similar to:

[ceph_deploy][ERROR ] UnsupportedPlatform: Platform is not supported: Mandriva

Distribution Notes

RPMs

On RPM-based distributions, yum-plugin-priorities is installed to make sure that upstream ceph.com repos have a higher priority than distro repos.

Because of packaging splits that are present in downstream repos that may not be present in ceph.com repos, ceph-deploy enables the check_obsoletes flag for the Yum priorities plugin.

Changed in version 1.5.22: Enable check_obsoletes by default

RHEL

When installing packages on systems running Red Hat Enterprise Linux (RHEL), ceph-deploy will not install the latest upstream release by default. On other distros, running ceph-deploy install without the --release flag will install the latest upstream release by default (i.e. firefly, giant, etc). On RHEL, the --release flag must be used if you wish to use the upstream packages hosted on http://ceph.com.

Changed in version 1.5.22: Require --release flag to get upstream packages on RHEL

Specific Releases

By default the latest release is assumed. This value changes when newer versions are available. If you are automating deployments it is better to specify exactly what release you need:

ceph-deploy install --release emperor {host}

Note that the --stable flag for specifying a Ceph release is deprecated and should no longer be used starting from version 1.3.6.

New in version 1.4.0.

Unstable releases

If you need to test cutting edge releases or a specific feature of ceph that has yet to make it to a stable release you can specify this as well with ceph-deploy with a couple of flags.

To get the latest development release:

ceph-deploy install --testing {host}

For a far more granular approach, you may want to specify a branch or a tag from the repository, if none specified it fall backs to the latest commit in master:

ceph-deploy install --dev {branch or tag} {host}

Behind Firewall

For restrictive environments there are a couple of options to be able to install ceph.

If hosts have had some customizations with custom repositories and all is needed is to proceed with a install of ceph, we can skip altering the source repositories like:

ceph-deploy install --no-adjust-repos {host}

Note that you will need to have working repositories that have all the dependencies that ceph needs. In some distributions, other repos (besides the ceph repos) will be added, like EPEL for CentOS.

However, if there is a ceph repo mirror already set up you can point to it before installation proceeds. For this specific action you will need two arguments passed in (or optionally use environment variables).

The repository URL and the GPG URL can be specified like this:

ceph-deploy install --repo-url {http mirror} --gpg-url {http gpg url} {host}

Optionally, you can use the following environment variables:

  • CEPH_DEPLOY_REPO_URL
  • CEPH_DEPLOY_GPG_URL

Those values will be used to write to the ceph sources.list (in Debian and Debian-based distros) or the yum.repos file for RPM distros and will skip trying to compose the right URL for the release being installed.

Note

It is currently not possible to specify what version/release is to be installed when --repo-url is used.

It is strongly suggested that both flags be provided. However, the --gpg-url will default to the current one in the ceph repository:

https://download.ceph.com/keys/release.asc

New in version 1.3.3.

Local Mirrors

ceph-deploy supports local mirror installation by syncing a repository to remote servers and configuring correctly the remote hosts to install directly from those local paths (as opposed to going through the network).

The one requirement for this option to work is to have a release.asc at the top of the directory that holds the repository files.

That file is used by Ceph as the key for its signed packages and it is usually retrieved from:

https://download.ceph.com/keys/release.asc

This is how it would look the process to get Ceph installed from a local repository in an admin host:

$ ceph-deploy install --local-mirror ~/tmp/rpm-mirror/ceph.com/rpm-emperor/el6 node2
[ceph_deploy.cli][INFO  ] Invoked (1.4.1): /bin/ceph-deploy install --local-mirror /Users/alfredo/tmp/rpm-mirror/ceph.com/rpm-emperor/el6 node2
[ceph_deploy.install][DEBUG ] Installing stable version emperor on cluster ceph hosts node2
[ceph_deploy.install][DEBUG ] Detecting platform for host node2 ...
[node2][DEBUG ] connected to host: node2
[node2][DEBUG ] detect platform information from remote host
[node2][DEBUG ] detect machine type
[ceph_deploy.install][INFO  ] Distro info: CentOS 6.4 Final
[node2][INFO  ] installing ceph on node2
[node2][INFO  ] syncing file: noarch/ceph-deploy-1.3-0.noarch.rpm
[node2][INFO  ] syncing file: noarch/ceph-deploy-1.3.1-0.noarch.rpm
[node2][INFO  ] syncing file: noarch/ceph-deploy-1.3.2-0.noarch.rpm
[node2][INFO  ] syncing file: noarch/ceph-release-1-0.el6.noarch.rpm
[node2][INFO  ] syncing file: noarch/index.html
[node2][INFO  ] syncing file: noarch/index.html?C=D;O=A
[node2][INFO  ] syncing file: noarch/index.html?C=D;O=D
[node2][INFO  ] syncing file: noarch/index.html?C=M;O=A
...
[node2][DEBUG ]
[node2][DEBUG ] Installed:
[node2][DEBUG ]   ceph.x86_64 0:0.72.1-0.el6
[node2][DEBUG ]
[node2][DEBUG ] Complete!
[node2][INFO  ] Running command: sudo ceph --version
[node2][DEBUG ] ceph version 0.72.1
(4d923861868f6a15dcb33fef7f50f674997322de)

New in version 1.5.0.

Repo file only

The install command has a flag that offers flexibility for installing “repo files” only, avoiding installation of ceph and its dependencies.

These “repo files” are the configuration files for package managers (“yum” or “apt” for example) that point to the right repository information so that certain packages become available.

For APT these files would be list files and for YUM they would be repo files. Regardless of the package manager, ceph-deploy is able to install this file correctly so that the Ceph packages are available. This is useful in a situation where a massive upgrade is needed and ceph-deploy would be too slow to install sequentially in every host.

Repositories are specified in the cephdeploy.conf (or $HOME/.cephdeploy.conf) file. If a specific repository section is needed, it can be specified with the --release flag:

ceph-deploy install --repo --release firefly {HOSTS}

The above command would install the firefly repo file in every {HOST} specified.

If a repository section exists with the default = True flag, there is no need to specify anything else and the repo file can be installed simply by passing in the hosts:

ceph-deploy install --repo {HOSTS}

New in version 1.5.10.