Jamf Blog
Mai 7, 2021 Par Josh Roskos

Simplifier votre processus de mise à niveau macOS

Découvrez comment mettre à niveau automatiquement vos appareils vers macOS Big Sur en minimisant les interactions utilisateur grâce aux redémarrages authentifiés FileVault.

Vous avez passé les derniers mois à tester toutes vos applications pour vérifier qu'elles fonctionnent avec macOS Big Sur ? Il est temps de déployer la dernière version de macOS sur les appareils de vos utilisateurs finaux. Parfait !

Depuis macOS Sierra, Apple a commencé à appliquer l'utilisation du binaire startosinstall, inclus dans le programme d'installation, lors du déclenchement d'une mise à niveau automatique. Dans cet article, nous allons examiner les outils nécessaires pour concevoir notre workflow, associer certains scripts existants et peut-être vous donner des idées pour élaborer le vôtre ! Pour commencer, regardons la documentation du binaire startosinstall.

 startosinstall --usage Arguments --license : affiche uniquement le contrat de licence de l'utilisateur. --agreetolicense : accepte la licence que vous avez affichée avec --license. --rebootdelay : délai avant redémarrage à la fin de la préparation. Ce délai est exprimé en secondes, avec un maximum de 300 (5 minutes). --pidtosignal : pour spécifier le PID auquel envoyer SIGUSR1 à la fin de la phase de préparation. Pour contourner le « rebootdelay », renvoyez SIGUSR1 à startosinstall. --installpackage : chemin du paquet (compilé avec productbuild(1)) à installer une fois l'installation de l'OS terminée ; cette option peut être spécifiée plusieurs fois. --eraseinstall : (nécessite APFS) efface tous les volumes et fait l'installation sur un nouveau volume. Vous pouvez spécifier le nom du nouveau volume avec --newvolumename. --newvolumename : nom du volume à créer avec --eraseinstall. --preservecontainer : préserve les autres volumes de votre conteneur APFS lorsque vous utilisez --eraseinstall. --forcequitapps : au redémarrage, les applications sont quittées de force. C'est la valeur par défaut si aucun utilisateur n'est connecté. --usage : affiche ce message. --user : utilisateur admin qui autorise l'installation. --passprompt : collecte un mot de passe d'autorisation avec une invite interactive. --stdinpass : collecte un mot de passe depuis stdin sans interaction. 

Cela fait beaucoup d'informations pour nous lancer. Commençons par concevoir notre commande :

 ‘/Applications/Install macOS Big Sur.app/Contents/Resources/startosinstall’ --agreetolicense --nointeraction --forcequitapps

OK, génial ! Nous avons notre commande. Il faut maintenant la tester. Si vous ne l'avez pas encore remarqué, cette commande nécessite que l'ordinateur client ait « Install macOS Big Sur.app » dans son dossier /Applications.

Obtention du programme d'installation macOS Big Sur

Il existe plusieurs façons d'obtenir notre programme d'installation macOS :

softwareupdate binaire

Dans macOS Catalina, Apple avait ajouté la possibilité de télécharger le programme d'installation macOS via le binaire softwareupdate. Pour télécharger la dernière version macOS pour un client, nous pouvons exécuter la commande ci-dessous. Pour déployer cette solution, la commande peut être intégrée dans un script ou être exécutée dans une règle, dans le cadre d'une charge utile de fichiers et de processus.

 ‘/usr/sbin/softwareupdate’ --fetch-full-installer

Pour en savoir plus, consultez la page d'aide de softwareupdate en exécutant la commande « /usr/sbin/softwareupdate help ». Veuillez noter l'existence de la commande --full-installer-version, qui permet de spécifier la version à télécharger.

 /usr/sbin/softwareupdate help utilisation : softwareupdate [ ...] ** Gérer les mises à jour : -l | --list Lister toutes les étiquettes de mise à jour appropriées (options : --no-scan, --product-types) -d | --download Télécharger seulement -i | --install Installer ... mises à jour spécifiques -a | --all Toutes les mises à jour appropriées -R | --restart Redémarrer automatiquement (ou arrêter) si nécessaire pour terminer l'installation. -r | --recommended Seulement les mises à jour recommandées --list-full-installers Liste des programmes d'installation macOS disponibles --fetch-full-installer Installer le dernier programme d'installation macOS recommandé --full-installer-version Version de macOS à mettre à jour. Par exemple : --full-installer-version 10.15 --install-rosetta Installer Rosetta 2 --background Déclencher une analyse en arrière-plan et une opération de mise à jour ** Autres outils : --dump-state Enregistrer l'état interne du démon SU dans /var/log/install.log --evaluate-products Évaluer une liste de clés de produit spécifiées par l'option --products --history Afficher l'historique de l'installation. Par défaut, n'affiche que les mises à jour installées par softwareupdate. --all Inclure tous les processus dans l'historique (y compris les installations d'applications) ** Options : --no-scan Ne pas scanner lors de l'énumération ou de l'installation des mises à jour (utiliser les mises à jour disponibles précédemment scannées) --product-types Limiter l'analyse à un type de produit particulier en ignorant tous les autres Par exemple : --product-types macOS || --product-types macOS,Safari --products Liste de clés de produit séparées par des virgules (sans espaces) à utiliser. --force Force une opération à se terminer. Utiliser avec --background pour déclencher un scan en arrière-plan sans tenir compte de la préférence « Vérifier automatiquement » --agree-to-license Accepter le contrat de licence du logiciel sans interaction de l'utilisateur. --verbose Activer la sortie détaillée --help Afficher cette aide

