wayofdev.homebrew




Statut de construction Rôle Ansible Dernière version Score de qualité Ansible Rôle Ansible Licence du logiciel Commits depuis la dernière version

Rôle Ansible : Homebrew

Installe Homebrew sur macOS ou Linux et configure les taps, les paquets et les casks. Le paquet utilise des boucles de réessai pour gérer les problèmes de connectivité.

Si vous aimez/utilisez ce rôle, pensez à lui donner une étoile. Merci !


🗂 Table des matières


📑 Exigences

  • Version à jour d'ansible. Pendant la maintenance/développement, nous restons sur les versions d'ansible et utiliserons les nouvelles fonctionnalités si elles sont disponibles (et mettrons à jour meta/main.yml pour la version minimale).
  • Système d'exploitation compatible. Voir le tableau de compatibilité.
  • La bibliothèque jmespath doit être installée sur l'hôte exécutant le playbook (nécessaire pour le filtre json_query).
  • Le rôle a des dépendances sur des rôles tiers sur différents systèmes d'exploitation. Voir requirements.yml et section dépendances.

🔧 Variables du rôle

Les variables disponibles sont listées ci-dessous, avec des exemples de valeurs (voir defaults/main.yml). Des variables supplémentaires sont stockées dans vars/main.yml.


→ Structure

Variable du dépôt GitHub pour le cœur de Homebrew. Par défaut, le rôle vérifie la dernière version depuis le dépôt officiel de Homebrew. Si vous changez homebrew_repository pour votre propre fork et voulez utiliser la branche master et désactiver la détection automatique de la dernière version, réglez la variable homebrew_repository_use_master sur true.

# De quel dépôt devrions-nous installer homebrew ?
homebrew_repository: https://github.com/Homebrew/brew

# Mettez sur true si vous souhaitez utiliser la branche master au lieu de la détection automatique de la version,
# ou si vous utilisez un fork personnalisé spécifié dans homebrew_repository
homebrew_repository_use_master: false

Lorsque cette option est définie sur true, Homebrew lui-même sera mis à jour et tous les paquets Homebrew seront mis à niveau :

# Exécuter la tâche pour mettre à niveau tous les paquets
homebrew_upgrade_all: true

Cette variable contrôle le nombre de réessais et le délai à attendre entre les réessais, si la tâche homebrew install échoue :

# Combien de fois réessayer, si l'installation du paquet / tap / cask échoue ?
# Cela peut se produire en cas de problèmes de réseau.
homebrew_retries: 32

# Délai entre chaque tentative de réessai.
homebrew_delay: 3

Réglez sur true pour supprimer le cache Homebrew après l'installation ou la mise à jour d'un nouveau logiciel.

homebrew_clear_cache: false

Répertoire où les applications installées via cask doivent être installées.

homebrew_cask_appdir: /Applications

Si réglé sur true, passe --greedy à brew cask outdated lors de la vérification d'une version plus récente d'un cask installé.

homebrew_cask_greedy_mode: false

Désactivez les analyses de Homebrew, qui sont collectées par défaut.

homebrew_collect_analytics: false

→ Ajout de dépôts

Ajout (tapping) de dépôts :

homebrew_taps:
  - homebrew/core
  - homebrew/cask-versions
  - homebrew/cask-fonts

Ajout (tapping) de dépôts, de manière plus détaillée, en définissant des URL et des états :

homebrew_taps:
  # juste tap
  - name: homebrew/core

  # tap depuis un dépôt personnalisé
  - name: denji/nginx
    url: https://github.com/denji/homebrew-nginx

  # tap avec état personnalisé défini 
  - name: homebrew/cask-fonts
    state: present

Suppression des taps :

homebrew_taps:
  # définir l'état : absent pour supprimer des taps
  - name: homebrew/cask-fonts
    state: absent

  - name: denji/nginx
    state: absent

→ Paquets : installation, mise à jour et suppression

Ajout de paquets de manière simple :

homebrew_packages:
  - wget
  - curl
  - nano

Ajout de paquets de manière avancée, en définissant état, chemin et d'autres options :

homebrew_packages:
  # installer à un chemin personnalisé
  - name: wget
    state: present
    path: /opt/custom/path/bin

Mise à jour de paquets :

homebrew_packages:
  # mettre à jour Homebrew d'abord et installer la formule wget avec 'brew' dans le chemin par défaut
  - name: wget
    state: present
    update_homebrew: true

  # mettre à jour Homebrew d'abord et passer à la dernière formule curl disponible avec 'brew' dans le chemin par défaut
  - name: curl
    state: latest
    update_homebrew: true

Suppression de paquets :

homebrew_packages:
  - name: wget
    state: absent
  - name: curl
    state: absent

→ Casks : installation, mise à jour et suppression

:warning: Avis : Les Casks ne sont pris en charge que sur macOS. Consultez ce post.

Ajout de casks de manière simple :

homebrew_casks:
  # Installer la liste des casks
  - firefox
  - google-chrome
  - alfred
  - 1password

Ajout de casks avec des options avancées :

homebrew_casks:
  # Installation du cask firefox
  - name: firefox
    state: present

Suppression de casks :

