Aller au contenu

Prérequis et architecture

Ce tutoriel s'appuie sur le Tutoriel 1 — Fondations et le Tutoriel 2 — VDI Linux. Verifiez que votre environnement est pret.


Tutoriels précédents termines

Vous devez avoir :

  • Un projet GCP configuré avec universe_domain
  • Un service account packer-builder avec les rôles nécessaires
  • Une méthode d'authentification (clé JSON ou WIF)
  • Le build du Tuto 1 (image Docker) fonctionnel
  • Au moins une image VDI Linux deployable (Tuto 2)

Obligatoire

Si vous n'avez pas suivi les tutoriels précédents, faites-le d'abord :

Versions requises

Outil Version minimum Vérification
gcloud CLI Dernière gcloud --version
Packer 1.10+ packer --version
Ansible 2.15+ ansible --version
Python 3.10+ python3 --version

APIs GCP supplémentaires

En plus des APIs activees dans le Tuto 1, activez :

gcloud services enable sqladmin.googleapis.com
gcloud services enable servicenetworking.googleapis.com
API Usage
Cloud SQL Admin API Provisionnement de l'instance PostgreSQL
Service Networking API Connexion Private IP entre VPC et Cloud SQL

Composants Apache Guacamole

Apache Guacamole se compose de trois éléments :

graph LR
    Browser["Navigateur"] -->|"HTTP"| Client["guacamole-client (WAR)"]
    Client -->|"Guacamole Protocol"| Daemon["guacd (daemon C)"]
    Client -->|"JDBC"| DB["PostgreSQL"]
    Daemon -->|"RDP / SSH"| VDI["VDI distantes"]

guacamole-client (webapp)

Application web Java déployée dans Tomcat. C'est l'interface utilisateur : écran de login, liste des connexions, affichage du bureau distant dans le navigateur via HTML5 Canvas.

guacd (daemon proxy)

Daemon natif en C qui fait le pont entre le protocole Guacamole (websocket) et les protocoles distants (RDP, SSH). C'est lui qui etablit les connexions vers les VDI.

VNC interdit

Ce tutoriel compile guacd sans support VNC. La dépendance libvncserver-dev n'est pas installee. Seuls RDP et SSH sont actifs.

Extensions

  • guacamole-auth-jdbc-postgresql : stockage des utilisateurs, connexions et permissions dans PostgreSQL
  • guacamole-auth-sso-saml : authentification déléguée a un IdP SAML externe

Flux réseau

Source Destination Port Protocole Usage
Navigateur VM Guacamole 8080 HTTP Interface web
Guacamole webapp Cloud SQL 5432 PostgreSQL Auth + connexions
Guacamole webapp IdP externe 443 HTTPS/SAML Authentification SSO
guacd VDI Linux 3389 RDP Bureau distant
guacd VDI Linux 22 SSH Terminal distant
guacd VDI Windows 3389 RDP Bureau distant

Réseau interne

Toutes les connexions guacd → VDI et webapp → Cloud SQL passent par le réseau interne GCP (Private IP). Seul le port 8080 est expose à l'extérieur.

Rôles du service account

Le service account packer-builder existant a besoin d'un rôle supplémentaire :

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:packer-builder@PROJECT_ID.iam.gserviceaccount.com" \
  --role="roles/cloudsql.client"

Structure du projet

À la fin de ce tutoriel, votre projet aura cette structure :

packer-guacamole/
├── packer/
│   ├── guacamole.pkr.hcl
│   ├── variables.pkr.hcl
│   └── guacamole.auto.pkrvars.hcl
└── ansible/
    ├── playbook.yml
    └── roles/
        ├── tomcat/
        │   ├── tasks/main.yml
        │   ├── handlers/main.yml
        │   └── defaults/main.yml
        ├── guacd/
        │   ├── tasks/main.yml
        │   ├── handlers/main.yml
        │   └── defaults/main.yml
        └── guacamole-webapp/
            ├── tasks/main.yml
            ├── templates/
            │   └── guacamole.properties.j2
            └── defaults/main.yml