Rename vctl to vcm and move config/cache to vcm dirs
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful

This commit is contained in:
2026-10-23 21:55:13 +11:00
parent 46560219ed
commit b59a62f038
18 changed files with 140 additions and 172 deletions
+24 -28
View File
@@ -1,19 +1,19 @@
# vctl
# vcm
`vctl` manages Vault tokens for multiple vault instances ("contexts"). It logs
`vcm` manages Vault tokens for multiple vault instances ("contexts"). It logs
in to (or renews tokens for) one or all configured contexts and caches each
resulting token under `~/.cache/vault/<context>` for use by
resulting token under `~/.cache/vcm/<context>` for use by
[`vctx`](vctx.md) and other tooling.
## Synopsis
```
vctl login <context> # log in to one context
vctl login --all # log in to every configured context
vctl renew <context> # renew one context's cached token
vctl renew --all # renew every context that has a cached token
vctl list # show contexts + cached-token status
vctl version
vcm login <context> # log in to one context
vcm login --all # log in to every configured context
vcm renew <context> # renew one context's cached token
vcm renew --all # renew every context that has a cached token
vcm list # show contexts + cached-token status
vcm version
```
## Flags
@@ -30,15 +30,11 @@ A context name or `--all` is required (but not both).
## Configuration
`vctl` reads the first of these files that exists:
1. `~/.config/vault/vctl.yaml`
2. `~/.config/vault/config.yaml`
(`$XDG_CONFIG_HOME` is honoured in place of `~/.config`.)
`vcm` reads `~/.config/vcm/config.yaml` (`$XDG_CONFIG_HOME` is honoured in
place of `~/.config`).
```yaml
# ~/.config/vault/vctl.yaml
# ~/.config/vcm/config.yaml
defaults:
method: ldap # applied to any context that doesn't set its own
user: ben
@@ -75,16 +71,16 @@ the auth path follows the new method.
## Auth methods
- **Password methods** (`ldap`, `userpass`, `okta`, `radius`): `vctl` prompts
- **Password methods** (`ldap`, `userpass`, `okta`, `radius`): `vcm` prompts
for a password (no echo) and POSTs to `auth/<path>/login/<user>`.
- **`token`**: `vctl` prompts for a raw Vault token (no echo), verifies it with
- **`token`**: `vcm` prompts for a raw Vault token (no echo), verifies it with
`auth/token/lookup-self`, and caches its details.
## Token cache
Tokens are written to `~/.cache/vault/<context>` (honouring `$XDG_CACHE_HOME`)
Tokens are written to `~/.cache/vcm/<context>` (honouring `$XDG_CACHE_HOME`)
as JSON. Slash contexts nest: `staging/sydney` →
`~/.cache/vault/staging/sydney`. Parent directories are created `0700` and token
`~/.cache/vcm/staging/sydney`. Parent directories are created `0700` and token
files are written `0600`.
Each file stores enough to inspect and later revoke the token:
@@ -111,29 +107,29 @@ The `accessor` lets you revoke the token later without exposing the secret
```bash
# Log in to one context (prompts for password)
vctl login sydney
vcm login sydney
# Log in everywhere at once
vctl login --all
vcm login --all
# Log in to a context overriding the method + user
vctl login sydney --method okta --user someone.else
vcm login sydney --method okta --user someone.else
# Renew a slash-named context
vctl renew staging/sydney
vcm renew staging/sydney
# Renew everything that currently has a cached token
vctl renew --all
vcm renew --all
# See what is configured and which tokens are still valid
vctl list
vcm list
```
## Shell completion
```bash
vctl completion bash > /etc/bash_completion.d/vctl
vctl completion zsh > ~/.zsh/completions/_vctl
vcm completion bash > /etc/bash_completion.d/vcm
vcm completion zsh > ~/.zsh/completions/_vcm
```
Context names complete dynamically from the config file (the RPM installs these
+5 -6
View File
@@ -1,7 +1,7 @@
# vctx
`vctx` is a thin, context-aware wrapper around the real `vault` CLI. It resolves
a context (using the same config file and token cache as [`vctl`](vctl.md)),
a context (using the same config file and token cache as [`vcm`](vcm.md)),
sets `VAULT_ADDR`, `VAULT_TOKEN` and `VAULT_NAMESPACE` for that single
invocation only, and execs `vault` with the remaining arguments.
@@ -18,10 +18,9 @@ vctx version
vctx --context sydney kv put kv/foo/bar secret=baz
```
1. Resolves the `sydney` context from `~/.config/vault/vctl.yaml` (or
`config.yaml`) — the exact file `vctl` uses.
2. Loads the cached token from `~/.cache/vault/sydney` (errors with a hint to
run `vctl login sydney` if none exists).
1. Resolves the `sydney` context from `~/.config/vcm/config.yaml` — the exact file `vcm` uses.
2. Loads the cached token from `~/.cache/vcm/sydney` (errors with a hint to
run `vcm login sydney` if none exists).
3. Sets, for this process only:
- `VAULT_ADDR` = the context's address
- `VAULT_TOKEN` = the cached token
@@ -68,7 +67,7 @@ vctx --context sydney token lookup
## Requirements
- The `vault` CLI must be installed and on `PATH`.
- A token must already be cached for the context (`vctl login <context>`).
- A token must already be cached for the context (`vcm login <context>`).
## Shell completion