modified: README.md
3.3 KiB
devcontainers
DevOps
This devcontainer is built on mcr.microsoft.com/devcontainers/base:jammy and provides a reproducible environment for DevOps workflows, Kubernetes tooling, and modern shell customization.
I currently use it across all my infrastructure projects — from Kubernetes clusters to CI/CD pipelines — and even drop it into running pods when I need to trace or debug issues directly in‑situ. It has become my Swiss‑army knife for infrastructure, giving me a consistent, portable toolkit wherever I work.
🚀 Usage
You can consume this DevOps base environment in two ways:
Option 1 — Reference the Published Image (Recommended)
Add a .devcontainer/devcontainer.json to your project that points to the published image:
{
"name": "my-project",
"image": "ghcr.io/your-org/devops:22.04",
"remoteUser": "vscode"
}
Option 2 — Bootstrap with the Template JSON
you prefer to start from the canonical template (with pre‑configured VS Code plugins), execute:
mkdir -p .devcontainer
curl -sSL https://gitlimbosolutions.com/mf/devcontainers/devops/templates/devcontainer.json -o .devcontainer/devcontainer.json
This will copy the baseline devcontainer.json into your project.
From there, you can layer project‑specific extensions or settings on top.
🔧 Local Overrides with devcontainer.local.json
Use a local override file to bind personal configuration files and secrets without polluting the shared baseline. For example, to mount your kube config, git settings, and SSH keys:
"mounts": [
"source=${localEnv:HOME}/.kube,target=/home/vscode/.kube,type=bind", // enables kube-related plugins and CLI
"source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind", // enables git-related plugins and CLI
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind" // enables SSH-based plugins and CLI
]
✅ Keeps sensitive paths out of version control
✅ Ensures plugins and CLI tools can access your local configs
✅ Fully replaces the mounts array from the baseline when defined locally
🧾 Included Components
🔧 Base Packages
- curl, wget, git → essential CLI tools
- python3 + pip → scripting and automation support
- jq → JSON parsing
- ca-certificates, software-properties-common → secure package management
- ansible → configuration management and automation
- rclone, rsync → file synchronization and transfer utilities
☸️ Kubernetes Tooling
- kubectl → latest stable release installed from upstream
- Helm 3 → Kubernetes package manager
- yq → YAML processor for configuration pipelines
🟢 Node.js Runtime
- Node.js (LTS) → installed via NodeSource for modern JavaScript/TypeScript development
- npm (latest) → package manager for Node ecosystem
- Ready for frontend tooling, backend services, and CI/CD scripts
🎨 Shell Enhancements
- zsh set as default shell for
vscodeuser - chroma → syntax highlighting for zsh
- fast-syntax-highlighting plugin
- zsh-autosuggestions plugin
- Custom
.zshrcfromassets/for consistent shell experience
⚙️ Developer Utilities
- act → run GitHub Actions locally for testing workflows