Skip to content

bhashas/test-tailscale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

135 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deploy Status

🚀 Proxmox CI/CD Lab — Terraform + Ansible + Tailscale HTTPS + UFW

Pipeline CI/CD complet : un git push provisionne automatiquement une VM sur Proxmox (Hetzner), la sécurise via UFW, et déploie un serveur web avec certificat SSL automatique.

Zéro port exposé sur internet. Accès exclusif via Mesh VPN. 100% as-code.


📐 Architecture

┌─────────────────────────────────────────────────────────────┐
│  Poste Dev (Ubuntu Management VM)                           │
│  git push → GitHub (Concurrency Lock: Active)               │
└─────────────────────────┬───────────────────────────────────┘
                          │
                          ▼
                   GitHub Actions Runner
                          │
              ┌───────────┴───────────┐
              │                       │
              ▼                       ▼
       Checkov + Trivy         Tailscale Node
       (IaC Security)         (Runner joins Mesh)
              │                       │
              └───────────┬───────────┘
                          │ Tailscale encrypted tunnel
                          ▼
                  Proxmox Hetzner (100.108.39.48)
                  subnet: 192.168.192.0/18
                          │
                          ▼
              ┌───────────────────────────┐
              │   VM 505 (Ubuntu 22.04)   │
              │   🔒 UFW: Tailscale Only  │
              │   🌐 HTTPS: Tailscale Cert│
              │   DNS: vm-test-proxmox-1  │
              └───────────────────────────┘

🔄 Pipeline CI/CD

Gestion de flux : cancel-in-progress: false garantit l'intégrité du State Terraform.

git push (main)
    │
    ├── [Job 1] Scan IaC : Checkov & Trivy (Export SARIF)
    │
    ├── [Job 2] Terraform : Provisionnement VM Proxmox
    │           └── Clone VM template Cloud-Init (IP statique + SSH)
    │
    └── [Job 3] Ansible : Configuration & Hardening
                ├── Join Tailnet (via authkey dédiée)
                ├── SSL : Provisionnement cert via 'tailscale cert'
                ├── Nginx : Config HTTPS & Headers de sécurité
                └── UFW : Fermeture totale IP publique (Inbound Deny)

🛠️ Stack technique

Infrastructure as Code

  • Terraform bpg/proxmox provider — Provisionnement via API Proxmox.
  • Cloud-init — Injection clé SSH ed25519 + IP statique.
  • Terraform Cloud — Backend distant pour le state.

Configuration Management & Sécurité

  • Ansible — Playbook idempotent pour Nginx et la sécurisation système.
  • UFW (Firewall) — Stratégie Default Deny. Seul le trafic via tailscale0 est autorisé.
  • Tailscale Cert — HTTPS automatique sans exposition de ports publics.

📁 Structure du projet

test-tailscale/
├── .github/
│   └── workflows/
│       └── deploy.yml        # Pipeline CI/CD complet
├── ansible/
│   ├── inventory.ini         # VM cible via DNS Tailscale
│   └── install_nginx.yml     # Playbook : Nginx + SSL + UFW
├── main.tf                   # VM Proxmox + cloud-init
└── README.md

🔐 Secrets GitHub

Secret Rôle
TAILSCALE_AUTHKEY Auth key éphémère pour le Runner
TAILSCALE_VM_AUTHKEY Auth key pour l'enregistrement de la VM cible
PM_API_URL URL API Proxmox via Tailscale
PM_API_TOKEN_ID ID token API Proxmox
PM_API_TOKEN_SECRET Secret UUID du token Proxmox
SSH_PRIVATE_KEY Clé ed25519 privée pour Ansible
TF_API_TOKEN Token Terraform Cloud

🚀 Déploiement & Résultat

Prérequis

  • Node Proxmox avec Tailscale et subnet routing activé (192.168.192.0/18).
  • Template Ubuntu 22.04 cloud-init (VM ID 9000).

Validation

#Test du certificat SSL (Cadenas vert 🔒)
curl -v https://vm-test-proxmox-1.your-tailnet.ts.net
# Test du Pare-feu (Accès IP publique bloqué)
curl --connect-timeout 5 http://<IP_PUBLIQUE_HETZNER>
# → Connection timed out

📊 Focus Technique

Axe Technologies Implémentation
Infrastructure as Code Terraform + Proxmox Provisionnement immuable via API & Cloud-Init
Configuration Management Ansible Playbooks idempotents & Hardening système
CI/CD Pipeline GitHub Actions Workflow multi-jobs avec gestion de concurrence
Networking & Sécurité Tailscale + UFW VPN Mesh Zero-Trust & Firewalling strict
DevSecOps Checkov + Trivy Analyse statique IaC & Scan de vulnérabilités

image_3

👤 Auteur

Brahim Hashas Cloud & Automation Engineer Orienté pratique DevSecOps sur infrastructures Bare-Metal (Hetzner/Proxmox).



About

Full GitOps Lab: Automated VM provisioning on Proxmox (Hetzner) via Terraform & Ansible. Zero-Trust networking with Tailscale Mesh VPN & automated SSL. 100% Infrastructure-as-Code.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors