megabyte-labs.homebrew

Homebrew - Un Gestionnaire de Paquets pour macOS/Linux

Conçu par Megabyte Labs



Un rôle Ansible qui installe Homebrew (un système de gestion de paquets) sur macOS et Linux


Table des Matières

Aperçu

Ce dépôt est la maison d'un rôle Ansible qui installe Homebrew (un système de gestion de paquets) sur macOS et Linux. Homebrew est un système de gestion de paquets logiciel libre et open-source qui simplifie l'installation de logiciels sur le système d'exploitation macOS d'Apple ainsi que sur Linux. Le nom suggère l'idée de construire des logiciels sur Mac selon le goût de l'utilisateur.

Fonctionnalités

S'assure que Homebrew est installé :

  • Vérifie que Homebrew n'est pas déjà installé
  • Installe Homebrew sur macOS et Linux
  • S'assure que le fichier .bashrc ajoute correctement Homebrew à la variable PATH

Installe des paquets Homebrew :

  • S'assure que Homebrew et ses paquets sont à jour
  • Installe une liste configurable de paquets Homebrew (via la variable homebrew_packages)
  • S'assure que les casks Homebrew préinstallés sont à jour
  • Installe une liste configurable de casks Homebrew sur macOS (via la variable homebrew_casks)

Démarrage Rapide

Vous souhaitez installer Homebrew sans avoir à vous occuper d'Ansible ? Il suffit d'exécuter la commande suivante selon votre système d'exploitation :

Linux/macOS :

curl -sS https://install.doctor/homebrew | bash

Windows :

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/homebrew?os=win'))

Remarque Importante : Avant d'exécuter les commandes ci-dessus, vous devriez probablement accéder directement à l'URL pour vous assurer que le code est légitime. Nous savons déjà qu'il est sûr, mais avant d'exécuter un script sur votre ordinateur, vous devriez l'examiner.

Vous pouvez également consulter Install Doctor. C'est une application que nous avons créée qui peut installer n'importe quel rôle Ansible en une seule ligne de commande. Elle a aussi d'autres fonctionnalités intéressantes, comme la capacité d'installer des binaires à la volée sans nécessiter de mot de passe. Cependant, si vous souhaitez intégrer ce rôle dans un playbook Ansible (et personnaliser les paramètres), alors veuillez continuer à lire ci-dessous.

Systèmes d'Exploitation Supportés

