Skip to main content

Cephadm

@randybias/cephadmv2026.10.17.3beta· 9d agoBEHAVIORSWORKFLOWSACCEPTED WARNINGS
01README

Install and operate a standalone Ceph cluster managed by cephadm on Debian-family Linux hosts reached over SSH. One model type drives host preparation, disk wiping, bootstrap, daemon placement, pools, CephFS, RGW users and buckets, maintenance and teardown.

02Behaviors1
@randybias/cephadmv2026.10.17.3cephadm.ts

Resources

hostkeys(infinite)— SSH host keys pinned for one host and port, learned on first insecure_tofu use
cephVerifyResult(infinite)— A shared verify-result record: method, host, pass, expected, actual, detail and optional subject
hostPrepResult(infinite)— Host preparation evidence: packages, cephadm version and time sync
wipeDiskResult(infinite)— Disk wipe evidence and, on a dry run, its plan
cephBootstrapResult(infinite)— Bootstrap evidence: fsid, public key and admin keyring reference
cephDistributeKeyResult(infinite)— Per-host admin-key distribution evidence
cephHostAddResult(infinite)— Host enrolment evidence
cephApplyMonResult(infinite)— Mon placement convergence and quorum-safety evidence
cephApplyMgrResult(infinite)— Mgr placement convergence evidence
cephApplyMdsResult(infinite)— MDS placement convergence evidence
cephApplyOsdResult(infinite)— OSD service application evidence
cephMaintenanceResult(infinite)— Maintenance enter or exit evidence
cephHostMaintenanceStateResult(infinite)— Which hosts are out by maintenance status or subtree noout
cephOkToStopResult(infinite)— Orchestrator ok-to-stop verdict
cephCheckHostResult(infinite)— cephadm check-host classification
cephNooutClearResult(infinite)— Subtree noout clear evidence
cephOsdActivateResult(infinite)— OSD activation evidence
cephHostClusterStateResult(infinite)— Ceph state carried on a host's OS disk
cephClusterFsidResult(infinite)— Per-host fsid gate evidence
cephOrchestrationDisableResult(infinite)— Orchestration disable outcome
cephRmClusterResult(infinite)— Cluster purge evidence
cephHostTornDownResult(infinite)— OS-disk teardown verdict
cephRgwBucketInventoryResult(infinite)— RGW bucket inventory with placement and totals
cephRgwUserResult(infinite)— RGW user convergence with a generated, sensitive key
cephRgwBucketInspectResult(infinite)— One bucket's presence, ACL, policy, versioning and Public Access Block as seen by the owner's credentials
cephRgwBucketResult(infinite)— RGW bucket convergence: ownership, private ACL, full Public Access Block and live leak-probe evidence
cephRgwBucketPolicyResult(infinite)— RGW bucket policy convergence: canonical form, anonymous probe and plain-HTTP probe evidence
cephRgwBucketVersioningResult(infinite)— RGW bucket versioning state before and after convergence
cephCapacityReport(7d)— Cluster and per-pool capacity with the durability margin
poolResult(infinite)— Pool creation and convergence evidence
fsResult(infinite)— CephFS volume creation evidence
csiUserResult(infinite)— CSI client entity caps as read back
connBundleResult(infinite)— Non-secret connection facts
csiKey(infinite)— One client entity's key, stored via a sensitive field in the vault
fsDeleteResult(infinite)— CephFS deletion evidence
osdRemoveResult(infinite)— OSD removal evidence
03Workflows22
@randybias/cephadm-add-host2be833ce-0314-4aed-846b-5a04e0fbb804

Register one host with the orchestrator and read the host list back

addApprove and register the host with the orchestrator
1.approve— Approve registering the named host at the named address
2.host-addcephadm.cephHostAdd— Register the host and read the orchestrator host list
proveRead the host list back and assert the host is present
1.read-maintenance-statecephadm.cephHostMaintenanceState— Read orchestrator host state single-shot via ceph
2.assert-host-present— Assert the host list contains the registered hostname
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-apply-mds7108b353-c716-49b6-aba8-38c9c9f2e614

Place a filesystem's MDS daemons on an explicit list of hosts

