Aller au contenu

A restructurer

Ce contenu a été déplacé depuis le tutoriel GCP. Il sera restructure dans une version ultérieure.

Build et validation

Lancement du build Packer et vérification de l'image créée.


Lancer le build

Assurez-vous d'être dans le répertoire packer-gcp/ et que vos credentials sont configurees (voir Souverainete GCP).

Avec une clé JSON (méthode A)

export GOOGLE_APPLICATION_CREDENTIALS="$(pwd)/packer-key.json"
packer build .

Avec WIF (méthode B)

export GOOGLE_APPLICATION_CREDENTIALS="$(pwd)/wif-config.json"
packer build .

Déroulement du build

Packer exécuté les étapes suivantes :

  1. Crée une VM temporaire dans la zone configurée
  2. Attend la connexion SSH à la VM
  3. Exécuté Ansible pour provisionner la VM (installation Docker + Compose)
  4. Arrêté la VM et crée une image à partir du disque
  5. Supprimé la VM temporaire

Le build dure généralement 5 a 10 minutes.

Lire les logs

Pendant le build, Packer affiche les logs en temps réel :

==> googlecompute.docker-server: Creating instance...
==> googlecompute.docker-server: Waiting for SSH to become available...
==> googlecompute.docker-server: Connected to SSH!
==> googlecompute.docker-server: Provisioning with Ansible...
    googlecompute.docker-server: PLAY [Provisionner l'image Docker Server] ****
    googlecompute.docker-server: TASK [docker : Installer les dependances] ****
    googlecompute.docker-server: changed: [default]
    ...
    googlecompute.docker-server: PLAY RECAP ****
    googlecompute.docker-server: default: ok=7  changed=6  unreachable=0  failed=0
==> googlecompute.docker-server: Deleting instance...
Build 'googlecompute.docker-server' finished after 6 minutes 32 seconds.

Mode debug

Pour des logs plus détaillés :

PACKER_LOG=1 packer build .

Troubleshooting

Permission denied

Error: googleapi: Error 403: Required 'compute.instances.create' permission

Cause : le service account n'a pas les bons rôles. Fix : verifiez les rôles dans Réseau & Sécurité GCP.

API not enabled

Error: googleapi: Error 403: Compute Engine API has not been used in project

Fix :

gcloud services enable compute.googleapis.com

SSH timeout

Error: Timeout waiting for SSH

Causes possibles :

  • Règles de firewall bloquant le port 22
  • L'image source n'a pas de serveur SSH

Fix : verifiez les règles de firewall :

gcloud compute firewall-rules list --filter="allowed[].ports:22"

Universe domain mismatch

Error: universe domain mismatch

Cause : le universe_domain dans Packer ne correspond pas a celui configuré dans gcloud. Fix : verifiez la cohérence entre docker-server.auto.pkrvars.hcl et gcloud config get-value universe/domain.

Quota exceeded

Error: Quota 'CPUS' exceeded

Fix : demandez une augmentation de quota ou utilisez une zone différente.

Vérifier l'image

Après un build réussi, listez les images de la famille docker-server :

gcloud compute images list --filter="family=docker-server" --format="table(name,family,status,creationTimestamp)"

Attendu :

NAME                              FAMILY         STATUS  CREATION_TIMESTAMP
docker-server-1712345678          docker-server  READY   2026-04-09T...

Livrable

Checklist

Avant de passer à la suite, verifiez que :

  • packer build . s'est termine avec le message Build finished
  • L'image apparait dans gcloud compute images list --filter="name~docker"
  • Le statut de l'image est READY
  • Les logs ne contiennent pas de warnings Ansible critiques