Ceph Deploy Configuration¶
Starting with version 1.4, ceph-deploy uses a configuration file that can be one of:
cephdeploy.conf
(in the current directory)$HOME/.cephdeploy.conf
(hidden in the user’s home directory)
This configuration file allows for setting certain ceph-deploy behavior that would be difficult to set on the command line or that it might be cumbersome to do.
The file itself follows the INI style of configurations which means that it consists of sections (in brackets) that may contain any number of key/value pairs.
If a configuration file is not found in the current working directory nor in the user’s home dir, ceph-deploy will proceed to create one in the home directory.
This is how a default configuration file would look like:
#
# ceph-deploy configuration file
#
[ceph-deploy-global]
# Overrides for some of ceph-deploy's global flags, like verbosity or cluster
# name
[ceph-deploy-install]
# Overrides for some of ceph-deploy's install flags, like version of ceph to
# install
#
# Repositories section
#
# yum repos:
# [myrepo]
# baseurl = https://user:pass@example.org/rhel6
# gpgurl = https://example.org/keys/release.asc
# default = True
# extra-repos = cephrepo # will install the cephrepo file too
#
# [cephrepo]
# name=ceph repo noarch packages
# baseurl=http://ceph.com/rpm-emperor/el6/noarch
# enabled=1
# gpgcheck=1
# type=rpm-md
# gpgkey=https://download.ceph.com/keys/release.asc
# apt repos:
# [myrepo]
# baseurl = https://user:pass@example.org/
# gpgurl = https://example.org/keys/release.asc
# default = True
# extra-repos = cephrepo # will install the cephrepo file too
#
# [cephrepo]
# baseurl=http://ceph.com/rpm-emperor/el6/noarch
# gpgkey=https://download.ceph.com/keys/release.asc
Sections¶
To work with ceph-deploy configurations, it is important to note that all
sections that relate to ceph-deploy’s flags and state are prefixed with
ceph-deploy-
followed by the subcommand or by global
if it is something
that belongs to the global flags.
Any other section that is not prefixed with ceph-deploy-
is considered
a repository.
Repositories can be very complex to describe and most of the time (specially for yum repositories) they can be very verbose too.
Setting Default Flags or Values¶
Because the configuration loading allows specifying the same flags as in the CLI it is possible to set defaults. For example, assuming that a user always wants to install Ceph the following way (that doesn’t create/modify remote repo files):
ceph-deploy install --no-adjust-repos {nodes}
This can be the default behavior by setting it in the right section in the configuration file, which should look like this:
[ceph-deploy-install]
adjust_repos = False
The default for adjust_repos
is True
, but because we are changing this
to False
the CLI will now have this behavior changed without the need to
pass any flag.
Repository Sections¶
Keys will depend on the type of package manager that will use it. Certain keys
for yum are required (like baseurl
) and some others like gpgcheck
are
optional.
For both yum and apt these would be all the required keys in a repository section:
- baseurl
- gpgkey
If a required key is not present ceph-deploy will abort the installation process with an error identifying the section and key what was missing.
In yum the repository name is taken from the section, so if the section is
[foo]
, then the name of the repository will be foo repo
and the
filename written to /etc/yum.repos.d/
will be foo.repo
.
For apt, the same happens except the directory location changes to:
/etc/apt/sources.list.d/
and the file becomes foo.list
.
Optional values for yum¶
name: A descriptive name for the repository. If not provided {repo
section} repo
is used
enabled: Defaults to 1
gpgcheck: Defaults to 1
type: Defaults to rpm-md
gpgcheck: Defaults to 1
Default Repository¶
For installations where a default repository is needed a key can be added to that section to indicate it is the default one:
[myrepo]
default = true
When a default repository is detected it is mentioned in the log output and ceph will get install from that one repository at the end.
Extra Repositories¶
If other repositories need to be installed aside from the main one, a key should be added to represent that need with a comma separated value with the name of the sections of the other repositories (just like the example configuration file demonstrates):
[myrepo]
baseurl = https://user:pass@example.org/rhel6
gpgurl = https://example.org/keys/release.asc
default = True
extra-repos = cephrepo # will install the cephrepo file too
[cephrepo]
name=ceph repo noarch packages
baseurl=http://ceph.com/rpm-emperor/el6/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
In this case, the repository called myrepo
defines the extra-repos
key
with just one extra one: cephrepo
.
This extra repository must exist as a section in the configuration file. After the main one is added all the extra ones defined will follow. Installation of Ceph will only happen with the main repository.