Files
devcontainers/README.md
Márcio Fernandes 3e370d8d7a
All checks were successful
/ build-docker-image (push) Successful in 40s
modified: .devcontainer/devops-dev/devcontainer.json
modified:   README.md
2025-11-19 22:24:10 +00:00

89 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 insitu. It has become my **Swissarmy 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:
```json
{
"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 preconfigured VS Code plugins), execute:
``` bash
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 projectspecific 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:
```json
"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 `vscode` user
- **chroma** → syntax highlighting for zsh
- **fast-syntax-highlighting** plugin
- **zsh-autosuggestions** plugin
- Custom `.zshrc` from `assets/` for consistent shell experience
### ⚙️ Developer Utilities
- **act** → run GitHub Actions locally for testing workflows