Skip to content

Trebuac/packer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tests de Packer by HashiCorp

Intro

Quelques tests du framework Packer pour créer des VM multiprovider (VirtualBox, VMWare, AWS AMI,...) ou encapsuler cela dans des box Vagrant.

Site officiel => Packer

Premiers pas inspirés par la documentation et les exemples suivant :

Pré-requis:

  • Installer Packer - testé sur la 1.5.6 (Mai 2020)
  • Installer Vagrant - testé sur la version 2.2.7 (Janvier 2020)
  • Installer VirtualBox - testé sur la 6.0.18

Windows 10

Script Packer

But :

  • Créer une VM VirtualBox et/ou une box Vagrant à partir de l'iso windows 10 du site Microsoft
  • Passser automatiquement les configurations (création d'un utilisateur, configuration des disques, langues, ...)
  • Installer les outils VirtualBox additionnels
  • Activer WinRM (pour que Packer commence par provisionner la machine/lancer des commandes à distance puis pour une utilisation future d'Ansible pour du provisionning plus poussé)

Pré-requis spécifique:

  • L'iso de windows 10 - testé avec un W10 Pro - version 1909 (Mars 2020)

Lignes de commandes :

  • packer inspect windows10.json pour obtenir des infos sur la conf packer (variable, builders, provisionners,...)
  • packer validate windows10.json pour valider le script (syntaxe et références)
  • packer build -var 'iso_path=[path to iso]' windows10.json en précisant le lien vers l'iso windows à installer.

Note : Pour ne pas générer la box Vagrant (et garder la VM VirtualBox créé, ajouter le paramètre -except vagrant. Un warning existe sur la vérification du hash de l'iso que j'ai désactivé (l'iso est récupéré directement via l'outil de Microsoft et aucun site officiel donne le hash à obtenir). Possiblité de le calculer sur son poste avec powershell mais on vérifie alors pas grand chose :).

Quelques explications sur le déroulement (visualisable dans la console lors du lancement du build) :

  1. Packer créé une VM VirtualBox avec l'iso windows monté
  2. La présence d'un fichier Autounattend.xml dans le lecteur de disquette (floppy_files) déclenche automatiquement le passage de l'installation sans intervention humaine (sauf mauvaise conf)
  3. Suite au premier redémarrage, Windows exécute la partie "oobeSystem" du fichier Autounattend.xml avec la connexion automatique (AutoLogon obligatoire) puis le lancement des scripts FirstLogonCommands
  4. Ces scripts permettent d'activer winRM
  5. Suite à cela, Packer qui était en attente active sur la connexion WinRM reprend la main.
  6. Packer lance les différents provisionners déclarés (le script exécutant l'installation des outils Vbox pour l'instant qui est attaché sur le lecteur F - l'upload wia winRM est problématique à cause de ce soucis)
  7. Packer ferme proprement la VM (toujours sous le format OVF)
  8. Packer exécute les post-processors notamment celui de Vagrant qui transforme la VM OVF en box Vagrant (possibilité de garder la VM d'origine avec keep_input_artifact = true)

Quelques ressources intéressantes qui m'ont servis : vboxmanage-modifyvm, windows-commands

Answer file Wndows 10

Quelques liens utiles pour la création du fichier Autounattend.xml :

Ubuntu 20.04

Script Packer

De façon similaire à la partie windows 10, le but de ce template Packer est de :

  • Créer une VM VirtualBox et/ou une box Vagrant à partir de l'iso Ubuntu 20.04 LTS
  • Créer la configuration minimal de l'OS (utilisateurs, langues, disques...)
  • Installer les outils VirtualBox additionnels
  • Activer l'accès SSH (pour packer puis faire du provisionning un peu plus poussé dans un second temp avec ansible par exemple)

Pré-requis spécifique:

  • L'iso de Ubuntu 20.04 - testé avec la version serveur du 2020-04-23 07:47

Toujours mieux de télécharger avant le fichier iso en local et changer le path dans le script. Si le fichier n'est pas trouvé par Packer, celui-ci le télécharge automatiquement sur le site d'Ubuntu.

Note : : Bien prendre un legacy server d'ubuntu et pas la distribution "live server" qui ne s'installe pas de la même manière...

Lignes de commandes :

  • packer inspect ubuntu20.json pour obtenir des infos sur la conf packer (variable, builders, provisionners,...)
  • packer validate ubuntu20.json pour valider le script (syntaxe et références)
  • packer build ubuntu20.json avec la possibilité d'écraser les variables iso_local et iso_md5 si besoin

Note : Pour ne pas générer la box Vagrant (et garder la VM VirtualBox créé, ajouter le paramètre -except vagrant.

Preseed Ubuntu/Debian

La boot_command est un peu plus compliquée que sur windows, les premières instructions permettent de sortir de l'installer en mode graphique qui est lancé automatiquement au démarrage et de passer en ligne de commande :

 "<esc>",
 "<esc>",
 "<enter>"

Puis la séquence est entrée par packer en spécifiant le fichier preseed.cfg à utiliser. La ligne est réduite au minimum par rapport aux exemples de geerlingguy ou des équipes de chef.io notamment pour :

Quelques liens intéressants pour créer le preseed.cfg Debian :

VM OVF

Si on exclut le post-processor vagrant ou si l'on conserve la VM d'origine, le fichier ovf présent dans .\output-virtualbox-iso peut être utilisé pour lancer directement des nouvelles VMs dans Virtualbox (possibilté de reconfigurer certains paramètres à l'import dans VB comme mémoire, CPU, network,...).

Vagrant

Sinon Packer génère un fichier .box.

Pour l'utiliser:

  • vagrant box add --name "trebuac/windows10" .\build\virtualbox_windows-10.box référence votre box dans votre repo vagrant local

  • vagrant box list pour vérifier la bonne insertion de la box.

  • vagrant init "trebuac/windows10" dans le dossier de votre choix pour générer le fichier de conf vagrant lié à cette box (et sauvegarder les fichiers). Pour info, certains paramètre sont par défaut dans la box (fichier vagrantfile.template insérer par Packer)

  • vagrant up pour lancer la VM et enjoy :)

Note : La fermeture de la gui lancé n'éteint pas toujours la VM côté Vagrant. Voir vagrant global-status et utiliser vagrant reload/suspend/halt/destroy

Plus de tests dans le projet vagrant.

About

Tests de Packer by HashiCorp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published