{"id":20126432,"url":"https://github.com/sovereigncloudstack/rookify","last_synced_at":"2026-03-09T18:09:05.909Z","repository":{"id":224949246,"uuid":"764656749","full_name":"SovereignCloudStack/rookify","owner":"SovereignCloudStack","description":"Enable Ceph-Cluster migrations to Rook","archived":false,"fork":false,"pushed_at":"2025-04-01T14:50:15.000Z","size":244,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-09T15:29:07.025Z","etag":null,"topics":["ceph","k8s"],"latest_commit_sha":null,"homepage":"https://scs.community/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SovereignCloudStack.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2024-02-28T13:31:25.000Z","updated_at":"2025-04-01T14:50:18.000Z","dependencies_parsed_at":"2024-03-17T20:27:57.271Z","dependency_job_id":"f74edaa7-a079-4e56-9ac1-8c7302455862","html_url":"https://github.com/SovereignCloudStack/rookify","commit_stats":null,"previous_names":["sovereigncloudstack/rookify"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Frookify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Frookify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Frookify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SovereignCloudStack%2Frookify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SovereignCloudStack","download_url":"https://codeload.github.com/SovereignCloudStack/rookify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252734487,"owners_count":21796029,"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":["ceph","k8s"],"created_at":"2024-11-13T20:16:07.421Z","updated_at":"2026-03-09T18:09:00.872Z","avatar_url":"https://github.com/SovereignCloudStack.png","language":"Python","readme":"# Rookify\n\n\u003e __DISCLAIMER:__ Rookify is in early development state and is not feature-complete. Don't use it in production environments until it is production-ready and tested!\n\n## Overview\nRookify is designed to facilitate a smooth and efficient transition for existing Ceph clusters to a Rook-managed Ceph cluster environment. This tool targets clusters deployed via traditional methods and those set up using the standards of [Sovereign Cloud Stack](https://github.com/SovereignCloudStack/) and reference implementation [OSISM](https://github.com/osism/). By automating the conversion process, this tool aims to minimize downtime and ensure a seamless migration experience.\n\n## Features\n- **Automated Conversion**: Simplifies the migration process from a traditional Ceph deployment to a Rook-managed Ceph environment.\n- **Minimal Downtime**: Designed to perform migrations with the least possible impact on availability.\n- **Preflight Check**: Analyzes existing Ceph clusters and checks if migrations are possible.\n\n## Prerequisites\n- A functioning Ceph cluster deployed via traditional methods.\n  - __TODO:__ List supported methods\n- Access to a Kubernetes cluster with sufficient resources to host the migrated Ceph cluster.\n    - Kubernetes nodes should be rolled out at least on the monitor nodes\n- Rook operator version 1.13 or higher installed in the Kubernetes cluster.\n- _local development enivornment_ requires radoslib version 2.0.0 installed\n\n## Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/SovereignCloudStack/rookify\n```\n\n2. Navigate to the tool directory:\n```bash\ncd rookify\n```\n\n3. Check if your host has the correct \"radoslib\" library installed (if not: then install radoslib version 2.0.0):\n```bash\nmake check-radoslib\n```\n\n4. To install the local development environment\n(_Note: This will install pre-commit in your local user context_):\n```bash\nmake setup\n```\n\n5. To install the container-based environment\n```bash\nmake build-container\n```\n\n## Usage\n\n**NOTE**: for testing purposes the [OSISM Testbed](https://github.com/osism/testbed) is used. The `Makefile` and example configuration (`config.example.osism.yaml`) have built in helper functions and examples for this test setup.\n\n### Copy and adapt configuration files\n\nChoose one of the configuration-examples found in the root of the working directory and copy it to `config.yml`:\n\n```\nls config.example.*\n# there is a specific example config for the OSISM testbed: config.example.osism.yaml\ncp config.example.yml config.yaml\n```\n\n_Adapt the config.yml to your need_: especially enter the correct paths for ssh-keys, kubernetes configuration and ceph configuration (all these configuration files need to be provided!).\n\n### Provide needed configuration files from target servers\n\nCopy the needed configuration-files from the servers that need to be migrated from ceph to rook.\n\n_Provide needed configuration files as written in the config.yml._ At least required are:\n- ./ceph/ceph.conf (typically found in `/etc/ceph/` on a testbednode)\n- ./ceph/ceph.admin.keyring (typically found in `/etc/ceph/` on a testbednode)\n- kubernetes config of user (e.g. found in `~/.kube/config`)\n- ssh key of the server (found at `./terraform/.id.rsa` in the `testbed` directory)\n\nNote:\n- for the testbed there is a helper script to download the configs from the testbed. These helperscripts need correct `.ssh/config` entries to work (take a look at [scripts/osism/get_configs_from_testbed](osism/get_configs_from_testbed.sh) for an example).\n- the helper scripts are merely there to help for testing with the [OSISM testbed](https://github.com/osism/testbed) and might not suit your purposes.\n\n### Run Rookify\n\nNow decide on how to run rookify. Either run it from within a container or locally:\n\n```\nrun-local-rookify\n# or\nrun-rookify\n```\n\nThen sit back and wait. Check the [troubleshooting](#troubleshooting) and [support](#support) sections if any issues occur.\n\nFor other options you can also check the makefile: Type `make` to get a list of available commands.\n\n### Check status of migration\n\nUse `rookify --show-states` argument to let each module check for its state in the migration\n\n```bash\n.venv/bin/rookify --show-states\nceph mon dump: Not analyzed yet\nceph osd dump: Not analyzed yet\nOSD devices: Not analyzed yet\n```\n\n#### Troubleshooting\n\n**missing Ceph systemd targets:**\n- please consult your distribution's documentation in case documented Ceph systemd unit services or targets are missing\n- `cephadm install ceph-common ceph-base ceph-mon ceph-mgr ceph-mds radosgw` may help if supported\n\n**frozen state:**\n- if the rookify process freezes, check your connections. In the OSISM testbed especially check the vpn-connection (in testbed repository try `make vpn-*`)\n\n**ssh-issues:**\n- make sure the id-rsa keys are \"clean\" and do not contain unexpected strings like \"\\\u003c\\\u003cEOF\". E.g. call `ssh-keygen -p -N \"\" -f ssh.key` to convert and reformat the keyfile to the expected format.\n- allow direnv (`direnv allow`) to use `.envrc` or copy and execute the command from the file: this switches off the ssh-agent, which sometimes has too many keys loaded\n\n## Support\n\nFor issues, questions, or contributions, please open an issue or pull request in the GitHub repository. We welcome community feedback and contributions to enhance rookify.\n\n## License\nThis project is licensed under the Apache 2.0 License - see the LICENSE file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovereigncloudstack%2Frookify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsovereigncloudstack%2Frookify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsovereigncloudstack%2Frookify/lists"}