From a4c10040f20678e23591506062d1edf96195ea3d Mon Sep 17 00:00:00 2001 From: Julien WITTOUCK Date: Sun, 10 May 2026 11:20:38 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20:=20add=20blog=20post=20on=20buildi?= =?UTF-8?q?ng=20golden=20images=20with=20packer=20on=20scaleway?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-05-10-packer-scaleway/cover.webp | Bin 0 -> 20836 bytes .../2026/2026-05-10-packer-scaleway/index.md | 250 ++++++++++++++++++ .../packer-image-built.webp | Bin 0 -> 17832 bytes .../packer-instance-building.webp | Bin 0 -> 20836 bytes 4 files changed, 250 insertions(+) create mode 100644 content/posts/2026/2026-05-10-packer-scaleway/cover.webp create mode 100644 content/posts/2026/2026-05-10-packer-scaleway/index.md create mode 100644 content/posts/2026/2026-05-10-packer-scaleway/packer-image-built.webp create mode 100644 content/posts/2026/2026-05-10-packer-scaleway/packer-instance-building.webp diff --git a/content/posts/2026/2026-05-10-packer-scaleway/cover.webp b/content/posts/2026/2026-05-10-packer-scaleway/cover.webp new file mode 100644 index 0000000000000000000000000000000000000000..7d71bb3e461390897b3930c626482f40335152b5 GIT binary patch literal 20836 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 literal 0 HcmV?d00001 diff --git a/content/posts/2026/2026-05-10-packer-scaleway/index.md b/content/posts/2026/2026-05-10-packer-scaleway/index.md new file mode 100644 index 0000000..175fc62 --- /dev/null +++ b/content/posts/2026/2026-05-10-packer-scaleway/index.md @@ -0,0 +1,250 @@ +--- +date: 2026-05-10 +title: "Construire des Golden Images avec Packer sur Scaleway" +slug: packer-scaleway +tags: + - scaleway + - devops +--- + +Pour mes expérimentations sur Tangled, je souhaitais tester l'auto-hébergement des _knot_ et _spindles_ dans des machines virtuelles (les explications arrivent dans un futur article). + +C'était donc l'occasion de rejouer un peu sur Scaleway, et avec _Packer_. + + + +Cet article n'a pas pour but d'expliquer comment fonctionne _Packer_, mais plutôt comment l'utiliser pour créer des Golden Images sur Scaleway. +Si vous avez besoin d'un tuto, allez voir l'[excellente formation de Stéphane Robert](https://blog.stephane-robert.info/docs/infra-as-code/provisionnement/packer/). + +## Installation et configuration de Packer + +`mise use packer` et c'est parti ! + +Il existe d'[autres moyens d'installer Packer](https://developer.hashicorp.com/packer/install), mais étant donné que mon outil préf du moment sait l'installer, je ne vois pas pourquoi j'irai me compliquer la vie 😅 + +La configuration de [Packer pour Scaleway](https://developer.hashicorp.com/packer/integrations/scaleway/scaleway) se fait avec un premier bloc `packer`, dans un fichier que j'appelle `packer.pkr.hcl` : + +```hcl +packer { + required_plugins { + scaleway = { + version = ">= 1.4.0" + source = "github.com/scaleway/scaleway" + } + } +} +``` + +La commande `packer init .` permet ensuite d'installer le plugin nécessaire au bon fonctionnement de Packer (le `.` désigne le répertoire courant, tous les fichiers `.pkr.hcl` sont analysés). + +```shell +❯ packer init . + +Installed plugin github.com/scaleway/scaleway v1.4.0 in "/home/jwittouck/.config/packer/plugins/github.com/scaleway/scaleway/packer-plugin-scaleway_v1.4.0_x5.0_linux_amd64" +``` + +## Extractions de clés d'API Scaleway + +Pour pouvoir appeler les API Scaleway et démarrer des VM, _Packer_ a besoin de clés d'accès. + +Ces sont à fournir en variable d'environnement à _Packer_, avec les noms habituels pour Scaleway : `SCW_ACCESS_KEY` et `SCW_SECRET_KEY`. L'identifiant du projet dans lequel créer les VM est les images se configure avec la variable `SCW_DEFAULT_PROJECT_ID`. + +Pour extraire des variables, plutôt qu'utiliser celles de mon compte personnel Scaleway, j'ai créé une application _Packer_ dans Scaleway, qui fera office de compte de service. + +Je crée aussi une policy _Packer_, affectée à mon application, qui aura la permission _InstancesFullAccess_, pour pouvoir créer et détruire des VM, ainsi que _BlockStorageFullAccess_ pour pouvoir gérer les images. + +```shell +$ scw iam application create name=packer + +ID d64438b9-0f2c-44ec-a771-a2dab4ccc56d +Name packer + +$ scw iam policy create name=packer \ + application-id=d64438b9-0f2c-44ec-a771-a2dab4ccc56d \ + rules.0.project-ids.0=3ac1d602-fcc5-471f-a0ee-2e8185c9c987 \ + rules.0.permission-set-names.0=InstancesFullAccess \ + rules.0.permission-set-names.1=BlockStorageFullAccess + +ID bf4030f3-21be-4c6f-a330-44a5533bea86 +Name packer +Description - +OrganizationID d2f60dce-f716-4e45-96cb-3837fe56f0d9 +CreatedAt now +UpdatedAt now +Editable true +Deletable true +Managed false +NbRules 0 +NbScopes 0 +NbPermissionSets 0 +ApplicationID d64438b9-0f2c-44ec-a771-a2dab4ccc56d +``` + +> Les UUID sont des faux ici, je vous vois bande de 🏴‍☠️ + +Enfin, j'extrais des clés d'API que je conserve précieusement. + +```shell +$ scw iam api-key create \ + application-id=d64438b9-0f2c-44ec-a771-a2dab4ccc56d \ + default-project-id=3ac1d602-fcc5-471f-a0ee-2e8185c9c987 + +AccessKey SCW44MH8NAR23D2X11B7 +SecretKey 471d4d3f-a0d0-4900-84e4-d5af16223123 +ApplicationID d64438b9-0f2c-44ec-a771-a2dab4ccc56d +``` + +Je stocke ces clés dans ma configuration `fnox` (en lieu et place de variables d'environnement), avec mon identifiant de projet, et je suis prêt à démarrer : + +```shell +$ fnox set SCW_DEFAULT_PROJECT_ID +Enter secret value ************ +✓ Set secret SCW_DEFAULT_PROJECT_ID + +$ fnox set SCW_ACCESS_KEY +Enter secret value ************ +✓ Set secret SCW_ACCESS_KEY + +$ fnox set SCW_SECRET_KEY +Enter secret value ************ +✓ Set secret SCW_SECRET_KEY +``` + +> J'aurai aussi pu faire des `export` de variable ou les configurer avec `mise set`, mais `fnox` fait bien le travail, et je peux pusher mon fichier de configuration dans le repo avec les secrets chiffrés. + +## Préparation de la source + +Je déclare ma VM source dans un fichier `scaleway.pkr.hcl`. + +Cette source sera la VM initiale, qui servira à la création de ma golden image. + +Je prends comme image de base une Ubuntu 26.04 (les `debian` fan-boys, pas taper). + +```hcl +source "scaleway" "ubuntu" { + image = "ubuntu_resolute" + zone = "fr-par-1" + commercial_type = "DEV1-S" + ssh_username = "root" + ssh_private_key_file = "~/.ssh/id_ed25519" +} +``` + +Le choix de la zone est important, car il va conditionner la zone sur laquelle pourra être créée la future VM. En fonction de votre use-case, il pourra être intéressant de créer des images sur de multiples zones. + +Les paramètres `ssh_username` et `ssh_private_key_file` permettent d'indiquer à _Packer_ comment se connecter à la VM pour exécuter ses scripts. Utiliser `root` n'est clairement pas ouf, mais sur ces images de base, je pense qu'on a pas réellement le choix. + +La récupération de la liste possible des images de base se fait avec la commande `scw marketplace image list` (j'ai un peu nettoyé le listing, mais c'est l'idée) : + +```shell +❯ scw marketplace image list +ID LABEL NAME CATEGORIES +9218d2c4-9de4-483d-85cb-0a0bcf85c1e8 almalinux_10 AlmaLinux 10 [distribution] +cfb3fa01-6406-4be8-9e9d-29daee2582fa centos_stream_9 Centos Stream 9 [distribution] +193cdddd-0b0b-43b5-84a6-f0d88ebe7611 debian_trixie Debian 13 (Trixie) [distribution] +3ecc8da3-d8e5-41a3-a08e-3032fc9a43e3 fedora_44 Fedora 44 [distribution] +01b98a95-2325-428c-ada3-33874b54e293 rockylinux_10 Rocky Linux 10 [distribution] +63cb3ba6-570a-48f8-a5b8-29c9650e6980 ubuntu_resolute Ubuntu 26.04 Resolute Raccoon [distribution] +61e26f58-5d36-4772-b9fc-516863c78855 windows_server_2025_core Windows Server 2025 Core [distribution] +``` + +## Déclaration du build + +Le bloc build permet de définir le provisionning de l'image : binaires à installer, scripts et commandes à exécuter. + +Pour tester ma configuration, je vais simplement exécuter un `apt update` dans un provisionner shell : + +```hcl +build { + sources = ["source.scaleway.ubuntu"] + provisioner "shell" { + inline = [ + "apt update", + ] + } +} +``` + +Je lance la commande `packer build .` pour construire mon image : + +```shell +❯ packer build . +scaleway.ubuntu: output will be in this color. + +==> scaleway.ubuntu: Pre-validating image name: image-packer-1778090397 in zone fr-par-1 +==> scaleway.ubuntu: Pre-validating snapshot names +==> scaleway.ubuntu: Using existing SSH private key +==> scaleway.ubuntu: Creating server... +==> scaleway.ubuntu: Waiting for server to become active... +==> scaleway.ubuntu: Using SSH communicator to connect: 51.15.244.62 +==> scaleway.ubuntu: Waiting for SSH to become available... +==> scaleway.ubuntu: Connected to SSH! +==> scaleway.ubuntu: Provisioning with shell script: /tmp/packer-shell2753320730 +``` + +Le build est en cours, l'instance en cours de construction est alors visible sur la console Scaleway : + +![img.webp](packer-instance-building.webp) + +Le build continue, avec l'exécution de mon `apt update` : + +```shell +==> scaleway.ubuntu: +==> scaleway.ubuntu: WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +==> scaleway.ubuntu: +==> scaleway.ubuntu: Get:1 http://security.ubuntu.com/ubuntu resolute-security InRelease [136 kB] +==> scaleway.ubuntu: Hit:2 https://ppa.launchpadcontent.net/scaleway/stable/ubuntu resolute InRelease +==> scaleway.ubuntu: Get:3 http://security.ubuntu.com/ubuntu resolute-security/main amd64 Packages [23.7 kB] +==> scaleway.ubuntu: Hit:4 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute InRelease +==> scaleway.ubuntu: Get:5 http://security.ubuntu.com/ubuntu resolute-security/main Translation-en [12.9 kB] +==> scaleway.ubuntu: Get:6 http://security.ubuntu.com/ubuntu resolute-security/main amd64 Components [792 B] +==> scaleway.ubuntu: Get:7 http://security.ubuntu.com/ubuntu resolute-security/main amd64 c-n-f Metadata [968 B] +==> scaleway.ubuntu: Get:8 http://security.ubuntu.com/ubuntu resolute-security/universe amd64 Packages [28.8 kB] +==> scaleway.ubuntu: Get:9 http://security.ubuntu.com/ubuntu resolute-security/universe Translation-en [8968 B] +==> scaleway.ubuntu: Get:10 http://security.ubuntu.com/ubuntu resolute-security/universe amd64 Components [15.9 kB] +==> scaleway.ubuntu: Get:11 http://security.ubuntu.com/ubuntu resolute-security/universe amd64 c-n-f Metadata [628 B] +==> scaleway.ubuntu: Get:12 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates InRelease [136 kB] +==> scaleway.ubuntu: Hit:13 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-backports InRelease +==> scaleway.ubuntu: Get:14 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/main amd64 Packages [58.9 kB] +==> scaleway.ubuntu: Get:15 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/main Translation-en [17.8 kB] +==> scaleway.ubuntu: Get:16 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/main amd64 Components [792 B] +==> scaleway.ubuntu: Get:17 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/main amd64 c-n-f Metadata [1132 B] +==> scaleway.ubuntu: Get:18 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/universe amd64 Packages [28.5 kB] +==> scaleway.ubuntu: Get:19 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/universe Translation-en [8756 B] +==> scaleway.ubuntu: Get:20 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/universe amd64 Components [15.9 kB] +==> scaleway.ubuntu: Get:21 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/universe amd64 c-n-f Metadata [624 B] +==> scaleway.ubuntu: Get:22 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/restricted amd64 Packages [29.4 kB] +==> scaleway.ubuntu: Get:23 http://fr-par-1.clouds.archive.ubuntu.com/ubuntu resolute-updates/restricted Translation-en [6588 B] +==> scaleway.ubuntu: Fetched 532 kB in 1s (590 kB/s) +==> scaleway.ubuntu: Reading package lists... +==> scaleway.ubuntu: Building dependency tree... +==> scaleway.ubuntu: Reading state information... +==> scaleway.ubuntu: 25 packages can be upgraded. Run 'apt list --upgradable' to see them. +==> scaleway.ubuntu: Waiting for any user data apply to finish if provided... +==> scaleway.ubuntu: Shutting down server... +==> scaleway.ubuntu: Backing up server to image: image-packer-1778090397 +==> scaleway.ubuntu: Creating snapshot for volume: a97bd8fd-6bcd-499f-8e72-3ace8d793517 +==> scaleway.ubuntu: Creating image from snapshots: image-packer-1778090397 +==> scaleway.ubuntu: Destroying server... +Build 'scaleway.ubuntu' finished after 1 minute 20 seconds. + +==> Wait completed after 1 minute 20 seconds + +==> Builds finished. The artifacts of successful builds are: +--> scaleway.ubuntu: An image was created: 'image-packer-1778090397' (ID: e09912f5-d652-4236-946e-1acb62a8d9a6) in zone 'fr-par-1' based on snapshots [(: 8d087b45-f300-4b80-8fc7-7335724e30fa)] +``` + +Une fois le build terminé, mon image apparaît dans la console Scaleway : + +![img.webp](packer-image-built.webp) + +Je n'ai plus qu'à instancier une VM utilisant mon image, mais ça, c'est une autre histoire. + +## Liens et références + +Packer : + +* [Install Packer](https://developer.hashicorp.com/packer/install) +* [Scaleway Packer integration](https://developer.hashicorp.com/packer/integrations/scaleway/scaleway) +* La documentation du [builder Scaleway pour Packer](https://developer.hashicorp.com/packer/integrations/scaleway/scaleway/latest/components/builder/scaleway) +* [Formation Packer : du template de base à l'automatisation complète](https://blog.stephane-robert.info/docs/infra-as-code/provisionnement/packer/) - Stéphane Robert \ No newline at end of file diff --git a/content/posts/2026/2026-05-10-packer-scaleway/packer-image-built.webp b/content/posts/2026/2026-05-10-packer-scaleway/packer-image-built.webp new file mode 100644 index 0000000000000000000000000000000000000000..e4fec27860a7bdeb0c5fc7c47221940ae2da976f GIT binary patch literal 17832 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 literal 0 HcmV?d00001 -- 2.51.2