applyApprove and place the filesystem MDS daemons
1.approve— Approve placing the filesystem MDS on the listed hosts
2.apply-mdscephadm.cephApplyMds— Apply the explicit MDS placement through the orchestrator
proveRead the filesystem data pool and MDS state, then assert
1.verify-poolcephadm.cephVerifyPool— Check the data pool and an active MDS via ceph
2.assert-mds— Assert the filesystem has an active MDS
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-apply-mgred4e079e-d2b1-4332-a76c-cb201fc0a65d

Converge mgr daemons to an explicit host list after a placement check

applyCheck mgr placement, approve, then converge the mgr set
1.gate-mgr-placementcephadm.cephVerifyMgrPlacement— Judge the requested mgr placement without applying it
2.assert-mgr-placement— Assert the mgr placement is safe to apply
3.approve— Approve converging the mgr set to the listed hosts
4.recheck-mgr-placementcephadm.cephVerifyMgrPlacement— Re-judge the mgr placement after approval
5.assert-recheck-mgr-placement— Assert the post-approval mgr placement re-check passed
6.apply-mgrcephadm.cephApplyMgr— Apply the explicit mgr placement through the orchestrator
proveRead mgr state and assert the expected count is active
1.verify-mgrcephadm.cephVerifyMgr— Check the mgr count and active mgr via ceph
2.assert-mgr— Assert the mgr count and active mgr match
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-apply-mon815d952d-10c9-4e9d-9af7-a79c751bc7b2

Converge mons to an explicit host list and wait for quorum to settle

applyCheck mon placement, approve, then converge the mon set
1.gate-mon-placementcephadm.cephVerifyMonPlacement— Judge the requested mon placement without applying it
2.assert-mon-placement— Assert the placement is safe to apply
3.approve— Approve converging the mon set to the listed hosts
4.recheck-mon-placementcephadm.cephVerifyMonPlacement— Re-judge the mon placement after approval
5.assert-recheck-mon-placement— Assert the post-approval mon placement re-check passed
6.apply-moncephadm.cephApplyMon— Apply the explicit mon placement through the orchestrator
proveWait for quorum to settle and assert it is complete
1.verify-mon-quorumcephadm.cephVerifyMonQuorum— Wait for the mon count and quorum to settle via ceph
2.assert-mon-quorum— Assert every expected mon is in quorum
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-apply-osdscaa80663-efdc-49fd-8330-7bd850fc0589

Apply OSDs on named disks or all available ones, then prove the counts

applyCheck the mode and claimability, approve, then apply the OSDs
1.assert-mode— Assert exactly one OSD selection mode is fully specified
2.gate-osd-claimablecephadm.cephVerifyOsdClaimable— Judge the requested devices without claiming them
3.assert-osd-claimable— Assert the selected devices are claimable
4.approve— Approve applying OSDs in the selected mode
5.assert-recheck-mode— Re-check the OSD mode inputs after approval
6.recheck-osd-claimablecephadm.cephVerifyOsdClaimable— Re-judge claimable disks after approval
7.assert-recheck-osd-claimable— Assert the post-approval claimable re-check passed
8.apply-osdscephadm.cephApplyOsd— Apply the OSD service through the orchestrator
proveWait for the OSD counts to settle and assert them
1.verify-osdscephadm.cephVerifyOsd— Wait for OSD up and in counts and the failure domain via ceph
2.assert-osds— Assert the OSD counts and failure domain match
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-bootstrap-cluster1543b328-235e-4b81-8d3e-a80cf23c322c

Bootstrap a new cluster on one host and prove the first mon is in quorum

bootstrapApprove and bootstrap a new cluster on the host
1.approve— Approve bootstrapping a new cluster on the named host
2.bootstrap-clustercephadm.cephBootstrap— Bootstrap the first mon and cluster via SSH
proveRead mon quorum and assert the first mon is in quorum
1.verify-mon-quorumcephadm.cephVerifyMonQuorum— Check the mon count and quorum via ceph, single-shot
2.assert-mon-quorum— Assert the first mon is in quorum
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-create-csi-user9df89b30-9782-4840-8bc5-201ba0c5b50a

Create or converge a client entity's caps and prove that it exists

createApprove and set the client entity caps
1.approve— Approve creating or converging the client entity
2.create-csi-usercephadm.cephCreateCsiUser— Create the entity and set its caps via ceph
proveRead the client entities back and assert the entity exists
1.verify-csi-userscephadm.cephVerifyCsiUsers— Read the client entity list and caps via ceph
2.assert-csi-user— Assert the client entity exists; caps are set, not re-read
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-create-fs65906dbc-3d95-43d4-afb7-b320ed8c045b

