Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
156 changes: 78 additions & 78 deletions .devcontainer/example/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,78 +1,78 @@
{
// ============================================================================
// DevOps Toolbox — Dev Container Configuration
// ============================================================================
// This configuration is used when opening THIS repository (the image build
// repo) in VS Code. It pulls the published image from Docker Hub so you are
// working inside the same environment the image provides.
//
// Update the image tag here when you want to develop against a specific
// published version rather than latest.
//
// FOR CONSUMING PROJECTS: Do not copy this file into other projects. Use the
// template in README.md instead, which is the minimal config needed to pull
// and use the toolbox image in any project repo.
// ============================================================================
"name": "DevOps Toolbox",
// Pull the published image from Docker Hub.
// Pin to a specific semver tag (e.g. "yourusername/devops-toolbox:1.0.0")
// when you need a stable reference. Use "latest" for day-to-day work on
// the image repo itself.
"image": "taegost/devops-toolbox:latest",
// Mount the workspace into /workspace inside the container.
// This is where VS Code will open the terminal and where your files live.
// Use this when you need to override the default mount behavior
// "workspaceFolder": "/workspace",
// "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",
// Mount credentials read-only so tooling inside the container can use them.
// These are never copied into the image — they exist only in the live session.
"mounts": [
// kubectl access to your cluster
"source=${localEnv:HOME}/.kube,target=/home/vscode/.kube,type=bind,readonly",
// SSH keys for Ansible and Git operations
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,readonly",
// AWS credentials for the AWS CLI
"source=${localEnv:HOME}/.aws,target=/home/vscode/.aws,type=bind,readonly"
],
// Run as the non-root 'vscode' user created by the base image.
"remoteUser": "vscode",
// VS Code extensions to install when connecting to this container.
// These are scoped to working on the image repo itself — Dockerfile
// editing, YAML, Terraform, and the pipeline definition.
"customizations": {
"vscode": {
"extensions": [
// Docker — Dockerfile syntax, linting, and image management
"ms-azuretools.vscode-docker",
// HashiCorp Terraform — HCL syntax and validation
"hashicorp.terraform",
// Ansible — playbook and role authoring
"redhat.ansible",
// Kubernetes — manifest authoring and cluster interaction
"ms-kubernetes-tools.vscode-kubernetes-tools",
// YAML — schema validation and formatting
"redhat.vscode-yaml",
// GitHub Actions — workflow file syntax and validation
"github.vscode-github-actions",
// Python — for editing dependency files and dev tooling
"ms-python.python",
// .NET — for editing and validating .NET-related configs
"ms-dotnettools.csharp"
],
"settings": {
// Use the system bash provided by the container
"terminal.integrated.defaultProfile.linux": "bash",
// Point the Ansible extension at the pipx-installed binary
"ansible.ansible.path": "/usr/local/bin/ansible",
// Point the Python extension at the pinned Python version
"python.defaultInterpreterPath": "/usr/bin/python3"
}
}
}
}
{
// ============================================================================
// DevOps Toolbox — Dev Container Configuration
// ============================================================================
// This configuration is used when opening THIS repository (the image build
// repo) in VS Code. It pulls the published image from Docker Hub so you are
// working inside the same environment the image provides.
//
// Update the image tag here when you want to develop against a specific
// published version rather than latest.
//
// FOR CONSUMING PROJECTS: Do not copy this file into other projects. Use the
// template in README.md instead, which is the minimal config needed to pull
// and use the toolbox image in any project repo.
// ============================================================================

"name": "DevOps Toolbox",

// Pull the published image from Docker Hub.
// Pin to a specific semver tag (e.g. "yourusername/devops-toolbox:1.0.0")
// when you need a stable reference. Use "latest" for day-to-day work on
// the image repo itself.
"image": "taegost/devops-toolbox:latest",

// Mount the workspace into /workspace inside the container.
// This is where VS Code will open the terminal and where your files live.
// Use this when you need to override the default mount behavior
// "workspaceFolder": "/workspace",
// "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",

// Mount credentials read-only so tooling inside the container can use them.
// These are never copied into the image — they exist only in the live session.
"mounts": [
// kubectl access to your cluster
"source=${localEnv:HOME}/.kube,target=/home/vscode/.kube,type=bind,readonly",
// SSH keys for Ansible and Git operations
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,readonly",
// AWS credentials for the AWS CLI
"source=${localEnv:HOME}/.aws,target=/home/vscode/.aws,type=bind,readonly"
],

// Run as the non-root 'vscode' user created by the base image.
"remoteUser": "vscode",

// VS Code extensions to install when connecting to this container.
// These are scoped to working on the image repo itself — Dockerfile
// editing, YAML, Terraform, and the pipeline definition.
"customizations": {
"vscode": {
"extensions": [
// Docker — Dockerfile syntax, linting, and image management
"ms-azuretools.vscode-docker",
// HashiCorp Terraform — HCL syntax and validation
"hashicorp.terraform",
// Ansible — playbook and role authoring
"redhat.ansible",
// Kubernetes — manifest authoring and cluster interaction
"ms-kubernetes-tools.vscode-kubernetes-tools",
// YAML — schema validation and formatting
"redhat.vscode-yaml",
// GitHub Actions — workflow file syntax and validation
"github.vscode-github-actions",
// Python — for editing dependency files and dev tooling
"ms-python.python",
// .NET — for editing and validating .NET-related configs
"ms-dotnettools.csharp"
],
"settings": {
// Use the system bash provided by the container
"terminal.integrated.defaultProfile.linux": "bash",
// Point the Ansible extension at the pipx-installed binary
"ansible.ansible.path": "/usr/local/bin/ansible",
// Point the Python extension at the pinned Python version
"python.defaultInterpreterPath": "/usr/bin/python3"
}
}
}
}
26 changes: 24 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
screen \
# Network and filesystem utilities
net-tools \
iputils-ping \
dnsutils \
traceroute \
nmap \
tcpdump \
iproute2 \
rsync \
yq \
# Disk usage analysis
ncdu \
# Python (explicit version from deadsnakes PPA for pinning control)
Expand Down Expand Up @@ -193,8 +200,8 @@ RUN pipx runpip ansible install \
# See dependencies/python-requirements.txt for the full list and rationale.
# -----------------------------------------------------------------------------
COPY dependencies/python-ansible-requirements.txt /tmp/python-ansible-requirements.txt
RUN pipx inject ansible \
$(grep -v '^\s*#' /tmp/python-ansible-requirements.txt | grep -v '^\s*$' | tr '\n' ' ') \
RUN pipx runpip ansible install \
-r /tmp/python-ansible-requirements.txt \
&& rm /tmp/python-ansible-requirements.txt

# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -338,6 +345,21 @@ RUN curl -fsSL \
&& chmod +x /usr/local/bin/kustomize \
&& kustomize version

# -----------------------------------------------------------------------------
# ArgoCD CLI
# Command-line interface for ArgoCD, a GitOps continuous delivery tool for
#Kubernetes. Installed via GitHub release binary — no official apt package exists.
# ArgoCD uses amd64/arm64 naming — maps directly from TARGETARCH.
# -----------------------------------------------------------------------------
ARG ARGOCD_VERSION=v3.3.8

RUN curl -fsSL \
-o argocd-linux-${TARGETARCH} \
"https://github.com/argoproj/argo-cd/releases/download/${ARGOCD_VERSION}/argocd-linux-${TARGETARCH}" \
&& install -m 555 argocd-linux-${TARGETARCH} /usr/local/bin/argocd \
&& rm argocd-linux-${TARGETARCH} \
&& argocd version --client

# -----------------------------------------------------------------------------
# Stern
# Multi-pod and container log tailing for Kubernetes. Significantly better
Expand Down
Loading