homebrew_casks:
  # définir l'état : absent pour supprimer
  - name: firefox
    state: absent
  - name: google-chrome
    state: absent

📗 Exemple de Playbook

→ pour les machines macOS

---
- hosts: all
  connection: local

  # est nécessaire lors de l'exécution via SSH
  environment:
    - PATH: "{{ homebrew_search_paths | join(':') }}:{{ ansible_env.PATH }}"

  vars:
    homebrew_taps:
      - homebrew/core
      - homebrew/cask
      - homebrew/cask-fonts
      - yt-dlp/taps
    homebrew_packages:
      - ssh-copy-id  # depuis homebrew/core
      - yt-dlp  # depuis yt-dlp/taps
    homebrew_casks:
      - firefox
      - google-chrome
      - font-fira-code-nerd-font  # depuis homebrew/cask-fonts
    homebrew_retries: 12
    homebrew_delay: 3
    homebrew_clear_cache: false
    homebrew_collect_analytics: false

  roles:
    - elliotweiser.osx-command-line-tools  # uniquement sur les machines macOS
    - wayofdev.homebrew

→ pour les machines Linux

---
- hosts: all
  connection: local

  # est nécessaire lors de l'exécution via SSH
  environment:
    - PATH: "{{ homebrew_search_paths | join(':') }}:{{ ansible_env.PATH }}"

  vars:
    homebrew_user: linuxbrew  # FYI : peut être omis, car détecté automatiquement, mais l'utilisateur linuxbrew est recommandé pour installer Homebrew avec Linux
    homebrew_group: linuxbrew  # même que homebrew_user

    homebrew_taps:
      - homebrew/core
      - yt-dlp/taps
    homebrew_packages:
      - ssh-copy-id  # depuis homebrew/core
      - yt-dlp  # depuis yt-dlp/taps
    homebrew_retries: 12
    homebrew_delay: 3
    homebrew_clear_cache: false
    homebrew_collect_analytics: false

  roles:
    - geerlingguy.git  # uniquement sur les machines linux, et peut être omis si la machine a git
    - wayofdev.homebrew

⚙️ Développement

Pour installer les dépendances et commencer le développement, vous pouvez vérifier le contenu de notre Makefile.

Installer poetry en utilisant poetry-bin et toutes les dépendances python dev :

$ make install

Installer uniquement les dépendances python, en supposant que vous avez déjà poetry :

$ make install-deps

Installer tous les hooks git :

$ make hooks

Vérifier tous les fichiers du rôle :

$ make lint

🧪 Tests

Vous pouvez consulter le Makefile pour obtenir la liste complète des commandes pour les tests à distance et locaux. Pour les tests locaux, vous pouvez utiliser ces commandes pour tester l'ensemble du rôle ou des tâches séparées :

→ sur localhost

:warning: Avis : Par défaut, tous les tests sont exécutés sur votre machine locale !

# exécuter toutes les balises avec le scénario depuis ./tests/test.yml
$ make test

# ou test-tag sans aucun paramètre
$ make test-tag

# exécuter le contrôle d'idempotence
$ make test-idempotent

# exécuter des tâches qui valident le fichier de configuration et effectuent l'installation
$ export TASK_TAGS="brew-install,brew-update"
$ make test-tag

# exécuter par commande prédéfinie qui n'exécute qu'une seule balise
$ make test-install
$ make test-analytics
$ make test-update
$ make test-taps
$ make test-packages
$ make test-casks

# exécuter des tests molecule sur localhost
$ poetry run molecule test --scenario-name default-macos-on-localhost -- -vvv

# ou avec la commande make
$ make m-local

# exécute molecule avec le pilote docker
$ poetry run molecule test --scenario-name default -- -vvv

# ou avec le fichier make
$ make m-linux

→ via SSH

# exécuter des scénarios molecule contre des machines distantes via SSH
# cela nécessitera la configuration et la configuration de la VM
$ poetry run molecule test --scenario-name default-macos-over-ssh -- -vvv

$ make m-remote

# des balises peuvent également être passées
$ export TASK_TAGS="brew-install,brew-update"
$ make m-remote

📦 Dépendances

L'installation est gérée par Makefile et les exigences sont définies dans requirements.yml.

→ pour tous

→ uniquement macOS

→ uniquement Linux


🧩 Compatibilité

Ce rôle a été testé sur ces systèmes :

système / conteneur tag
macos monterey
macos big-sur
ubuntu jammy
ubuntu focal
debian bullseye
debian buster
fedora 36
fedora 35
centos 8
centos 7

🤝 Licence

Licence


🙆🏼‍♂️ Informations sur l'auteur

Ce rôle a été créé en 2022 par lotyp / wayofdev.


🧱 Crédits et ressources

Inspiré par :


🫡 Contributeurs


🤑 Partenaires

Le développement et les tests du rôle ont été réalisés sur Parallels Desktop Pro Edition et la licence a été fournie par Parallels

À propos du projet

Ansible role that uses loops and retries to install Homebrew apps and casks.

Installer
ansible-galaxy install wayofdev.homebrew
Licence
gpl-3.0
Téléchargements
521
Propriétaire
Making things to build better software