Apps et livres

Si vous utilisez Apple Business ou School Manager avec Jamf Pro, vous pouvez déployer le programme d'installation macOS Big Sur à l'aide de la fonctionnalité du Mac App Store. Il suffit d'obtenir des licences à partir du menu Apps et Livres dans Apple Business ou School Manager puis d'utiliser la distribution gérée pour déployer les applications auprès de vos clients.

Jamf Pro screenshot showing Mac OS Store Apps screen and macOS Big Sur in the list of upgrades

Empaquetage

Le programme d'installation macOS Big Sur est relativement volumineux cette fois, de l'ordre de 12 Go. Composer permet uniquement la création de fichiers .pkg contenant des fichiers de moins de 8 Go. Nous devons donc créer une image disque (.dmg).

Autrement, il est possible d'utiliser https://github.com/scriptingosx/fetch-installer-pkg, qui récupère le programme d'installation et compile le paquet.

Vérifier l'éligibilité

Il est important de veiller à ce que le programme d'installation soit uniquement déployé sur les ordinateurs compatibles. Pour cela, vous pouvez utiliser https://github.com/laurentpertois/BigSur-Compatibility-Checker. Ce script vérifie que l'espace et la mémoire sont suffisants et que l'ordinateur possède la configuration minimale requise pour macOS Big Sur. Il permet de créer un attribut d'extension servant de base à la constitution d'un groupe intelligent qui sera ciblé par notre workflow.

 Critère : Compatible Big Sur (le nom de notre attribut d'extension) Opérateur : est Valeur : vrai

Pour préparer la suite, créons également un groupe intelligent pour identifier les ordinateurs sur lesquels Install macOS Big Sur.app est installé. Ce groupe sera utilisé comme cible de notre règle Self Service pour l'installation de macOS Big Sur.

 Critère : Titre de l'application Opérateur : est Valeur : Install macOS Big Sur.app

Faisons un test

À ce stade, il suffit de créer une règle qui exécutera la commande « startosinstall » élaborée plus haut, puis de la mettre à disposition dans Self Service.

 ‘/Applications/Install macOS Big Sur.app/Contents/Resources/startosinstall’ --agreetolicense --nointeraction --forcequitapps

Toutefois, cette méthode n'offre pas une très bonne expérience utilisateur. Pendant un long moment, l'utilisateur devra attendre le redémarrage de l'ordinateur sans recevoir aucune information sur les opérations en cours.

Messages aux utilisateurs finaux

Résolvons ce problème en offrant davantage de convivialité grâce à Jamf Helper. Si vous ne connaissez pas Jamf Helper, il s'agit d'un outil pratique pour afficher une interface graphique de base sur le poste des utilisateurs finaux, à l'aide d'un simple script bash. Examinons les différentes options disponibles avec Jamf Helper.

 '/Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper' -help

Page d'aide de JAMF Helper

 Utilisation : jamfHelper -windowType [-windowPostion] [-title] [-heading] [-description] [-icon] [-button1] [-button2] [-defaultButton] [-cancelButton] [-showDelayOptions] [-alignDescription] [-alignHeading] [-alignCountdown] [-timeout] [-countdown] [-iconSize] [-lockHUD] [-fullScreenIcon] -windowType [hud | utility | fs] hud : crée une fenêtre de style « Affichage tête haute » Apple utility : crée une fenêtre de style « Utilitaire » Apple fs : crée une fenêtre plein écran qui empêche toute intervention de l'utilisateur ATTENTION : l'accès à distance doit être utilisé pour déverrouiller les machines dans ce mode -windowPosition [ul | ll | ur | lr] Positionne la fenêtre en haut à droite, en haut à gauche, en bas à droite ou en bas à gauche de l'écran de l'utilisateur Si aucune option n'est fournie, la fenêtre se positionne par défaut au centre de l'écran -title "string" Définit la chaîne spécifié comme titre de la fenêtre e -heading "string" Définit la chaîne spécifié comme en-tête de la fenêtre -description "string" Définit la chaîne spécifiée comme contenu principal de la fenêtre -icon path Définit l'image située dans le chemin d'accès spécifié comme image de la fenêtre -button1 "string" Crée un bouton avec le libellé spécifié -button2 "string" Crée un second bouton avec le libellé spécifié -defaultButton [1 | 2] Définit le bouton spécifié comme bouton par défaut de la fenêtre. Le bouton par défaut répondra à "return" -cancelButton [1 | 2] Définit le bouton spécifié commee bouton d'annulation de la fenêtre. Le bouton d'annulation répondra à "escape" -showDelayOptions "int, int, int,..." Active le « mode options de retard ». La fenêtre affichera une liste déroulante avec les valeurs contenues dans la chaîne -alignDescription [right | left | center | justified | natural] Aligne la description selon l'alignement spécifié -alignHeading [right | left | center | justified | natural] Aligne l'en-tête selon l'alignement spécifié -alignCountdown [right | left | center | justified | natural] Aligne le compte à rebours selon l'alignement spécifié -timeout int Provoque la fermeture de la fenêtre après le nombre de secondes spécifié Remarque : le délai d'attente entraîne la sélection du bouton par défaut, du bouton 1 ou du bouton 2 (dans cet ordre) -countdown Affiche une chaîne de caractères informant l'utilisateur du délai d'attente de la fenêtre -iconSize pixels Met le cadre de l'image à la dimension spécifiée en pixels -lockHUD Supprime la possibilité de quitter le HUD en sélectionnant le bouton de fermeture -fullScreenIcon Agrandit l'« icône » aux dimensions de la fenêtre Remarque : disponible uniquement en mode plein écran Valeurs de renvoi : JAMF Helper affichera les valeurs de renvoi suivantes sur stdout... 0 - Le bouton 1 a été cliqué 1 - Jamf Helper n'a pas pu être lancé 2 - Le bouton 2 a été cliqué XX1 - Le bouton 1 a été cliqué et la valeur de XX secondes a été sélectionnée dans le menu déroulant XX2 - Le bouton 2 a été cliqué et la valeur de XX secondes a été sélectionnée dans le menu déroulant 239 - Le bouton de sortie a été cliqué 243 - La fenêtre a expiré sans aucun bouton à l'écran 250 - Mauvais "-windowType" 255 - Pas de "-windowType".

Récapitulons

Cela fait beaucoup d'informations, mais comme tout est déjà dans le système, nous pouvons les utiliser pour communiquer avec l'utilisateur final. Une fois la fenêtre Jamf Helper ajoutée, on peut aussi utiliser le commutateur --pidtosignal pour fermer proprement Jamf Helper en évitant tout conflit pendant le redémarrage.

Affichage sur la machine de l'utilisateur final :

Screenshot of Jamf Pro user pop-up:

Jamf Helper lance désormais une fenêtre en plein écran pour avertir l'utilisateur que nous préparons son système en vue de la mise à niveau vers macOS Big Sur. Une fois le processus du binaire startosinstall terminé, Jamf Helper se ferme en arrière-plan et l'ordinateur redémarre proprement. Exactement ce que nous voulions ! Comme vous pouvez le voir, puisque nous respectons les directives d'Apple pour la mise à niveau, le redémarrage avec authentification FileVault fonctionne parfaitement. Il est chargé directement dans le volume du programme d'installation macOS, et il initie le processus de mise à niveau sans demander quoi que ce soit à l'utilisateur.

Enfin, et c'est important, n'oubliez pas de nettoyer vos descriptions Self Service en veillant à inclure le plus d'informations possible pour l'utilisateur final. Pensez à l'associer au groupe intelligent conçu plus tôt pour identifier les ordinateurs sur lesquels Install macOS Big Sur.app est installé.

Jamf Pro screenshot of popup: Upgrade to MacOS Big Sur with close and upgrade buttons.

Vous disposez maintenant d'un script de base pour faciliter la mise à niveau de macOS. Mais si vous avez besoin de plus de fonctionnalités, par exemple pour vérifier que les Mac sont bien branchés sur le secteur et qu'ils disposent d'un espace suffisant, rendez-vous sur la page GitHub de Josh, où vous trouverez un workflow parfaitement fonctionnel et éprouvé.

Josh Roskos
S'abonner au blog

Recevez directement dans votre boîte mail les tendances du marché informatique, les mises à jour Apple et les actualités Jamf.

Pour en savoir plus sur la manière dont nous collectons, utilisons, partageons, transférons et protégeant vos informations personnelles, veuillez consulter notre Politique de confidentialité.