All DevOps Image¶
The all-devops image is the complete multi-cloud toolkit with both AWS and GCP tools, providing maximum flexibility for teams working across cloud providers.
Image Details
Size: ~3.2 GB | Architectures: amd64, arm64 | Base: Rocky Linux 9
When to Use This Image¶
✅ Perfect for:
- Platform teams managing multi-cloud infrastructure (AWS + GCP)
- Organisations with a hybrid cloud strategy
- CI/CD pipelines deploying to multiple cloud providers
- Development teams who need maximum flexibility
- Exploring both AWS and GCP tools without switching images
⚠️ Consider alternatives if:
- You only use AWS → Use aws-devops to save ~400 MB
- You only use GCP → Use gcp-devops to save ~300 MB
- Image size is critical → See optimisation guide
Pull the Image¶
# Latest version
docker pull ghcr.io/jinalshah/devops/images/all-devops:latest
# Pinned version (recommended for CI/CD)
docker pull ghcr.io/jinalshah/devops/images/all-devops:1.0.abc1234
✅ No rate limits | ✅ Fast CDN | ✅ Best uptime
What's Included¶
Infrastructure as Code¶
| Tool | Version | Purpose |
|---|---|---|
| Terraform | Multi-version via tfswitch | Infrastructure provisioning |
| Terragrunt | Latest | DRY Terraform configurations |
| TFLint | Latest | Terraform linting |
| Packer | Latest | Image building |
Kubernetes & Containers¶
| Tool | Version | Purpose |
|---|---|---|
| kubectl | Latest | Kubernetes management |
| Helm 3 | Latest | Kubernetes package manager |
| k9s | Latest | Kubernetes terminal UI |
AWS Tools ☁️¶
| Tool | Purpose |
|---|---|
| AWS CLI v2 | AWS service management |
| Session Manager Plugin | EC2 instance access without SSH |
| boto3 | AWS SDK for Python |
| cfn-lint | CloudFormation linting |
| s3cmd | S3 operations |
GCP Tools ☁️¶
| Tool | Purpose |
|---|---|
| gcloud | GCP service management |
| docker-credential-gcr | GCR authentication |
| gsutil | Cloud Storage operations (via gcloud) |
Configuration & Security¶
| Tool | Purpose |
|---|---|
| Ansible | Configuration management |
| ansible-lint | Playbook validation |
| Trivy | Vulnerability scanning |
| pre-commit | Git hook framework |
| Task | Modern task runner |
AI-Powered Development¶
| Tool | Provider | Best For |
|---|---|---|
| claude | Anthropic | Code review, architecture |
| codex | OpenAI | Code generation |
| copilot | GitHub | IDE integration |
| gemini | Multi-modal, GCP tasks |
See AI CLI Setup Guide for authentication and usage.
Development Tools¶
| Tool | Version |
|---|---|
| Python | 3.12 |
| Node.js | LTS |
| Git | Latest |
| GitHub CLI (gh) | Latest |
| jq | Latest |
Database Clients¶
| Tool | Version |
|---|---|
| mongosh | v6.0 |
| psql | PostgreSQL 17 |
| mysql | Latest |
Network & Utilities¶
- dig, nslookup - DNS troubleshooting
- ncat, telnet - Network connectivity
- curl, wget - HTTP clients
- vim, less - Editors/pagers
- tree - Directory visualisation
Quick Start¶
Interactive Shell¶
docker run -it --rm \
-v $PWD:/workspace \
-v ~/.aws:/root/.aws \
-v ~/.config/gcloud:/root/.config/gcloud \
-v ~/.ssh:/root/.ssh \
-w /workspace \
ghcr.io/jinalshah/devops/images/all-devops:latest
One-Liner Commands¶
# Check versions
docker run --rm ghcr.io/jinalshah/devops/images/all-devops:latest terraform version
docker run --rm ghcr.io/jinalshah/devops/images/all-devops:latest aws --version
docker run --rm ghcr.io/jinalshah/devops/images/all-devops:latest gcloud --version
# Verify authentication
docker run --rm -v ~/.aws:/root/.aws \
ghcr.io/jinalshah/devops/images/all-devops:latest \
aws sts get-caller-identity
docker run --rm -v ~/.config/gcloud:/root/.config/gcloud \
ghcr.io/jinalshah/devops/images/all-devops:latest \
gcloud auth list
Real-World Examples¶
Multi-Cloud Terraform Deployment¶
Deploy infrastructure to both AWS and GCP:
docker run --rm \
-v $PWD:/workspace \
-v ~/.aws:/root/.aws \
-v ~/.config/gcloud:/root/.config/gcloud \
-w /workspace \
ghcr.io/jinalshah/devops/images/all-devops:latest \
sh -c "
# Deploy AWS infrastructure
cd aws/
terraform init
terraform apply -auto-approve
# Deploy GCP infrastructure
cd ../gcp/
terraform init
terraform apply -auto-approve
"
Multi-Cloud Kubernetes Deployment¶
Deploy to both EKS and GKE:
docker run --rm \
-v $PWD:/workspace \
-v ~/.aws:/root/.aws \
-v ~/.config/gcloud:/root/.config/gcloud \
-v ~/.kube:/root/.kube \
-w /workspace \
ghcr.io/jinalshah/devops/images/all-devops:latest \
sh -c "
# Deploy to EKS
aws eks update-kubeconfig --region us-east-1 --name my-eks-cluster
helm upgrade --install myapp ./charts/myapp --namespace production
# Deploy to GKE
gcloud container clusters get-credentials my-gke-cluster --region us-central1
helm upgrade --install myapp ./charts/myapp --namespace production
"
Security Scanning Across Cloud Configs¶
docker run --rm -v $PWD:/workspace -w /workspace \
ghcr.io/jinalshah/devops/images/all-devops:latest \
sh -c "
# Scan Terraform configs
trivy config ./terraform/aws
trivy config ./terraform/gcp
# Lint CloudFormation
cfn-lint ./cloudformation/**/*.yaml
# Validate Terraform
cd terraform/aws && terraform validate
cd ../gcp && terraform validate
"
CI/CD Integration¶
GitHub Actions¶
name: Multi-Cloud Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
container:
image: ghcr.io/jinalshah/devops/images/all-devops:1.0.abc1234
steps:
- uses: actions/checkout@v4
- name: Configure AWS
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Configure GCP
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Deploy to AWS
run: |
cd terraform/aws
terraform init
terraform apply -auto-approve
- name: Deploy to GCP
run: |
cd terraform/gcp
terraform init
terraform apply -auto-approve
GitLab CI¶
stages:
- deploy
deploy:multi-cloud:
stage: deploy
image: registry.gitlab.com/jinal-shah/devops/images/all-devops:1.0.abc1234
script:
# AWS deployment
- cd terraform/aws
- terraform init
- terraform apply -auto-approve
# GCP deployment
- cd ../gcp
- terraform init
- terraform apply -auto-approve
variables:
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
GOOGLE_APPLICATION_CREDENTIALS: /tmp/gcp-key.json
before_script:
- echo $GCP_SA_KEY | base64 -d > /tmp/gcp-key.json
only:
- main
Troubleshooting¶
AWS commands failing with 'Unable to locate credentials'
Problem: AWS CLI can't find credentials
Solution: Ensure ~/.aws is mounted correctly
gcloud commands failing with authentication errors
Problem: GCP CLI can't authenticate
Solution: Run gcloud auth on host first
Image pull is slow
Problem: Large image size (~3.2 GB)
Solutions:
- Use GHCR instead of Docker Hub (faster CDN)
- Consider using aws-devops or gcp-devops if you only need one cloud
- Pre-pull images in CI/CD setup phase
- Use pinned versions to leverage Docker layer caching
Performance Tips¶
Optimise for CI/CD
- Pin versions: Use immutable tags like
1.0.abc1234instead oflatest - Pre-pull images: Pull during CI setup phase, not during actual work
- Layer caching: Use consistent image versions across pipeline jobs
- Registry choice: GHCR has the best performance for most regions
Reduce Local Disk Usage
Next Steps¶
- Authentication Guide - Set up AWS, GCP, and AI CLI credentials
- Workflows - Multi-cloud workflow patterns
- Architecture - Understand what's inside
- Choosing an Image - Compare all variants