Le tableau ci-dessous montre les systèmes d'exploitation sur lesquels nous avons testé ce rôle. Il est généré automatiquement en utilisant les tests Ansible Molecule situés dans le dossier molecule/. Il y a une logique CI en place pour gérer automatiquement les tests de Windows, macOS, Ubuntu, Fedora, CentOS, Debian et Archlinux. Si votre système d'exploitation n'est pas répertorié mais est une variante de l'un des systèmes que nous testons (c'est-à-dire un système de type Debian ou RedHat), alors il est possible que le rôle fonctionne toujours.

Famille de Systèmes Version du Système Statut Idempotent Testé le
ArchLinux Dernière
7 janvier 2022
CentOS 7
7 janvier 2022
CentOS 8
7 janvier 2022
CentOS Stream 8
7 janvier 2022
Debian 10 (Buster)
7 janvier 2022
Debian 11 (Bullseye)
7 janvier 2022
Debian 9 (Stretch)
7 janvier 2022
Fedora 33
7 janvier 2022
Fedora 34
7 janvier 2022
Fedora 35
7 janvier 2022
Ubuntu 18.04 (Bionic Beaver)
7 janvier 2022
Ubuntu 20.04 (Focal Fossa)
7 janvier 2022
Ubuntu 21.04 (Hirsute Hippo)
7 janvier 2022
Ubuntu 21.10 (Impish Indri)
7 janvier 2022
Windows 10
7 janvier 2022

Que signifie idempotent ? Idempotent signifie que si vous exécutez ce rôle deux fois de suite, il n'y aura pas de changements sur le système la deuxième fois.

Nous avons passé beaucoup de temps à perfectionner nos configurations CI et nos outils de construction. Si vous êtes intéressé à en savoir plus sur notre processus, vous pourriez trouver nos fichiers communs Ansible et documentation Ansible intéressants. Consultez le guide CONTRIBUTING.md pour plus de détails.

Dépendances

La plupart de nos rôles dépendent des collections Ansible Galaxy. Certains de nos projets dépendent également d'autres rôles et collections publiés sur Ansible Galaxy. Avant d'exécuter ce rôle, vous devrez installer les dépendances de collections et de rôles, ainsi que les exigences Python, en exécutant :

if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml

Alternativement, vous pouvez simplement exécuter bash .config/scripts/start.sh si vous êtes nouveau sur Ansible et que vous ne vous dérangez pas de voir les exigences de développement également installées. C'est le moyen le plus simple de vous assurer que tout fonctionne correctement.

Python

Bien que l'outil nécessaire pour exécuter ce play sur une machine standard soit Ansible (un package Python), nous incluons plusieurs autres dépendances Python qui sont nécessaires pour des cas d'utilisation spécialisés et le développement. Le tableau ci-dessous détaille ces packages :

Package Description Requis
ansible Un système de gestion de la configuration qui peut configurer des ordinateurs à distance
✔️
docker Permet la possibilité de provisionner des conteneurs Docker avec Ansible
✔️
python-vagrant Nécessaire pour provisionner des VM Vagrant
✔️
pywinrm Nécessaire pour provisionner des machines Windows utilisant WinRM
✔️
ansible-lint Outil de linting pour les fichiers Ansible
ansibler Outil personnalisé utilisé pour générer une documentation avancée (par exemple, il génère le tableau de compatibilité et d'autres tableaux)
black Auto-formatter de fichiers Python inclus au cas où le projet utilise des scripts de test Python
blocklint Outil de linting qui empêche certains mots d'entrer dans la base de code
flake8 Linter Python qui signale des erreurs de syntaxe et de style Python
mod-ansible-autodoc Fork personnalisé de ansible-autodoc qui nous permet de générer automatiquement la documentation basée sur les commentaires dans les fichiers YAML du rôle
molecule Cadre de test pour Ansible
molecule-docker Plugin Molecule pour provisionner des conteneurs Docker
molecule-vagrant Plugin Molecule pour provisionner des VM Vagrant
pre-commit-hooks Ensemble d'outils utiles pour le linting
proselint Linter utilisé pour générer des améliorations en anglais (utilisé pour améliorer la documentation)
yamllint Linter pour les fichiers YAML qui assure que la syntaxe et le style corrects sont utilisés

Rôles Galaxy

Bien que la plupart de nos rôles n'aient pas de dépendances, il y a quelques cas où un autre rôle doit être installé avant que la logique puisse continuer. Au début du play, les dépendances de rôle Ansible Galaxy répertoriées dans meta/main.yml seront exécutées. Ces dépendances sont configurées pour ne s'exécuter qu'une seule fois par playbook. Si vous incluez plus d'un de nos rôles dans votre playbook qui ont des dépendances en commun, alors l'installation des dépendances sera ignorée après le premier exécution. Certains de nos rôles utilisent également directement des rôles d'aide dans les fichiers de tâche, ce qui aide à garder notre playbook principal (Gas Station) DRY.

Le fichier requirements.yml contient une liste complète des dépendances Ansible Galaxy requises par ce rôle (c'est-à-dire les dépendances de rôle meta/main.yml, les rôles d'aide, les collections, etc.). Pour votre commodité, une liste des dépendances de rôle avec de brèves descriptions est fournie ci-dessous :

dépendances_rôle

Collections Galaxy

Ce rôle dépend de plusieurs collections Ansible Galaxy. Les collections ainsi qu'un lien vers leur source sont répertoriés ci-dessous.

  • badge community.general Ansible Galaxy
  • badge google.cloud Ansible Galaxy

Exemple de Playbook

Avec les dépendances installées, il vous suffit d'ajouter le rôle à votre playbook principal. Le rôle gère le comportement become, donc vous pouvez simplement l'ajouter à votre playbook sans avoir à vous soucier des commandes qui ne devraient pas être exécutées en tant que root :

- hosts: all
  roles:
    - professormanhattan.homebrew

Si vous intégrez ce rôle dans un playbook préexistant, il pourrait être judicieux de copier les exigences décrites dans pyproject.toml et requirements.yml dans leurs fichiers correspondants à la racine de votre playbook afin de n'avoir à vous soucier que d'une seule série d'exigences lors de futures utilisations. Notez que les dépendances dans pyproject.toml peuvent être déplacées vers le plus traditionnel requirements.txt, si c'est ce que vous utilisez actuellement pour suivre les dépendances Python.

Exemple Réel

Vous pouvez trouver un exemple de playbook qui incorpore ce rôle dans notre playbook principal (alias Gas Station). Ce playbook est un excellent exemple pour quelqu'un qui apprend à utiliser Ansible. Il incorpore également beaucoup d'outils de construction bien pensés que les utilisateurs Ansible plus avancés peuvent apprécier. Et les personnes qui n'ont que faire d'Ansible peuvent également en bénéficier, car il vous permet de transformer votre ordinateur (et votre réseau) en un environnement de développement ultime. En fin de compte, c'est un projet formidable dont les développeurs devraient être au courant !

Contributions

Les contributions, les problèmes et les demandes de fonctionnalités sont les bienvenues ! N'hésitez pas à consulter la page des problèmes. Si vous souhaitez contribuer, veuillez consulter le guide de contribution.

Sponsoring

Cher(e) Personne Inspirante,

Je crée des projets open source par passion. Bien que j'ai un emploi, un logement et autant de fast-food que je peux supporter, ce serait quand même super d'être apprécié par la communauté pour quelque chose sur lequel j'ai passé énormément de temps et d'argent. Merci de envisager de me soutenir ! Qui sait ? Peut-être que je pourrai quitter mon emploi et publier des projets open source à temps plein.

Sincèrement,

Brian Zalewski

Soutiens Open Collective Soutiens GitHub Patreon

Partenaires

Vous trouverez ci-dessous une liste de services que nous utilisons et qui offrent des incitations spéciales pour s'inscrire à leurs services via nos liens.

MailChimp Badge de parrainage DigitalOcean

Licence

Copyright © 2020-2021 Megabyte LLC. Ce projet est sous licence MIT.

Installer
ansible-galaxy install megabyte-labs.homebrew
Licence
other
Téléchargements
7.9k
Propriétaire
Free open-source developer tools for managing massive amounts of code