Infrastructure-as-Code, sΓ©curitΓ©, monitoring et automatisation β production-grade.
Ce repo est mon portfolio technique : il démontre ma capacité à concevoir, sécuriser et opérer une infrastructure complète de bout en bout.
π Architecture Overview
flowchart TB
subgraph Cloud["βοΈ Cloud AWS"]
subgraph VPC["VPC 10.0.0.0/16"]
subgraph Public["Public Subnets"]
LB["π ALB / Ingress"]
Bastion["π Bastion Host"]
end
subgraph Private["Private Subnets"]
subgraph EKS["βΈοΈ Kubernetes Cluster"]
App1["App Pod"]
App2["App Pod"]
end
Monitoring["π Prometheus + Grafana"]
end
end
end
subgraph CI_CD["π GitHub Actions"]
Lint["Lint (ansible-lint, shellcheck, hadolint)"]
Sec["Security (Trivy)"]
Test["Tests (Molecule)"]
end
subgraph IaC["βοΈ IaC"]
TF["Terraform"]
ANS["Ansible"]
end
subgraph Tooling["π§° Tooling"]
DC["Docker Compose"]
Helm["Helm Charts"]
Scripts["Shell Scripts"]
end
CI_CD -- Deploy --> TF
TF -- Provision --> VPC
ANS -- Harden --> Bastion
ANS -- Harden --> EKS
Helm -- Deploy --> EKS
Monitoring -- Collect --> App1
Monitoring -- Collect --> App2
Loading
Domain
Tools & Practices
Level
Cloud
AWS (VPC, EC2, IAM, S3), Terraform, Terragrunt
βββ
Containers
Docker, Docker Compose, BuildKit, distroless
βββ
Orchestration
Kubernetes, Helm, HPA, PDB, NetworkPolicies, RBAC
βββ
IaC
Ansible (Molecule), Terraform (modules, workspaces), Cloud-init
βββ
CI/CD
GitHub Actions, Trivy, pre-commit, semantic release
βββ
Security
CIS benchmarks, fail2ban, IMDSv2, encrypted volumes, least-privilege, seccomp
βββ
Monitoring
Prometheus, Grafana, node_exporter
ββ
Scripting
Bash (POSIX, shellcheck-clean), Python
βββ
π Ansible Playbooks (idempotent, CIS-aligned)
Playbook
Description
Tests
ansible/hardening/
SSH, UFW, sysctl, auditd, fail2ban, auto-updates
Molecule + Testinfra
ansible/docker-install/
Docker CE + Compose, daemon hardening
Ad-hoc
ansible/monitoring-setup/
Prometheus node_exporter + Grafana Agent
Ad-hoc
ansible/backup/
Restic automated backups with rotation
Ad-hoc
ποΈ Terraform Modules
cd terraform/environments/dev
terraform init
terraform plan
Module
Features
modules/vpc/
Multi-AZ, public/private, IGW, NAT-ready, SG with least-privilege
modules/compute/
Encrypted EBS, IMDSv2, SSM access, cloud-init bootstrap
Artifact
Security Features
kubernetes/base/deployment.yaml
Non-root, read-only root FS, drop: ALL capabilities, seccomp, resource limits
kubernetes/monitoring/
ServiceMonitor, Grafana dashboard ConfigMap
kubernetes/helm/
Production Helm chart with HPA, PDB, NetworkPolicy
File
Highlights
compose-template
Security opts, cap_drop, healthchecks, log rotation, resource limits
Dockerfile.*
Multi-stage, non-root, npm ci --only=production, minimal attack surface
Tous les scripts passent shellcheck -S warning : set -euo pipefail, variables quoted, pas de eval.
Script
Use Case
server-init.sh
Bootstrap serveur frais (Debian/Ubuntu)
docker-cleanup.sh
Nettoyage sΓ©curisΓ© + dry-run
health-check.sh
Rapport complet (text / JSON)
ssl-check.sh
VΓ©rification certificats
backup-db.sh
Backup PostgreSQL/MySQL avec rotation
Workflow
Outcome
ci.yml
shellcheck + ansible-lint + yamllint + hadolint + molecule + terraform fmt + k8s dry-run
security.yml
Trivy filesystem scan β SARIF β GitHub Security tab
pre-commit
Hooks locaux avant chaque commit
1. Ansible β Hardening a server
ansible-playbook ansible/hardening/main.yml -i inventory.ini -u admin --limit production
2. Terraform β Spin up infrastructure
cd terraform/environments/dev
export AWS_PROFILE=default
terraform init
terraform plan -var=" ssh_key_name=my-key"
terraform apply
3. Kubernetes β Deploy to cluster
kubectl apply -f kubernetes/base/
helm upgrade --install app kubernetes/helm/devops-toolkit
make setup # Install pre-commit, linters
make lint # Run all linters
make test # Run Molecule tests
make all # Full CI simulation locally
π‘οΈ Security Highlights
Layer
Hardening
OS
CIS-aligned sysctl, SSH (no root, no password), fail2ban, UFW, auditd
Cloud
IMDSv2 enforced, encrypted EBS, SSM (no SSH key needed), least-privilege SG
Containers
Non-root, read-only root fs, cap_drop: ALL, health checks, resource limits
K8s
NetworkPolicies, PodSecurityStandards restricted, RBAC, HPA, PDB
CI/CD
Trivy scan on every push + weekly schedule, SARIF upload, no secrets in code
devops-toolkit/
βββ ansible/
β βββ hardening/ # CIS-inspired hardening (molecule tested)
β βββ docker-install/ # Docker CE setup
β βββ monitoring-setup/ # Node exporter + metrics
β βββ backup/ # Restic backup automation
βββ terraform/
β βββ modules/
β β βββ vpc/ # Reusable VPC module
β β βββ compute/ # Reusable EC2 module
β βββ environments/
β βββ dev/ # Dev workspace
β βββ staging/ # Staging workspace
β βββ prod/ # Prod workspace
βββ kubernetes/
β βββ base/ # Deployments, Services, HPA, NetworkPolicy, PDB
β βββ monitoring/ # Prometheus ServiceMonitor, Grafana Dashboard
β βββ helm/devops-toolkit/ # Production Helm chart
βββ docker/
β βββ compose-template/ # Secure docker-compose.yml
β βββ healthcheck-images/ # Multi-stage, non-root Dockerfiles
βββ scripts/
β βββ server-init.sh # Server bootstrap (shellcheck clean)
β βββ docker-cleanup.sh # Safe cleanup
β βββ health-check.sh # Reporting
β βββ ssl-check.sh # SSL monitoring
β βββ backup-db.sh # DB backup with rotation
βββ ci/ # CI/CD templates (GitHub Actions + GitLab CI)
βββ .github/workflows/ # CI pipelines
βββ Makefile # Unified build orchestration
βββ requirements.yml # Ansible collections
βββ .pre-commit-config.yaml # Pre-commit hooks
Tool
Version
Purpose
Ansible
2.16+
Server configuration
Terraform
1.9+
Cloud infrastructure
Kubernetes
1.29+
Container orchestration
Helm
3.15+
K8s package management
Docker
24.x+
Containerization
shellcheck
0.9+
Shell script quality
ansible-lint
6.22+
Ansible quality
Trivy
0.50+
Security scanning
π Notes for Recruiters
Ce dΓ©pΓ΄t est conΓ§u comme preuve opΓ©rationnelle de mes compΓ©tences. Chaque composant est :
Lint-clean (shellcheck 0 warnings, ansible-lint 0 violations, hadolint pass)
TestΓ© (Molecule pour Ansible, CI sur chaque push)
SΓ©curisΓ© (CIS, least-privilege, Trivy scan, encrypted Γ tous les niveaux)
DocumentΓ© (README, inline comments, Makefile avec make help)
N'hΓ©sitez pas Γ explorer les playbooks, les modules Terraform, et la CI. Un make all suffit pour reproduire l'intΓ©gralitΓ© des vΓ©rifications.
License : MIT β libre de rΓ©utilisation avec attribution.