InstaDMG ou comment préparer une image de déploiement générique

En tant qu’administrateur système, nous avons la charge du système d’information de l’entreprise, de sa maintenant et de son amélioration. Une des tâches assez récurrentes est l’installation d’un poste client. Lorsque vous recevez un nouveau Mac, après un gros plantage ou simplement pour des changements de configurations logiciels, vous devez passer des heures à installer Mac OS X, les mises à jour, les logiciels, et cela pour chaque poste.

L’un des moyens d’optimiser cette partie de votre travail est la création d’image générique. L’idée ici est de créer la configuration type de tous vos Mac (ou plusieurs configurations types, une pour les postes PAO, l’autre pour le secrétariat, etc.) et de les déployer ensuite sur vos clients.

Pour créer ces images disques génériques, vous avez deux choix :

  • Installer et configurer un Mac comme d’habitude, puis purger le système de tout le fichier spécifique (caches, kerberos local, connexion à un annuaire…) pour terminer par en faire une image.
  • Installer et configurer le nouveau système sans jamais avoir le démarrer, depuis un autre Mac OS X fonctionnel et dans une image disque directement.

Dans le second cas (le plus propre et le plus intéressant), nous avons encore deux possibilités d’actions :

  • Gérer l’installation à la main, du système, des mises à jour, puis des applications, via la ligne de commande installer.
  • Automatiser le processus avec InstaDMG.

Nous allons ici nous intéresser à InstaDMG qui va permettre de faire une image disque très simplement en automatisant ce qu’il faudrait faire à la main avec installer.

La première chose à faire est de se procurer InstaDMG, dans la page de téléchargement vous trouverez différentes documentations ainsi qu’un fichier InstaDMG.zip qui contient tout le nécessaire. Une fois télécharger il ne vous reste qu’à le décompresser. Nous allons en profiter pour analyser son contenu.

Dans cette arborescence nous allons retrouver plusieurs choses, la documentation de l’outil, les dossiers contenant les sources de l’installation (le DMG de l’image de base, les mises à jour systèmes, les packages à installer…) ainsi que certains dossiers pour « InstaUp2Date » qui est une amélioration en cours de production d’InstaDMG, il permettra à terme de gérer plus simplement ses workflows de création d’image cependant je n’en parlerais pas ici.

La première chose à faire est de faire une image disque du DVD générique d’installation de Mac OS X, pas un de ceux fournis avec les machines. Une fois que vous avez cette image, vous la placerez dans le dossier « BaseOS ».

Nous allons ensuite nous occuper des mises à jour nécessaires. Mon DVD d’installation étant un 10.6.0 je vais devoir faire la mise à jour combo 10.6.4 puis je vais mettre à jour le client RemoteDesktop.

Même si ce n’est pas le cas ici, il peut être nécessaire de spécifier un ordre précis d’installation des mises à jour. InstaDMG nous facilite ici la tâche. Dans le dossier BaseUpdates, vous allez créer autant de sous-dossiers que de paquet puis vous allez les nommer selon l’ordre d’installation et y placer vos paquets. Concernant les paquets, vous avez plusieurs possibilités, soit vous placez le .[m]pkg dans le dossier, soit directement le .dmg.

Vous devez donc vous retrouver avec quelque chose de ce genre :

Dans le dossier CustomPKG nous aurons la même chose à faire, à savoir placer les paquets d’installations de nos applications et mises à jour d’applications dans des dossiers ordonnées. J’ai par exemple choisi ici de placer iWork, iLife et la version de démonstration d’Aperture.

Pour ce faire il vous suffit de copier les fichiers d’installation depuis le DVD d’origine en faisant attention à bien prendre les paquets et non des liens symboliques (un petit ls -lA à la racine de votre DVD vous indiquera quoi faire).

Maintenant nous avons un InstaDMg prêt à travailler pour nous faire un système type encore jamais démarré. Cependant nous ne nous sommes pas encore occupés de personnaliser l’installation. Lorsque vous installé Mac OS X ou iLife, vous avez un bouton de personnalisation dans le processus d’installation vous permettant de choisir certaines options.

Ici aussi c’est possible avec quelques manipulations en ligne de commande.

Nous allons devoir créer un fichier InstallerChoices.xml pour chaque paquet. Ce fichier est un fichier de réponse qui sera passé à la commande installer, il a un formatage et un fonctionnement assez particulier. Vous allez devoir y inscrire dans un tableau les identifiants des cases à cliquer normalement dans le panneau de personnalisation de l’installation.

Prenons l’exemple d’iLife, dans les options d’installations nous avons la possibilité de rajouter des effets sonores supplémentaire pour Garage Band, pour le cocher il faut faire un clic sur la ligne correspondante, l’équivalent fichier de réponse sera donc une fois l’identifiant de la case.

Il nous reste donc à trouver l’identifiant de la case, pour cela nous allons utiliser le terminal avec la commande installer qui renvois le contenu d’un fichier plist, pour faciliter sa lecture, nous allons donc écrire le résultat de la commande sur le bureau :

yoanngini@macpro InstallerFiles $ installer -showChoicesXML -pkg "CustomPKG/001/iLife '09.mpkg" > ~/Desktop/choices.plist

Il ne reste plus qu’à lire le ce fichier avec Property List Editor :

En parcourant le contenu, vous trouverez l’identifiant qui vous intéresse. Il ne vous reste plus qu’à écrire le fichier de réponse qui sera présenté de cette manière :

GarageBandExtraContent

