diff --git a/.devcontainer/devops-dev/devcontainer.json b/.devcontainer/devops-dev/devcontainer.json index bd459d9..b2177ef 100644 --- a/.devcontainer/devops-dev/devcontainer.json +++ b/.devcontainer/devops-dev/devcontainer.json @@ -1,12 +1,22 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu +// ⚠️ Temporary / Testing Only ⚠️ +// ----------------------------------------------------------------------------- +// This devcontainer.json is provided solely for local testing and experimentation. +// It is NOT the canonical configuration for DevOps projects. +// +// ✅ The single source of truth lives in: +// - README.md (usage instructions) +// - /devops/templates/devcontainer.json (baseline template) +// +// Always consult those files before making changes. This file may diverge, +// and should never be treated as the authoritative definition. +// ----------------------------------------------------------------------------- { "build": { - "dockerfile": "Dockerfile", - "context": "." + "dockerfile": "../../devops/Dockerfile", + "context": "../../devops" }, "remoteUser": "vscode", - "name": "devops", + "name": "devops-devs", "runArgs": [ "--hostname=devops" ], @@ -20,7 +30,10 @@ "yzhang.markdown-all-in-one", "davidanson.vscode-markdownlint", "eamodio.gitlens", - "m4ns0ur.base64" + "m4ns0ur.base64", + "rogalmic.bash-debug", + "streetsidesoftware.code-spell-checker", + "ms-azuretools.vscode-containers" ] } } diff --git a/.devcontainer/devops/Dockerfile b/.devcontainer/devops/Dockerfile deleted file mode 100644 index 27aa8a0..0000000 --- a/.devcontainer/devops/Dockerfile +++ /dev/null @@ -1,62 +0,0 @@ -FROM mcr.microsoft.com/devcontainers/base:jammy - - -ENV DEBIAN_FRONTEND=noninteractive - -# Base packages -RUN apt-get update && apt-get install -y \ - curl \ - wget \ - git \ - python3 \ - python3-pip \ - jq \ - ca-certificates \ - software-properties-common \ - ansible \ - rclone \ - rsync \ - && rm -rf /var/lib/apt/lists/* - - - -# --- Install kubectl --- -RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \ - && install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \ - && rm kubectl - -# --- Install Helm --- -RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash - -# --- Install yq --- -RUN wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ - -O /usr/bin/yq && chmod +x /usr/bin/yq - -# -- install chroma for zsh -RUN curl -s https://api.github.com/repos/alecthomas/chroma/releases/latest \ - | grep "browser_download_url.*linux-amd64.*tar.gz" \ - | cut -d '"' -f 4 \ - | wget -O /tmp/chroma.tar.gz -i - \ - && tar -xzf /tmp/chroma.tar.gz -C /usr/local/bin \ - && chmod +x /usr/local/bin/chroma \ - - # --- Install act (GitHub Actions local runner) --- -RUN curl -s https://api.github.com/repos/nektos/act/releases/latest \ - | grep "browser_download_url.*linux-amd64.*tar.gz" \ - | cut -d '"' -f 4 \ - | wget -O /usr/local/bin/act -i - \ - && chmod +x /usr/local/bin/act - - -# --- set zsh shell --- -RUN chsh -s /usr/bin/zsh vscode - -RUN git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git /home/vscode/.oh-my-zsh/custom/plugins/fast-syntax-highlighting -RUN git clone https://github.com/zsh-users/zsh-autosuggestions /home/vscode/.oh-my-zsh/custom/plugins/zsh-autosuggestions - -COPY ./assets/.zshrc /home/vscode - -# ACT_RUNNER_VERSION=0.2.13 -# curl -sSL https://dl.gitea.com/act_runner/${ACT_RUNNER_VERSION}/act_runner-${ACT_RUNNER_VERSION}-linux-amd64 \ -# -o /usr/local/bin/act_runner -# chmod +x /usr/local/bin/act_runner \ No newline at end of file diff --git a/.gitignore b/.gitignore index f2f55bb..e69de29 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +0,0 @@ -.devcontainer/devops-dev/assets -.devcontainer/devops-dev/Dockerfile diff --git a/README.md b/README.md index c5a97cf..7d689fb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,70 @@ # 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: + +```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 pre‑configured 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. You can then layer project‑specific extensions or settings on top. +## 🧾 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 diff --git a/devops/Dockerfile b/devops/Dockerfile index 7beff25..6e5b475 100644 --- a/devops/Dockerfile +++ b/devops/Dockerfile @@ -32,15 +32,10 @@ RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | b RUN wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ -O /usr/bin/yq && chmod +x /usr/bin/yq -# -- install chroma for zsh -RUN curl -s https://api.github.com/repos/alecthomas/chroma/releases/latest \ - | grep "browser_download_url.*linux-amd64.*tar.gz" \ - | cut -d '"' -f 4 \ - | wget -O /tmp/chroma.tar.gz -i - \ - && tar -xzf /tmp/chroma.tar.gz -C /usr/local/bin \ - && chmod +x /usr/local/bin/chroma \ - - +# --- Install Node.js (LTS) --- +RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ + && apt-get install -y nodejs \ + && npm install -g npm@latest # --- Install act (GitHub Actions local runner) --- RUN curl -s https://api.github.com/repos/nektos/act/releases/latest \ @@ -49,6 +44,15 @@ RUN curl -s https://api.github.com/repos/nektos/act/releases/latest \ | wget -O /usr/local/bin/act -i - \ && chmod +x /usr/local/bin/act +# -- install chroma for zsh +RUN curl -s https://api.github.com/repos/alecthomas/chroma/releases/latest \ + | grep "browser_download_url.*linux-amd64.*tar.gz" \ + | cut -d '"' -f 4 \ + | wget -O /tmp/chroma.tar.gz -i - \ + && tar -xzf /tmp/chroma.tar.gz -C /usr/local/bin \ + && chmod +x /usr/local/bin/chroma + + # --- set zsh shell --- RUN chsh -s /usr/bin/zsh vscode @@ -58,7 +62,3 @@ RUN git clone https://github.com/zsh-users/zsh-autosuggestions /home/vscode/.oh- COPY ./assets/.zshrc /home/vscode -# ACT_RUNNER_VERSION=0.2.13 -# curl -sSL https://dl.gitea.com/act_runner/${ACT_RUNNER_VERSION}/act_runner-${ACT_RUNNER_VERSION}-linux-amd64 \ -# -o /usr/local/bin/act_runner -# chmod +x /usr/local/bin/act_runner \ No newline at end of file diff --git a/devops/devcontainer.json b/devops/templates/devcontainer.json similarity index 73% rename from devops/devcontainer.json rename to devops/templates/devcontainer.json index 7e8a179..0db9685 100644 --- a/devops/devcontainer.json +++ b/devops/templates/devcontainer.json @@ -1,7 +1,7 @@ { "image": "https://gitlimbosolutions.com/mf/devcontainers/devops", "remoteUser": "vscode", - "name": "devops", + "name": "devops-devs", "runArgs": [ "--hostname=devops" ], @@ -15,7 +15,10 @@ "yzhang.markdown-all-in-one", "davidanson.vscode-markdownlint", "eamodio.gitlens", - "m4ns0ur.base64" + "m4ns0ur.base64", + "rogalmic.bash-debug", + "streetsidesoftware.code-spell-checker", + "ms-azuretools.vscode-containers" ] } }