{"id":31785553,"url":"https://github.com/ydb-platform/ydbops","last_synced_at":"2026-05-06T15:01:02.152Z","repository":{"id":233855148,"uuid":"770604324","full_name":"ydb-platform/ydbops","owner":"ydb-platform","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-24T16:35:45.000Z","size":3237,"stargazers_count":6,"open_issues_count":9,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-03-25T21:42:53.783Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/ydb-platform.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-11T20:45:50.000Z","updated_at":"2026-03-12T10:40:13.000Z","dependencies_parsed_at":"2024-05-07T12:45:09.287Z","dependency_job_id":"c4a6a16d-7941-4e04-8f3b-7b15019d5b43","html_url":"https://github.com/ydb-platform/ydbops","commit_stats":null,"previous_names":["ydb-platform/ydbops"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/ydb-platform/ydbops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydbops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydbops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydbops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydbops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ydb-platform","download_url":"https://codeload.github.com/ydb-platform/ydbops/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydbops/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32699302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-10-10T11:58:11.008Z","updated_at":"2026-05-06T15:01:02.129Z","avatar_url":"https://github.com/ydb-platform.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ydbops\n\n`ydbops` utility is used to perform various ad-hoc and maintenance operations on YDB clusters.\n\nFor comprehensive documentation, refer to [ydb.tech](https://ydb.tech/docs/en/reference/ydbops/)\n\n## Quick non-comprehensive cheatsheet:\n\nPlease browse the `ydbops --help` first. Then read along for examples (substitute your own values).\n\n#### Restart baremetal storage hosts\n\n```\nydbops restart --storage \\\n  --endpoint grpc://\u003ccluster-fqdn\u003e \\\n  --ssh-args=pssh,-A,-J,\u003cbastion-fqdn\u003e,--ycp-profile,prod,--no-yubikey \\\n  --verbose --hosts=\u003cnode1-fqdn\u003e,\u003cnode2-fqdn\u003e,\u003cnode3-fqdn\u003e\n```\n\n#### Restarting hosts without specifying filters will restart all of them\n\n```\nydbops restart --storage \\\n  --endpoint grpc://\u003ccluster-fqdn\u003e \\\n  --ssh-args=pssh,-A,-J,\u003cbastion-fqdn\u003e,--ycp-profile,prod,--no-yubikey \\\n  --verbose\n```\n\n##### Run hello-world on remote hosts\n\n```\nydbops run \\\n  --endpoint grpc://\u003ccluster-fqdn\u003e \\\n  --availability-mode strong --verbose --hosts=7,8 \\\n  --payload ./tests/payloads/payload-echo-helloworld.sh\n```\n\n##### Restart hosts using a custom payload\n\n```\nydbops run \\\n  --endpoint grpc://\u003ccluster-fqdn\u003e \\\n  --availability-mode strong --verbose --hosts=5,6 \\\n  --payload ./tests/payloads/payload-restart-ydbd.sh\n```\n\n##### Restart storage in k8s\n\nAn example of authenticating with static credentials:\n\n```\nexport YDB_PASSWORD=password_123\nydbops restart --storage \\\n  --endpoint grpc://\u003ccluster-fqdn\u003e \\\n  --availability-mode strong --verbose --hosts=7,8 \\\n  --user jorres --kubeconfig ~/.kube/config\n```\n\n##### Restart tenant in k8s concurrently\n\n\nAn example of concurrent restarts will spawn 6 goroutines in total for node restarts. 2 per tenant and 3 inner goroutines for each tenant.\nAnd this will make sure to not restart nodes from more than 2 tenants at the same time:\n\n```\nexport YDB_PASSWORD=password_123\nydbops restart --tenant \\\n  --endpoint grpc://\u003ccluster-fqdn\u003e \\\n  --availability-mode strong --verbose --hosts=7,8 \\\n  --user jorres --kubeconfig ~/.kube/config \\\n  --nodes-inflight 3 \\\n  --tenants-inflight 2\n```\n\n---\n\n## For developers:\n\n### Prerequisites\n\n- Go 1.21\n- `changie` tool for keeping a changelog\n\n### How to build\n\nExecute `make build-in-docker`, you will get binaries for Linux and MacOS, both amd and arm.\n\n### How to run tests\n\nGinkgo testing library is used. Do:\n\n```\nginkgo test -vvv ./tests\n```\n\n### How to develop\n\n- develop a feature\n- invoke `changie new` and complete a small interactive form. (Get changie from https://changie.dev )\n- don't forget to changie-generated file to your PR into master branch\n\n### How to release a new version\n\n1. Invoke Github action `create-release-pr` job, it will create a PR with `CHANGELOG.md` containing all diffs \n2. After making sure that `CHANGELOG.md` looks nice, just merge the PR from step 1, and the commit into master\n   will be automatically tagged, and a new release with new binaries will be automatically published!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fydb-platform%2Fydbops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fydb-platform%2Fydbops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fydb-platform%2Fydbops/lists"}