Image de développement pour l'Infrastructure as Code (IaC) du monorepo infrastructure.
Construite sur Rocky Linux 10 (UBI) et publiée sur
ghcr.io/stackopshq/devcontainer:latest.
Les versions sont alignées sur celles de .tasks.d/install/Taskfile.yml et du
groupe ansible de pyproject.toml du repo infrastructure.
| Catégorie | Outil | Version |
|---|---|---|
| Task runner | Task | v3.49.1 |
| Runtime | Node.js | 22 |
| Python | uv + Python | 0.11.3 / 3.13.9 |
| Kubernetes | kubectl | v1.35.3 |
| Kubernetes | Helm | v4.1.3 |
| Kubernetes | Kustomize | v5.8.0 |
| GitOps | Flux | 2.7.2 |
| IaC | OpenTofu | v1.11.5 |
| IaC | Terraform | v1.15.6 |
| IaC | terraform-docs | v0.21.0 |
| Secrets | Vault (OpenBao-compatible) | v1.21.4 |
| Ansible | ansible-core | 2.20.7 |
| Ansible | ansible-lint | 26.4.0 |
| Ansible | molecule (+ plugins) | 26.4.0 |
Outils système : git, curl, jq, gnupg2, unzip/tar/xz, gcc,
libffi/openssl/cairo-devel, vim, bind-utils, net-tools,
bash-completion.
- Par défaut :
root— requis par les jobs CI GitLab qui écrivent dans l'arbre de build partagé (/builds/...). - VS Code Dev Container :
devops(UID/GID1000/1000, sudo sans mot de passe) via"containerUser"dansdevcontainer.json.
.
├── Containerfile # Définition de l'image
├── init.sh # Script d'installation des outils
├── devcontainer.json # Configuration VS Code Dev Containers
├── .github/workflows/ # CI GitHub Actions (build + push GHCR)
└── README.md
podman build -t ghcr.io/stackopshq/devcontainer:latest -f Containerfile ..github/workflows/build-devcontainer.yml construit l'image et la pousse sur
GHCR (ghcr.io/${{ github.repository }}).
Déclencheurs :
- Push sur
main/mastersiContainerfile/init.sh/le workflow changent. - Tag git
v*→ image taggée avec le tag (release versionnée). - Déclenchement manuel (
workflow_dispatch).
Tags publiés : :latest, :sha-<short>, et :<git-tag> sur les tags git.
podman pull ghcr.io/stackopshq/devcontainer:latestSi le package GHCR est privé :
podman login ghcr.ioavec un PAT GitHub disposant du scoperead:packages.
- Ajouter une fonction
install_*()dansinit.sh(avec un commentaire# renovate:pour épingler la version). - Appeler la fonction depuis
main(). - Reconstruire l'image.