The resulting keyring is fed to ``ceph-mon --mkfs`` with the ``--keyring <keyring>`` command-line argument.
Cluster fsid
============
The cluster fsid is a normal uuid, like that generated by the ``uuidgen`` command. It
can be provided to the monitor in two ways:
#. via the ``--fsid <uuid>`` command-line argument (or config file option)
#. via a monmap provided to the new monitor via the ``--monmap <path>`` command-line argument.
Monitor address
===============
The monitor address can be provided in several ways.
#. via the ``--public-addr <ip[:port]>`` command-line option (or config file option)
#. via the ``--public-network <cidr>`` command-line option (or config file option)
#. via the monmap provided via ``--monmap <path>``, if it includes a monitor with our name
#. via the bootstrap monmap (provided via ``--monmap <path>`` or generated from ``--mon-host <list>``) if it includes a monitor with no name (``noname-<something>``) and an address configured on the local host.
Peers
=====
The monitor peers are provided in several ways:
#. via the initial monmap, provided via ``--monmap <filename>``
#. via the bootstrap monmap generated from ``--mon-host <list>``
#. via the bootstrap monmap generated from ``[mon.*]`` sections with ``mon addr`` in the config file
#. dynamically via the admin socket
However, these methods are not completely interchangeable because of
the complexity of creating a new monitor cluster without danger of
races.
Cluster creation
================
There are three basic approaches to creating a cluster:
#. Create a new cluster by specifying the monitor names and addresses ahead of time.
#. Create a new cluster by specifying the monitor names ahead of time, and dynamically setting the addresses as ``ceph-mon`` daemons configure themselves.
#. Create a new cluster by specifying the monitor addresses ahead of time.
Names and addresses
-------------------
Generate a monmap using ``monmaptool`` with the names and addresses of the initial
monitors. The generated monmap will also include a cluster fsid. Feed that monmap
Once they learn enough of their peers from the initial member set,
they will be able to create the cluster.
Cluster expansion
=================
Cluster expansion is slightly less demanding than creation, because
the creation of the initial quorum is not an issue and there is no
worry about creating separately independent clusters.
New nodes can be forced to join an existing cluster in two ways:
#. by providing no initial monitor peers addresses, and feeding them dynamically.
#. by specifying the ``mon initial members`` config option to prevent the new nodes from forming a new, independent cluster, and feeding some existing monitors via any available method.
Initially peerless expansion
----------------------------
Create a new monitor and give it no peer addresses other than it's own. For