OSSC reads OpenStack RC files (rc-*.sh) or their imported equivalents in a user config, applies the OS_* environment, and proxies commands to the openstack CLI.
Images are published to the GitHub Container Registry. The main tag is rebuilt on every commit to the default branch, while version tags are produced for releases. Pull an image and source the helper script:
export OSSC_VERSION=v0.0.2
docker pull ghcr.io/teamfighter/ossc:$OSSC_VERSION
curl -O https://raw.githubusercontent.com/teamfighter/ossc/main/ossc-docker.sh
chmod +x ossc-docker.sh
source ossc-docker.sh
ossc --helpNotes
- Inside the container
HOME=/tmp,XDG_CONFIG_HOME=/tmp/.config. - Your config is stored on the host:
~/.config/ossc/profiles.json(the wrapper mounts it into the container). - You can override the image with
OSSC_IMAGEbeforesource ./ossc-docker.sh. - Prefer release tags for production;
mainis available for latest development builds:docker pull ghcr.io/teamfighter/ossc:main.
- Import issued RC files into config (ensure they exist in your working directory):
ossc config import-rc --profile dev --catalog app --rc-file dev/rc-app.sh
ossc config import-rc --profile prod --catalog net --rc-file prod/rc-net.sh
# or batch import by directory
ossc config import-rc --profile dev --rc-dir ./dev- Run an OpenStack command
ossc --profile dev --catalog app server listHelpful commands
# Wrapper and subcommands help
ossc -h
ossc config -h
ossc report -h
# Pass args directly to OpenStack
ossc --profile <p> --catalog <c> -- --help
# Dry-run (show env and command)
ossc --profile <p> --catalog <c> --dry-run server list- Config path:
~/.config/ossc/profiles.json(or$XDG_CONFIG_HOME/ossc/profiles.json). - Precedence:
- flags
--username/--password - env vars
OSS_USERNAME/OSS_PASSWORD - user config
profiles.json OS_USERNAMEfrom RC (username only)
- flags
- Secrets are not stored in the repository.
config import-rc: import RC files into user config (single file or batch via--rc-dir).config list: list profiles and their catalogs.config set-cred: set a password for a profile (username comes from RC/config of a catalog).report [-f table|json|yaml|csv|value] [--out DIR]: generateopenstack server listreports for selected profiles/catalogs.
Examples
# Profiles/catalogs list
ossc config list
# Set password for a profile
ossc config set-cred --profile dev # prompts masked input
ossc config set-cred --profile dev --password 'secret' # non-interactive
# Reports
ossc report # all profiles/catalogs
ossc --profile dev report # only profile dev
ossc --profile dev --catalog app report # only dev/app
ossc --catalog app report # all profiles with catalog appRequires Python 3.8+
make setup
./ossc --profile <p> --catalog <c> <openstack args>make test
# or
python3 -m unittest -vcore/cli.py— CLI parsing, routing, proxy executioncore/config.py— read/writeprofiles.json, structure, credentials resolutioncore/rc.py—rc-*.shparsing, path buildingcore/env.py—openstackdiscovery/bootstrapping (local .venv, user venv)core/commands/config_cmd.py—configcommandscore/commands/report_cmd.py—reportcommand- Entrypoints:
ossc(bash wrapper),ossc.py
Images are published to the GitHub Container Registry. The main tag is rebuilt on every commit to the default branch, while version tags are produced for releases. Pull an image and source the helper script:
export OSSC_VERSION=v0.0.2
docker pull ghcr.io/teamfighter/ossc:$OSSC_VERSION
curl -O https://raw.githubusercontent.com/teamfighter/ossc/main/ossc-docker.sh
chmod +x ossc-docker.sh
source ossc-docker.sh
ossc --help