summaryrefslogtreecommitdiffstats
path: root/doc/mgr/orchestrator_cli.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/mgr/orchestrator_cli.rst')
-rw-r--r--doc/mgr/orchestrator_cli.rst295
1 files changed, 295 insertions, 0 deletions
diff --git a/doc/mgr/orchestrator_cli.rst b/doc/mgr/orchestrator_cli.rst
new file mode 100644
index 00000000..6ee37845
--- /dev/null
+++ b/doc/mgr/orchestrator_cli.rst
@@ -0,0 +1,295 @@
+
+.. _orchestrator-cli-module:
+
+================
+Orchestrator CLI
+================
+
+This module provides a command line interface (CLI) to orchestrator
+modules (ceph-mgr modules which interface with external orchestation services)
+
+As the orchestrator CLI unifies different external orchestrators, a common nomenclature
+for the orchestrator module is needed.
+
++--------------------------------------+---------------------------------------+
+| host | hostname (not DNS name) of the |
+| | physical host. Not the podname, |
+| | container name, or hostname inside |
+| | the container. |
++--------------------------------------+---------------------------------------+
+| service type | The type of the service. e.g., nfs, |
+| | mds, osd, mon, rgw, mgr, iscsi |
++--------------------------------------+---------------------------------------+
+| service | A logical service, Typically |
+| | comprised of multiple service |
+| | instances on multiple hosts for HA |
+| | |
+| | * ``fs_name`` for mds type |
+| | * ``rgw_zone`` for rgw type |
+| | * ``ganesha_cluster_id`` for nfs type |
++--------------------------------------+---------------------------------------+
+| service instance | A single instance of a service. |
+| |  Usually a daemon, but maybe not |
+| | (e.g., might be a kernel service |
+| | like LIO or knfsd or whatever) |
+| | |
+| | This identifier should |
+| | uniquely identify the instance |
++--------------------------------------+---------------------------------------+
+| daemon | A running process on a host; use |
+| | “service instance” instead |
++--------------------------------------+---------------------------------------+
+
+The relation between the names is the following:
+
+* a service belongs to a service type
+* a service instance belongs to a service type
+* a service instance belongs to a single service group
+
+Configuration
+=============
+
+To enable the orchestrator, please select the orchestrator module to use
+with the ``set backend`` command::
+
+ ceph orchestrator set backend <module>
+
+For example, to enable the Rook orchestrator module and use it with the CLI::
+
+ ceph mgr module enable rook
+ ceph orchestrator set backend rook
+
+You can then check backend is properly configured::
+
+ ceph orchestrator status
+
+Disable the Orchestrator
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+To disable the orchestrator again, use the empty string ``""``::
+
+ ceph orchestrator set backend ""``
+ ceph mgr module disable rook
+
+Usage
+=====
+
+.. warning::
+
+ The orchestrator CLI is unfinished and work in progress. Some commands will not
+ exist, or return a different result.
+
+.. note::
+
+ Orchestrator modules may only implement a subset of the commands listed below.
+ Also, the implementation of the commands are orchestrator module dependent and will
+ differ between implementations.
+
+Status
+~~~~~~
+
+::
+
+ ceph orchestrator status
+
+Show current orchestrator mode and high-level status (whether the module able
+to talk to it)
+
+Also show any in-progress actions.
+
+Host Management
+~~~~~~~~~~~~~~~
+
+List hosts associated with the cluster::
+
+ ceph orchestrator host ls
+
+Add and remove hosts::
+
+ ceph orchestrator host add <host>
+ ceph orchestrator host rm <host>
+
+OSD Management
+~~~~~~~~~~~~~~
+
+List Devices
+^^^^^^^^^^^^
+
+Print a list of discovered devices, grouped by node and optionally
+filtered to a particular node:
+
+::
+
+ ceph orchestrator device ls [--host=...] [--refresh]
+
+Create OSDs
+^^^^^^^^^^^
+
+Create OSDs on a group of devices on a single host::
+
+ ceph orchestrator osd create <host>:<drive>
+ ceph orchestrator osd create -i <path-to-drive-group.json>
+
+
+The output of ``osd create`` is not specified and may vary between orchestrator backends.
+
+Where ``drive.group.json`` is a JSON file containing the fields defined in :class:`orchestrator.DriveGroupSpec`
+
+
+Decommission an OSD
+^^^^^^^^^^^^^^^^^^^
+::
+
+ ceph orchestrator osd rm <osd-id> [osd-id...]
+
+Removes one or more OSDs from the cluster and the host, if the OSDs are marked as
+``destroyed``.
+
+
+..
+ Blink Device Lights
+ ^^^^^^^^^^^^^^^^^^^
+ ::
+
+ ceph orchestrator device ident-on <host> <devname>
+ ceph orchestrator device ident-off <host> <devname>
+ ceph orchestrator device fault-on <host> <devname>
+ ceph orchestrator device fault-off <host> <devname>
+
+ ceph orchestrator osd ident-on {primary,journal,db,wal,all} <osd-id>
+ ceph orchestrator osd ident-off {primary,journal,db,wal,all} <osd-id>
+ ceph orchestrator osd fault-on {primary,journal,db,wal,all} <osd-id>
+ ceph orchestrator osd fault-off {primary,journal,db,wal,all} <osd-id>
+
+ Where ``journal`` is the filestore journal, ``wal`` is the write ahead log of
+ bluestore and ``all`` stands for all devices associated with the osd
+
+
+Monitor and manager management
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Creates or removes MONs or MGRs from the cluster. Orchestrator may return an
+error if it doesn't know how to do this transition.
+
+Update the number of monitor nodes::
+
+ ceph orchestrator mon update <num> [host, host:network...]
+
+Each host can optionally specificy a network for the monitor to listen on.
+
+Update the number of manager nodes::
+
+ ceph orchestrator mgr update <num> [host...]
+
+..
+ .. note::
+
+ The host lists are the new full list of mon/mgr hosts
+
+ .. note::
+
+ specifying hosts is optional for some orchestrator modules
+ and mandatory for others (e.g. Ansible).
+
+
+Service Status
+~~~~~~~~~~~~~~
+
+Print a list of services known to the orchestrator. The list can be limited to
+services on a particular host with the optional --host parameter and/or
+services of a particular type via optional --type parameter
+(mon, osd, mgr, mds, rgw):
+
+::
+
+ ceph orchestrator service ls [--host host] [--svc_type type] [--refresh]
+
+Discover the status of a particular service::
+
+ ceph orchestrator service ls --svc_type type --svc_id <name> [--refresh]
+
+
+Query the status of a particular service instance (mon, osd, mds, rgw). For OSDs
+the id is the numeric OSD ID, for MDS services it is the filesystem name::
+
+ ceph orchestrator service-instance status <type> <instance-name> [--refresh]
+
+
+
+Stateless services (MDS/RGW/NFS/rbd-mirror/iSCSI)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The orchestrator is not responsible for configuring the services. Please look into the corresponding
+documentation for details.
+
+The ``name`` parameter is an identifier of the group of instances:
+
+* a CephFS filesystem for a group of MDS daemons,
+* a zone name for a group of RGWs
+
+Sizing: the ``size`` parameter gives the number of daemons in the cluster
+(e.g. the number of MDS daemons for a particular CephFS filesystem).
+
+Creating/growing/shrinking/removing services::
+
+ ceph orchestrator {mds,rgw} update <name> <size> [host…]
+ ceph orchestrator {mds,rgw} add <name>
+ ceph orchestrator nfs update <name> <size> [host…]
+ ceph orchestrator nfs add <name> <pool> [--namespace=<namespace>]
+ ceph orchestrator {mds,rgw,nfs} rm <name>
+
+e.g., ``ceph orchestrator mds update myfs 3 host1 host2 host3``
+
+Start/stop/reload::
+
+ ceph orchestrator service {stop,start,reload} <type> <name>
+
+ ceph orchestrator service-instance {start,stop,reload} <type> <instance-name>
+
+
+Current Implementation Status
+=============================
+
+This is an overview of the current implementation status of the orchestrators.
+
+=================================== ========= ====== ========= =====
+ Command Ansible Rook DeepSea SSH
+=================================== ========= ====== ========= =====
+ host add ⚪ ⚪ ⚪ ✔️
+ host ls ⚪ ⚪ ⚪ ✔️
+ host rm ⚪ ⚪ ⚪ ✔️
+ mgr update ⚪ ⚪ ⚪ ✔️
+ mon update ⚪ ✔️ ⚪ ✔️
+ osd create ✔️ ✔️ ⚪ ✔️
+ osd device {ident,fault}-{on,off} ⚪ ⚪ ⚪ ⚪
+ osd rm ✔️ ⚪ ⚪ ⚪
+ device {ident,fault}-(on,off} ⚪ ⚪ ⚪ ⚪
+ device ls ✔️ ✔️ ✔️ ✔️
+ service ls ⚪ ✔️ ✔️ ⚪
+ service-instance status ⚪ ⚪ ⚪ ⚪
+ iscsi {stop,start,reload} ⚪ ⚪ ⚪ ⚪
+ iscsi add ⚪ ⚪ ⚪ ⚪
+ iscsi rm ⚪ ⚪ ⚪ ⚪
+ iscsi update ⚪ ⚪ ⚪ ⚪
+ mds {stop,start,reload} ⚪ ⚪ ⚪ ⚪
+ mds add ⚪ ✔️ ⚪ ⚪
+ mds rm ⚪ ✔️ ⚪ ⚪
+ mds update ⚪ ⚪ ⚪ ⚪
+ nfs {stop,start,reload} ⚪ ⚪ ⚪ ⚪
+ nfs add ⚪ ✔️ ⚪ ⚪
+ nfs rm ⚪ ✔️ ⚪ ⚪
+ nfs update ⚪ ⚪ ⚪ ⚪
+ rbd-mirror {stop,start,reload} ⚪ ⚪ ⚪ ⚪
+ rbd-mirror add ⚪ ⚪ ⚪ ⚪
+ rbd-mirror rm ⚪ ⚪ ⚪ ⚪
+ rbd-mirror update ⚪ ⚪ ⚪ ⚪
+ rgw {stop,start,reload} ⚪ ⚪ ⚪ ⚪
+ rgw add ⚪ ✔️ ⚪ ⚪
+ rgw rm ⚪ ✔️ ⚪ ⚪
+ rgw update ⚪ ⚪ ⚪ ⚪
+=================================== ========= ====== ========= =====
+
+where
+
+* ⚪ = not yet implemented
+* ❌ = not applicable
+* ✔ = implemented