Create or adopt a CephFS volume with MDS daemons on named hosts

createApprove and create or adopt the CephFS volume
1.approve— Approve creating the volume with MDS on the listed hosts
2.create-fscephadm.cephCreateFs— Create or adopt the volume and place its MDS via ceph
proveRead the data pool and MDS state, then assert the volume
1.verify-poolcephadm.cephVerifyPool— Check the data pool and an active MDS via ceph
2.assert-fs— Assert the volume data pool and active MDS
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-create-poolad0b99fb-073f-4e09-aac2-51282e1ac092

Create or converge a replicated or erasure-coded pool and verify it

createCheck the scheme inputs, approve, then create the pool
1.assert-scheme-inputs— Assert the scheme and its one matching size input
2.approve— Approve creating or converging the named pool
3.assert-recheck-scheme— Re-check the scheme inputs after approval
4.create-poolcephadm.cephCreatePool— Create or converge the pool through ceph
proveRead the pool back and assert its shape
1.verify-poolcephadm.cephVerifyPool— Read the pool size, PGs and EC shape via ceph, single-shot
2.assert-pool— Assert the pool shape matches the request
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-delete-fs13aa3a10-417e-46a7-8539-acc781085625

Delete one CephFS volume and its pools after a typed confirmation

deleteCapture evidence, confirm the volume, approve, then delete
1.evidence-beforecephadm.cephGetConnBundle— Capture the connection bundle before the deletion
2.assert-confirm— Assert the confirmation matches and the volume is present
3.approve— Approve deleting the volume and its backing pools
4.recheck-evidencecephadm.cephGetConnBundle— Re-read the connection bundle after approval
5.assert-recheck-confirm— Assert the post-approval confirmation re-check passed
6.delete-fscephadm.cephDeleteFs— Delete the volume, its MDS and its pools via ceph
proveCapture the connection bundle after and assert the volume is gone
1.evidence-aftercephadm.cephGetConnBundle— Capture the connection bundle after the deletion
2.assert-deleted— Assert the fresh bundle omits the volume
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-distribute-key70eb27e6-f5ec-435d-a020-ba9f25796cfd

Install the cluster public key on hosts and prove cephadm can reach them

distributeCheck the ports, approve, then append the cluster key
1.assert-single-port— Assert every listed host uses the single read-back port
2.approve— Approve installing the cluster key on the listed hosts
3.assert-recheck-port— Re-check the single-port input after approval
4.distribute-keycephadm.cephDistributeKey— Append the cluster public key on each host via SSH
prove-keyRe-read authorized_keys on every host and assert the key is there
1.verify-key-distributedcephadm.cephVerifyKeyDistributed— Re-read authorized_keys per host via a fresh SSH connection
2.assert-key-distributed— Assert the key is present on every host
check-hostsAsk cephadm on the admin host to check each listed host
1.check-hostcephadm-checkhost-${{ self.hostItem.host }}.cephCephadmCheckHost— Check cephadm reachability for one host on a per-item instance
assert-hostsAssert cephadm reachability from the per-item check records
1.assert-host-reachable— Assert one host's cephadm check from its per-item instance
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-fetch-csi-keybbad3f12-fbc8-447c-9414-dc06f8384772

Read one client entity's key into a vaulted record

fetchRead one client key into the sensitive record
1.fetch-csi-keycephadm.cephFetchCsiKey— Read the client entity's key via ceph into a vaulted record
@randybias/cephadm-get-conn-bundlea58154c3-a7f6-47ab-a507-05f5356f98f2

Capture the cluster's non-secret client connection facts

captureRead fsid, mon endpoints, pools, filesystems and client names
1.get-conn-bundlecephadm.cephGetConnBundle— Capture the non-secret connection bundle via ceph
@randybias/cephadm-inventory-rgw-buckets8e09a594-c794-4ded-8706-e7d7203abe7a

List RGW buckets with per-bucket stats and flag any that cannot be read

captureList every RGW bucket with stats
1.bucket-inventorycephadm.cephRgwBucketInventory— Page the RGW bucket list with stats via ceph
assertAssert every bucket was stat-able
1.assert-buckets-readable— Assert no bucket was unstattable
report-failureReport that nothing was changed by this read
1.report-failure— State that every command was a read and nothing was changed
@randybias/cephadm-prep-host7ee839a8-a8ad-46cc-99a1-ae45ccbd6e20

