Je configure macOS avec Ansible !

Introduction
C'est bientôt la rentrée et parfois le temps de changer de matériel ou de faire des installations propres d'un système d'exploitation, dans mon cas, ce sera macOS Catalina et plus particulièrement sur un Macbook (certaines options de configuration sont propres aux Mac "portables").
Je vais vous partager un playbook Ansible qui m'a permis de configurer ma machine rapidement en installant les logiciels et outils que j'ai l'habitude d'utiliser au quotidien.
Vous pouvez donc vous en inspirer pour venir le mettre à jour avec vos propres préférences.
Prise en main
Avant de commencer
Le lien du dépôt de code via Github est ici :
https://github.com/axinorm/macbook-setup
Ansible dispose d'un rôle qui va triturer pour nous les différents registres clé/valeur de macOS avec le module osx_defaults
.
Si on regarde les rôles de plus près, on remarque que différentes étapes sont définies :
- preflight : On ferme la fenêtre des paramètres systèmes pour ne pas créer d'incohérence avec ce qui sera modifié plus tard via les modifications de configuration
- hostname : Modification du nom de la machine
- homebrew : Installation des logiciels / outils via le gestionnaire de paquets Homebrew
- git : Configuration de Git
- zsh : Configuration de zsh et installation de oh-my-zsh pour la personnalisation complète du shell
- tmux : Configuration de Tmux et installation des plugins
- dock : Configuration du dock de macOS et de la disposition des icônes
- osx-defaults : Modification des
.plist
de macOS sur différents domaines : clock, dock, finder, iterm2, safari, settings et textedit - ssh : Configuration du ssh et dépôt de la clé privée et publique
- vim : Configuration de vim
- iterm : Dépôt du fichier de configuration iTerm2
- vscode : Installation des extensions pour VSCode
PS : J'avais réalisé un article qui parle de Tmux et de sa configuration que l'on peut trouver ici.
Lors de l'exécution du role ssh, une paire de clés peut être déposée dans le dossier .ssh
d'utilisateur défini. Pour cela, il faut compléter le dossier files/ssh
du playbook, et, pour des raisons de sécurité, les chiffrer et définir un mot de passe avec cette commande :
ansible-vault encrypt id_rsa
ansible-vault encrypt id_rsa.pub
Si vous utilisez une version de macOS inférieure à la version 10.15.x (Catalina), certaines clés n'acceptent pas les mêmes valeurs ou sont manquantes. De plus, pour la configuration du Dock, il faut enlever /System
dans le chemin des applications systèmes qui ont bougé dans cette dernière version du système d'exploitation et sont dans une partition à part.
Installation
Avant de commencer à jouer notre playbook, il est nécessaire de faire quelques étapes manuellement, en effet, macOS a besoin de xcode qui n'est pas présent par défaut.
On aura besoin de git et de python pour venir cloner notre projet et pouvoir se créer un virtualenv
afin d'éviter d'installer plusieurs paquets directement sur le système.
Première étape, l'installation de Homebrew :
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Puis, on continue avec git et python :
brew install git python
On peut venir cloner le dépôt de code :
git clone [email protected]:axinorm/macbook-setup.git
Et mettre en place notre environnement virtuel python :
sudo pip3 install virtualenv
virtualenv -p python3 .venv
source .venv/bin/activate
Installation d'Ansible
pip install ansible
Lancement du playbook
ansible-playbook macbook-setup/macbook_setup.yml --ask-become-pass --ask-vault-pass
- --ask-become-pass : macOS a besoin de votre mot de passe administrateur pour la plupart des actions exécutées via le playbook ;
- --ask-vault-pass : Cette option est obligatoire si vous avez chiffré vos clés SSH avec
ansible-vault
ou tout autre fichier de configuration appartenant au playbook exécuté.
Conclusion
Vous avez maintenant un script automatisé qui permet d'initialiser macOS Catalina avec une grande partie de vos préférences de configuration. Je l'utilise personnellement à chaque fois que je change de Mac ou que je souhaite réinitialiser mon système lors de version majeure notamment.
Comme dit plus haut, n'hésitez pas à vous servir de cet extrait de code comme une "base" pour l'installation de votre système d'exploitation, les préférences et logiciels sont propres à chacun et peuvent varier en fonction des contextes personnels ou professionnels.