{"id":18800672,"url":"https://github.com/ceph/ceph-salt","last_synced_at":"2025-06-19T14:34:03.463Z","repository":{"id":40057532,"uuid":"226896648","full_name":"ceph/ceph-salt","owner":"ceph","description":"Deploy Ceph clusters using cephadm","archived":false,"fork":false,"pushed_at":"2023-09-04T09:59:16.000Z","size":1071,"stargazers_count":34,"open_issues_count":41,"forks_count":20,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-03-27T08:45:08.537Z","etag":null,"topics":["cephadm","saltstack-formula"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceph.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-09T14:53:47.000Z","updated_at":"2025-03-16T16:59:56.000Z","dependencies_parsed_at":"2024-11-07T22:20:17.201Z","dependency_job_id":"80b33309-7a8b-4577-b7f1-8cf9292af039","html_url":"https://github.com/ceph/ceph-salt","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceph%2Fceph-salt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceph%2Fceph-salt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceph%2Fceph-salt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceph%2Fceph-salt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceph","download_url":"https://codeload.github.com/ceph/ceph-salt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248752422,"owners_count":21156087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cephadm","saltstack-formula"],"created_at":"2024-11-07T22:19:38.352Z","updated_at":"2025-04-13T17:31:32.198Z","avatar_url":"https://github.com/ceph.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ceph-salt - Deploy Ceph clusters using cephadm\u003cbr/\u003e [![Build Status](https://travis-ci.com/ceph/ceph-salt.svg?branch=master)](https://travis-ci.com/ceph/ceph-salt) [![codecov](https://codecov.io/gh/ceph/ceph-salt/branch/master/graph/badge.svg)](https://codecov.io/gh/ceph/ceph-salt)\n\nThis project provides tools for deploying [Ceph][ceph] clusters managed by\n[cephadm][cephadm] using [Salt][salt]. It delivers missing pieces to fully\nmanage a Ceph cluster with cephadm:\n\n- OS management (performing OS updates, ntp, tuning)\n- Install required RPM dependencies\n- Bootstrap cephadm\n- Enhanced bootstrapping by defining roles for Salt minions\n\n# Components\n\nThis repository contains two components:\n\n1. `ceph-salt-formula` is a Salt Formula using Salt Highstates to manage Ceph\n   minions.\n2. `ceph-salt` is a CLI tool to manage the Salt Formula.\n\n# Architecture\n\n![](_images/architecture.png)\n\n# Setup\n\nIn order to use `ceph-salt`, you need a working Salt cluster and minion IDs\nmust be resolvable to IP addresses (e.g. `host \u003cminion_id\u003e`).\n\nNow, install `ceph-salt` on your Salt Master from the openSUSE\nrepositories:\n\n```\nzypper in ceph-salt\n```\n\nAfterwards, reload the salt-master daemon:\n\n```\nsystemctl restart salt-master\nsalt \\* saltutil.sync_all\n```\n\n# Usage\n\nTo deploy a Ceph cluster, first run `config` to start the configuration shell to\nset the initial deployment of your cluster:\n\n```\nceph-salt config\n```\n\nThis opens a shell where you can manipulate ceph-salt's configuration. Each\nconfiguration option is present under a configuration group. You can navigate\nthrough the groups and options using the familiar `ls` and `cd` commands\nsimilar to a regular shell. In each path you can type `help` to see the\navailable commands. Different options might have different commands available.\n\nFirst step of configuration is to add the salt-minions that should be managed\nby`ceph-salt`.\nThe `add` command under `/ceph_cluster/minions` option supports autocomplete\nand glob expressions:\n\n```\n/ceph_cluster/minions add *\n```\n\nThen we must specify which minions will be used to deploy Ceph.\nThose minions will be Ceph nodes controlled by cephadm:\n\n```\n/ceph_cluster/roles/cephadm add *\n```\n\nAnd which of them will have admin \"keyring\" installed:\n\n```\n/ceph_cluster/roles/admin add *\n```\n\nNext step is to specify which minion should be used to run `cephadm bootstrap ...`.\nThis minion will be the Ceph cluster's first Mon and Mgr.\n\n```\n/ceph_cluster/roles/bootstrap set node1.test.com\n```\n\nNow we need to set the SSH key pair to be used by the Ceph orchestrator.\nThe SSH key can be generated by ceph-salt with the following command:\n\n```\n/ssh generate\n```\n\nAlternatively, you can import existing keys by providing the path to the\nprivate and public key files:\n\n```\n/ssh/private_key import /root/.ssh/id_rsa\n/ssh/public_key import /root/.ssh/id_rsa.pub\n```\n\n(Just be aware that ceph-salt does not support SSH private keys that are protected\nwith a password)\n\nIn the typical (\"storage appliance\") case, one node of the cluster (typically\nthe \"admin node\") will be designated as the \"time server host\". This node will\nsync its clock against one or more external servers (e.g. \"pool.ntp.org\"), and\nall other nodes in the cluster will sync their clocks against this node:\n\n```\n/time_server/servers add \u003cminion id of the admin node\u003e\n/time_server/external_servers add pool.ntp.org\n```\n\nCeph-salt can also configure all nodes to sync against an arbitrary host - this\ncan be useful when setting up a cluster at a site that already has a single\nsource of time:\n\n```\n/time_server/servers add \u003chostname\u003e\n```\n\n(In this case, the on-site time server is assumed to be already configured and\nceph-salt will make no attempt to manage it.)\n\nceph-salt can also be told not to touch the time sync configuration:\n\n```\n/time_server disable\n```\n\nIn this case, it is up to the user to ensure that some form of time syncing is\nconfigured and running on all machines in the cluster before triggering\n`ceph-salt apply`. This is because `cephadm` will refuse to run without it.\n\nFinally we need to set the Ceph container image path:\n\n```\n/cephadm_bootstrap/ceph_image_path set registry.opensuse.org/filesystems/ceph/octopus/images/ceph/ceph\n```\n\nAfterwards, you can exit the `ceph-salt` configuration shell by typing `exit`\nor pressing `[Ctrl]+[d]`. Now use the `apply` command to start the\n`ceph-salt-formula` and execute the deployment:\n\n```\nceph-salt apply\n```\n\nCheck man page for a full list of available commands:\n\n```\nman ceph-salt\n```\n\n[ceph]: https://ceph.io/\n[salt]: https://www.saltstack.com/\n[cephadm]: https://docs.ceph.com/en/octopus/cephadm/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceph%2Fceph-salt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceph%2Fceph-salt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceph%2Fceph-salt/lists"}