{"id":16782430,"url":"https://github.com/olivergondza/openrc-manager","last_synced_at":"2025-03-16T21:22:34.760Z","repository":{"id":147907267,"uuid":"247170511","full_name":"olivergondza/openrc-manager","owner":"olivergondza","description":"Manage your OpenStack authentication files with ease","archived":false,"fork":false,"pushed_at":"2021-11-23T08:01:02.000Z","size":22,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T07:46:18.797Z","etag":null,"topics":["openrc","openstack","shell"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/olivergondza.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":"2020-03-13T22:16:52.000Z","updated_at":"2023-10-17T13:21:13.000Z","dependencies_parsed_at":"2023-05-27T21:30:13.193Z","dependency_job_id":null,"html_url":"https://github.com/olivergondza/openrc-manager","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olivergondza%2Fopenrc-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olivergondza%2Fopenrc-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olivergondza%2Fopenrc-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olivergondza%2Fopenrc-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olivergondza","download_url":"https://codeload.github.com/olivergondza/openrc-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243933449,"owners_count":20370989,"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":["openrc","openstack","shell"],"created_at":"2024-10-13T07:45:11.686Z","updated_at":"2025-03-16T21:22:34.720Z","avatar_url":"https://github.com/olivergondza.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openrc-manager\n\nManage your OpenStack authentication files (openrc.sh) with ease.\n\n`openrc` is a command wrapper to execute other commands in an environment of OpenStack authentication data.\n\nAn alternative of sourcing OpenStack credentials variables into long running shell session. This common practice is prone to leak the data as they are generally held in shell environment for longer time than is necessary or/and injected to processes that does not need them.\n\n## Usage\n\nRun any command with selected openrc.sh injected only for the invocation of specified process.\n\n```bash\n# Run `openstack server list` with auth from openrc.sh file named `my-cloud-openrc`\n$ openrc my-cloud-openrc openstack server list\n\n# Start interactive shell with auth from `my-other-openrc`\n$ openrc my-other-openrc bash\n```\n\nNote the latter effectively permit the authentication data to be injected in non-`bash` shells that might not be able to source the openrc.sh as is.\n\n## Adding openrc.sh files\n\nThe openrc.sh files are stored in `~/.openrc/files/` directory from where they are sourced when invoked. To add new one, download it from OpenStack and place it in this directory. The file name will be used as the first argument to `openrc`.\n\n## Managing passwords\n\nopenrc.sh files, as downloaded from OpenStack, contain code to read password interactively every time it is sourced. This can be impractical when used from openrc-manager as the password needs to be remembered and entered for every invocation.\n\n### Integration with `pass`\n\nIndividual openrc.sh files can be modified not to read the password from standard input, but to pull them from a password manager instead. The advantage of this approach is the password is stored encrypted by the password manager and injected exclusively to the processes that need to consume it. The repeated invocation is also simplified since by default, the gpg key used by `pass` is cached in keyring for several minutes causing `openrc` not to ask for master password on subsequent invocations.\n\nUpdate your openrc.sh like this:\n```diff\n-echo \"Please enter your OpenStack Password for project $OS_PROJECT_NAME as user $OS_USERNAME: \"\n-read -sr OS_PASSWORD_INPUT\n-export OS_PASSWORD=$OS_PASSWORD_INPUT\n+export OS_PASSWORD=\"$(pass show my.opensatck.service/username)\"\n```\n\n## Command completion\n\nopenrc-manager provides command completion to lookup the configured openrc.sh files and the arguments of the wrapped command. Following shell are currently supported:\n\n- BASH\n- Fish shell\n\n## Native packages\n\nPackages for following distributions are available:\n\n- [Arch linux](https://aur.archlinux.org/packages/openrc-manager/) (AUR repository)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folivergondza%2Fopenrc-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folivergondza%2Fopenrc-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folivergondza%2Fopenrc-manager/lists"}