Install packages, pinned cephadm and time sync on one host

prepareApprove and run host preparation on the named host
1.approve— Approve installing pinned cephadm on the named host
2.host-prepcephadm.cephHostPrep— Install packages and pinned cephadm via SSH
proveRead back host preparation and assert the expected state
1.verify-host-prepcephadm.cephVerifyHostPrep— Read back packages, cephadm version and time sync via ceph
2.assert-host-prep— Assert packages, cephadm version and time sync match
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-remove-osds29cb4eb8-610f-4e90-96cc-232c8e3052a2

Remove OSDs by id after a health gate and prove the remaining counts

removeGate on cluster health, approve, then remove the OSDs
1.gate-healthcephadm.cephVerifyHealth— Read cluster health against the warning allowlist
2.assert-health— Assert cluster health is acceptable before removing OSDs
3.approve— Approve removing the listed OSD ids
4.recheck-healthcephadm.cephVerifyHealth— Re-check cluster health after approval
5.assert-recheck-health— Assert the post-approval health re-check passed
6.remove-osdscephadm.cephRemoveOsds— Drain, remove and optionally zap the OSDs via the orchestrator
proveWait for the OSD counts to settle and assert the remainder
1.verify-osdscephadm.cephVerifyOsd— Wait for the remaining OSD up and in counts via ceph
2.assert-osds— Assert the remaining OSD counts and failure domain
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
@randybias/cephadm-verify-healthdc3f0beb-6342-40f4-9c46-229c3dd78ae0

Check cluster health against an allowlist of warning checks

verifyRead cluster health and halt on a failed verdict
1.verify-healthcephadm.cephVerifyHealth— Check cluster health against the allowlist via ceph
@randybias/cephadm-verify-host-prep1096f5a7-7434-47c5-8a7a-f1b1d28af38d

Check one host's packages, cephadm version and time-sync service

verifyRead host preparation state and halt on a failed verdict
1.verify-host-prepcephadm.cephVerifyHostPrep— Check packages, cephadm version and time sync via ceph
@randybias/cephadm-verify-mgr1e34d83f-0d54-4525-9450-7f76b9fbb40a

Check that the mgr count matches and one mgr is active

verifyRead mgr state and halt on a failed verdict
1.verify-mgrcephadm.cephVerifyMgr— Check the mgr count and active mgr via ceph
@randybias/cephadm-verify-mon-quorum18a0a08f-2024-47cb-b143-72c880ac0de3

Check that the mon count matches and every mon is in quorum

verifyRead mon quorum state and halt on a failed verdict
1.verify-mon-quorumcephadm.cephVerifyMonQuorum— Check the mon count and quorum via ceph, single-shot
@randybias/cephadm-verify-osdsc5ecb33e-44d3-4e5d-b1a9-3ba5f31aeb3c

Check OSD up and in counts and the CRUSH failure domain

verifyRead OSD counts and the failure domain, halting on failure
1.verify-osdscephadm.cephVerifyOsd— Check OSD up and in counts and failure domain via ceph
@randybias/cephadm-wipe-disks3021c0cb-99c8-4879-a7df-05b54d8c393e

Wipe one host's named data disks to raw, with a dry-run mode

wipeGate on raw disks, approve, then wipe or plan the wipe
1.gate-diskscephadm.cephVerifyDisksRaw— Read whether the named disks are already raw
2.assert-gate-raw— Assert no named disk is mounted or unobserved
3.approve— Approve the wipe after the mounted-disk pre-check
4.recheck-diskscephadm.cephVerifyDisksRaw— Re-check the named disks after approval
5.assert-recheck-raw— Assert the post-approval disk re-check passed
6.wipe-diskscephadm.wipeDiskToRaw— Wipe or plan the named disks to raw via SSH
proveRe-read the named disks and assert the wipe result
1.verify-disks-rawcephadm.cephVerifyDisksRaw— Re-read whether the named disks are raw, in both modes
2.assert-wipe— Assert the dry-run plan or the completed wipe
report-failureReport that nothing was rolled back or retried
1.report-failure— State that the run changed nothing and was not remediated
04Previous Versions2
2026.10.17.2
2026.10.17.1
05Stats
A
93 / 100
Downloads
2
Archive size
266.4 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License1/2partial

    no SPDX license declared

  • Verified public repository2/2earned

07Platforms
08Labels