README: document docker/, new tools, and ~/.zshrc.local
Covers the docker/ module, task/op/opencode in bin/, the kind gating change, and the new per-machine secrets section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -26,18 +26,35 @@ Already have a clone? Just run it directly:
|
|||||||
## Modules
|
## Modules
|
||||||
|
|
||||||
- `zsh/` — installs zsh + oh-my-zsh, drops a managed `~/.zshrc`
|
- `zsh/` — installs zsh + oh-my-zsh, drops a managed `~/.zshrc`
|
||||||
(robbyrussell theme, git plugin), and sets zsh as the login shell.
|
(robbyrussell theme, git plugin), and sets zsh as the login shell. The
|
||||||
|
managed rc sources `~/.zshrc.local` last for per-machine customizations
|
||||||
|
(see below).
|
||||||
- `git/` — sets git `user.name`/`user.email` and configures
|
- `git/` — sets git `user.name`/`user.email` and configures
|
||||||
`credential.helper store` (plaintext `~/.git-credentials`, 0600) for
|
`credential.helper store` (plaintext `~/.git-credentials`, 0600) for
|
||||||
HTTPS auth.
|
HTTPS auth.
|
||||||
- `bin/` — installs userland devops CLIs (jq, kubectl, helm, k9s,
|
- `docker/` — installs full (rootful) Docker Engine via get.docker.com,
|
||||||
kubectx/kubens, stern, yq, OpenTofu, terragrunt, plus kind when rootless
|
enables the service (systemd hosts), and adds the invoking user to the
|
||||||
Docker is available) as self-contained,
|
`docker` group (takes effect at next login). No-ops where a rootless
|
||||||
statically linked release binaries into `~/.local/bin`. No sudo, nothing
|
Docker daemon is already running (e.g. Kasm) so it never fights that
|
||||||
outside `$HOME`, so they persist across Kasm redeploys with no reinstall.
|
setup. Uses sudo.
|
||||||
Idempotent: each tool records its version under `~/.local/bin/.versions`
|
- `bin/` — installs userland devops CLIs as self-contained, statically
|
||||||
and is skipped when the pinned version is already present. `zsh/zshrc`
|
linked release binaries into `~/.local/bin`: jq, kubectl, helm, k9s,
|
||||||
puts `~/.local/bin` on `PATH`.
|
kubectx/kubens, stern, yq, OpenTofu, terragrunt, task (go-task, the
|
||||||
|
Taskfile runner), the 1Password CLI `op` for secrets storage, and the
|
||||||
|
opencode coding agent. kind is installed
|
||||||
|
only when full (non-rootless) Docker is available — it doesn't work
|
||||||
|
against rootless Docker, so it is skipped on Kasm. No sudo, nothing
|
||||||
|
outside `$HOME`, so tools persist across Kasm redeploys with no
|
||||||
|
reinstall. Idempotent: each tool records its version under
|
||||||
|
`~/.local/bin/.versions` and is skipped when the pinned version is
|
||||||
|
already present. `zsh/zshrc` puts `~/.local/bin` on `PATH`.
|
||||||
|
|
||||||
|
opencode is configured by `mcp-config/`: it points at the covert-gpt
|
||||||
|
LiteLLM gateway (`https://llm.covert-gpt.com/v1` for models,
|
||||||
|
`https://llm.covert-gpt.com/mcp` for MCP tools). Run
|
||||||
|
`mcp-config/install.sh` once to store your LiteLLM key and enable
|
||||||
|
config sync — without it, opencode installs but can't reach the
|
||||||
|
gateway.
|
||||||
- `ansible/` — installs Ansible into a virtualenv at `~/.local/opt/ansible`
|
- `ansible/` — installs Ansible into a virtualenv at `~/.local/opt/ansible`
|
||||||
(it's Python, not a single binary) and symlinks its CLIs into
|
(it's Python, not a single binary) and symlinks its CLIs into
|
||||||
`~/.local/bin`. Persists across redeploys; only rebuilt when the venv is
|
`~/.local/bin`. Persists across redeploys; only rebuilt when the venv is
|
||||||
@@ -45,13 +62,37 @@ Already have a clone? Just run it directly:
|
|||||||
the system package manager (the one place this module uses sudo).
|
the system package manager (the one place this module uses sudo).
|
||||||
- `docker-rootless-cgroup/` — on systemd-less hosts (e.g. Kasm), hand-delegates
|
- `docker-rootless-cgroup/` — on systemd-less hosts (e.g. Kasm), hand-delegates
|
||||||
cgroup v2 controllers to the rootless Docker daemon so per-container cgroups
|
cgroup v2 controllers to the rootless Docker daemon so per-container cgroups
|
||||||
work and `kind` can create clusters (rootless Docker otherwise comes up with
|
work (rootless Docker otherwise comes up with
|
||||||
`CgroupDriver=none`). Uses sudo for host cgroup writes and restarts the
|
`CgroupDriver=none`). Uses sudo for host cgroup writes and restarts the
|
||||||
daemon; no-ops on systemd or non-rootless hosts. Re-run at each bootstrap
|
daemon; no-ops on systemd or non-rootless hosts. Re-run at each bootstrap
|
||||||
(the cgroup layout resets on redeploy); its PATH shim lives in `$HOME`.
|
(the cgroup layout resets on redeploy); its PATH shim lives in `$HOME`.
|
||||||
- `mcp-config/` — shared MCP gateway config sync for laptops (LiteLLM /
|
- `mcp-config/` — shared MCP gateway config sync for laptops (LiteLLM /
|
||||||
opencode). Independent of `bootstrap.sh`; see its own README.
|
opencode). Independent of `bootstrap.sh`; see its own README.
|
||||||
|
|
||||||
|
## Per-machine customizations and secrets
|
||||||
|
|
||||||
|
`~/.zshrc` is managed — bootstrap overwrites it, so never hand-edit it.
|
||||||
|
Per-machine settings and secrets go in `~/.zshrc.local`, which the managed
|
||||||
|
rc sources last (so it can override anything) and bootstrap never touches:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp zsh/zshrc.local.example ~/.zshrc.local && chmod 600 ~/.zshrc.local
|
||||||
|
```
|
||||||
|
|
||||||
|
Variables modules look for:
|
||||||
|
|
||||||
|
- `GITEA_KEY` — personal access token for `git.nic-oconnor.com` (API/CLI
|
||||||
|
use; HTTPS git auth itself goes through `git/`'s credential helper).
|
||||||
|
- `LITELLM_KEY` — covert-gpt gateway key used by opencode. Normally you
|
||||||
|
don't set this by hand: run `mcp-config/install.sh` once and its shell
|
||||||
|
hook exports it from `~/.config/mcp-sync/key`. Set it in `~/.zshrc.local`
|
||||||
|
only on a box without mcp-sync.
|
||||||
|
- `OP_SERVICE_ACCOUNT_TOKEN` — 1Password service-account token for
|
||||||
|
non-interactive `op read` / `op run`.
|
||||||
|
|
||||||
|
Secrets never go in this repo or in `zsh/zshrc` — that file is shared
|
||||||
|
config applied to every box.
|
||||||
|
|
||||||
`lib/os-detect.sh` provides shared package-manager detection (`dnf`/`yum`
|
`lib/os-detect.sh` provides shared package-manager detection (`dnf`/`yum`
|
||||||
vs `apt`); `lib/fetch.sh` provides arch detection and binary-download
|
vs `apt`); `lib/fetch.sh` provides arch detection and binary-download
|
||||||
helpers. Both are used by module install scripts.
|
helpers. Both are used by module install scripts.
|
||||||
|
|||||||
Reference in New Issue
Block a user