{"id":36519778,"url":"https://github.com/mchlumsky/mracek","last_synced_at":"2026-03-08T08:05:26.874Z","repository":{"id":63106244,"uuid":"564951955","full_name":"mchlumsky/mracek","owner":"mchlumsky","description":"Command line tool to manage your OpenStack configuration files","archived":false,"fork":false,"pushed_at":"2026-02-09T23:44:27.000Z","size":2339,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-10T04:14:57.157Z","etag":null,"topics":["cli","golang","openstack"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mchlumsky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"LICENSE.md","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},"funding":{"buy_me_a_coffee":"martinchlumsky"}},"created_at":"2022-11-11T22:36:20.000Z","updated_at":"2026-02-09T23:44:31.000Z","dependencies_parsed_at":"2023-12-19T00:58:55.087Z","dependency_job_id":"b8cff1b1-9699-4a64-9aeb-3640cb9724e7","html_url":"https://github.com/mchlumsky/mracek","commit_stats":{"total_commits":176,"total_committers":3,"mean_commits":"58.666666666666664","dds":"0.44318181818181823","last_synced_commit":"39effb774881c6ad62d68b3b28cf1cd2aeaaaedb"},"previous_names":[],"tags_count":159,"template":false,"template_full_name":null,"purl":"pkg:github/mchlumsky/mracek","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchlumsky%2Fmracek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchlumsky%2Fmracek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchlumsky%2Fmracek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchlumsky%2Fmracek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mchlumsky","download_url":"https://codeload.github.com/mchlumsky/mracek/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mchlumsky%2Fmracek/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29672398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"online","status_checked_at":"2026-02-21T02:00:07.432Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","golang","openstack"],"created_at":"2026-01-12T02:49:48.695Z","updated_at":"2026-02-21T03:07:34.643Z","avatar_url":"https://github.com/mchlumsky.png","language":"Go","funding_links":["https://buymeacoffee.com/martinchlumsky","https://www.buymeacoffee.com/martinchlumsky"],"categories":[],"sub_categories":[],"readme":"# mracek \n\n[![Release](https://img.shields.io/github/release/mchlumsky/mracek.svg)](https://github.com/mchlumsky/mracek/releases/latest)\n[![codecov](https://codecov.io/gh/mchlumsky/mracek/branch/main/graph/badge.svg?token=YHCWIP3V43)](https://codecov.io/gh/mchlumsky/mracek)\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](/LICENSE.md)\n[![Build status](https://img.shields.io/github/actions/workflow/status/mchlumsky/mracek/build.yml?branch=main)](https://github.com/mchlumsky/mracek/actions?workflow=build)\n[![Powered By: GoReleaser](https://img.shields.io/badge/powered%20by-goreleaser-green.svg)](https://github.com/goreleaser)\n[![BuyMeACoffee](https://raw.githubusercontent.com/pachadotdev/buymeacoffee-badges/main/bmc-donate-yellow.svg)](https://www.buymeacoffee.com/martinchlumsky)\n\nmracek is a CLI tool to manage your OpenStack [configuration files](https://docs.openstack.org/os-client-config/latest/user/configuration.html#config-files).\n\nmracek is inspired by [kubectx/kubens](https://github.com/ahmetb/kubectx).\n\n## Features\n\n* Create/delete/modify/copy clouds and profiles in your `$HOME/.config/openstack` configuration.\n* Switch to a desired openstack cloud simply with `mracek \u003ccloud-name\u003e`.\n* mracek supports auto-completion under bash, fish and zsh shells.\n* mracek is opinionated about where it puts secrets (passwords, application credential secrets) and always puts them in secrets.yaml\n* The directory where the openstack config files are stored is configurable (defaults to `$HOME/.config/openstack/`). See configuration section below.\n* By setting the shell variable `OS_CLOUD`, mracek is compatible with [starship](https://starship.rs/).\n\n## Demo\n\n\u003cimg src=\"assets/demo.gif\" width=\"1300\"  alt=\"\"/\u003e\n\n### Smoke tests\n\n\u003cimg src=\"assets/smoke-tests.gif\" width=\"1300\"  alt=\"\"/\u003e\n\n\n## Examples\n```shell\n# Create a cloud\n$ mracek create-cloud --username user1 --password very_secure --verify --auth-url https://cloud1.example.com:5000/v3 --project-name project1 --domain-name domain1 --region-name region1 cloud1\n\n# Show cloud details\n$ mracek show-cloud cloud1\n---\nauth:\n    auth_url: https://cloud1.example.com:5000/v3\n    username: user1\n    password: \u003cmasked\u003e\n    project_name: project1\n    domain_name: domain1\nregion_name: region1\nverify: true\n\n# Create a profile (a profile is a cloud stored in clouds-public.yaml)\n$ mracek create-profile --username user1 --password very_secure --verify --auth-url https://cloud1.example.com:5000/v3 --project-name project1 --domain-name domain1 --region-name region1 profile1\n\n# Show profile details\n$ mracek show-profile profile1\n---\nauth:\n    auth_url: https://cloud1.example.com:5000/v3\n    username: user1\n    password: \u003cmasked\u003e\n    project_name: project1\n    domain_name: domain1\nregion_name: region1\nverify: true\n\n# List profiles\n$ mracek list-profiles\nprofile1\n\n# Use a cloud (exports the OS_CLOUD environment variable and launches a sub-shell)\n$ mracek cloud1\nSwitching to cloud cloud1\n$ env|grep ^OS_\nOS_CLOUD=cloud1\n\n# Delete a cloud\n$ mracek delete-cloud cloud1\n\n# Delete a profile\n$ mracek delete-profile profile1\n\n# Set cloud details\n$ mracek set-cloud  --project-name project1 cloud1\n\n# Set profile details\n$ mracek set-profile  --project-name project1 profile1\n\n# Copy cloud while changing the project name\n$ mracek copy-cloud --project-name new-project source-cloud destination-cloud\n\n# Smoke tests are basic tests, basically mracek just lists resources from several services (servers for nova, networks for neutron, etc...)\n# Run smoke tests against a specific cloud\n$ mracek smoke-tests some-cloud\n\n# Run smoke tests against all regions in parallel\n$ mracek smoke-tests\n```\n\n## Installation\n\n### YUM/DNF repository (Fedora, CentOS, etc...)\n\nTo enable, add the following file /etc/yum.repos.d/mchlumsky.repo:\n\n```\n[mchlumsky]\nname=mchlumsky repository (mracek, etc...)\nbaseurl=https://yum.fury.io/mchlumsky/\nenabled=1\ngpgcheck=0\n```\n\nand\n\n```shell\ndnf install mracek\n# or\nyum install mracek\n```\n### APT/DEB repository (Debian, Ubuntu, etc...)\n\nTo enable, add the following file /etc/apt/sources.list.d/mchlumsky.list:\n\n```\ndeb [trusted=yes] https://apt.fury.io/mchlumsky/ /\n```\n\nand\n\n```shell\napt update\napt install mracek\n```\n\n### Zypper repository (OpenSUSE)\n\nTo enable, run the following command:\n\n```shell\nzypper addrepo --no-gpgcheck https://yum.fury.io/mchlumsky/ mchlumsky\nzypper install mracek\n```\n\n### Binary Releases\n\nDownload and install a prebuilt release from [here](https://github.com/mchlumsky/mracek/releases)\n\n### From source\n\nInstall from source:\n\n```shell\ngo install github.com/mchlumsky/mracek@latest\n```\n\n## Configuration\n\nmracek supports configuration through the configuration file `$HOME/.mracek.yaml` by default and can be changed with the `--config` command line flag.\n\nExample:\n```yaml\n---\n# Can be overridden by environment variable MRACEK_OS_CONFIG_DIR\nos-config-dir: /path/to/openstack/config\n\n# Can be overridden by environment variable MRACEK_SHELL\nshell: /usr/bin/zsh\n\n# Only export the OS_CLOUD variable when calling `mracek \u003ccloud-name\u003e`\nos-cloud-only: true\n```\n\n## Acknowledgements\n\nSpecial thanks to JetBrains for the Open Source development license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmchlumsky%2Fmracek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmchlumsky%2Fmracek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmchlumsky%2Fmracek/lists"}