Dans le cas où vous avez une case avec un – pour représenter une catégorie où tout n’est pas inclus, vous devez faire deux clics pour décocher toute la catégorie (pour les pilotes d’impression de Mac OS X par exemple), dans ce cas vous devrez mettre deux fois de suite l’identifiant de la case, un pour chaque clic.

Nous en avons maintenant fini avec notre préparation d’InstaDMG, voici le contenu final du dossier InsallerFiles :

La dernière étape consiste à lancer le programme et attendre que l’installation se termine :

yoanngini@macpro InstaDMG $ sudo ./instadmg.bash -i fr -n "Macintosh HD" -m "Mac_OS_X_10.6.4_iLife_iWork_Aperture" -I ./InstallerFiles/BaseOS/snowleopard_10a432_userdvd.dmg

Au niveau des options :

  • -i fr pour sélectionner la langue d’installation du système
  • -n « Macintosh HD » pour nommer la partition d’installation dans l’image disque
  • -m « Mac_OS_X_10.6.4_iLife_iWork_Aperture » sera le nom de l’image disque finale, il est toujours intéressant de faire un rapide résumé du contenu de l’image via le nom du fichier
  • -I dans le cas où votre image disque du DVD d’installation ne porte pas un nom standard, vous devez préciser où est l’image

Il ne vous reste qu’à prendre un petit café en attendant la fin du processus.

10 réflexions au sujet de « InstaDMG ou comment préparer une image de déploiement générique »

  1. Ping : Twitted by ygini

  2. Ping : Tweets that mention Yoann Gini » InstaDMG ou comment préparer une image de déploiement générique -- Topsy.com

  3. Bonjour,

    J’ai un problème que je ne parviens pas à résoudre lorsque je lance la création de l’image :

    14:14:00 ###### InstaDMG build initiated ######
    InstaDMG version 1.6b2 (svn revision: 261)
    Host OS: Mac OS X 10.6.4
    Host Hardware: MacBookPro5,5
    Output file name: Mac_OS_X_10.6.4_TrueCrypt
    Output disk name: Macintosh HD
    14:14:00 ###### Finding main MacOS X installer disk ######
    Found the image at: ./InstallerFiles/BaseOS/Mac_OS_X_10.6_User_Install.dmg
    14:14:00 ###### Looking for a Cached Image ######
    No cached image found
    14:14:00 ###### Mounting Mac OS X installer image ######
    2010-10-18 14:14:01.873 defaults[3139:903]
    The domain/default pair of (/private/tmp/InstaDMG_temp_folder.yepXuI/mount_point.TtLOfL/System/Library/CoreServices/SystemVersion, ProductVersion) does not exist
    2010-10-18 14:14:01.883 defaults[3141:903]
    The domain/default pair of (/private/tmp/InstaDMG_temp_folder.yepXuI/mount_point.TtLOfL/System/Library/CoreServices/SystemVersion, ProductVersion) does not exist
    ./instadmg.bash: line 687: [: 6: unary operator expected
    Mac OS X installer image mounted
    14:14:01 ###### Creating intermediary disk image ######
    Target image: /private/tmp/InstaDMG_temp_folder.yepXuI/9CAA608C-ECE9-442B-B9E8-5A2D2D009F98.sparseimage mounted sucessfuly at: /tmp/mount_point.pnOph4
    14:14:22 ###### Beginning Installation from /private/tmp/InstaDMG_temp_folder.yepXuI/mount_point.TtLOfL ######
    ###### The OS Install File is missing the OS Installer Package! ######
    14:14:22 ###### Cleaning up ######
    ./instadmg.bash: line 464: MODIFIED_INSTALLD_PLIST_FOLDER: unbound variable

    Si quelqu’un à une idée… merci d’avance !

    Antoine

  4. Bonjour,

    De prime abord, je dirais que le contenu de Mac_OS_X_10.6_User_Install.dmg n’est pas conforme à ce qu’il s’attend à trouver. Êtes-vous sûr que cette image est fonctionnelle pour l’installation d’un système neuf ? Faites un essai avec VMware Fusion par exemple (il prend en compte les dmg directement).

    Yoann

  5. Je ne sais pas depuis quelle version, mais sur la 3 c’est le cas, il me semble que ça l’était aussi sur la 2.

    Pour ce qui est du problème, il est expliqué par cette ligne :
    ###### The OS Install File is missing the OS Installer Package! ######

    En gros, il ne trouve pas le fichier System/Installation/Packages/OSInstall.mpkg qui doit se trouver dans un dmg.

  6. Je viens de trouver mon problème : le manque de place sur mon DD !

    Rien a voir avec ce problème mais pendant que j’y suis j’ai un autre problème… Suite à un changement de masque réseau j’ai exécuté la commande changeip old_ip new_ip sur un X-Serv 10.6 maitre Open Directory. Depuis, dans mes réglages Open Directory j’ai Arbre réplique « Old et New ip ». J’ai vus que sur la commande changeip 10.5 il était possible de donner le chemin du maitre Open Di. mais pas sur la commande du 10.6. Est ce qu’il y a une solution pour rendre tout ça clean sans tout écraser ?

  7. Ah ok, donc changeip puis changeDirData.pl -i -s -u -o -n -r all et le tour est joué ?
    Merci de prendre le temps de répondre à toute ces question ! Je suis admin mac depuis peu, et les ressources sont pas toujours faciles a trouver !

  8. Ping : Twitted by bertrand_k

Laisser un commentaire