professormanhattan.homebrew
Homebrew - Un gestionnaire de paquets pour macOS/Linux
Créé par Megabyte Labs
Un rôle Ansible qui installe Homebrew (un système de gestion de paquets) sur les systèmes macOS et Linux
Table des matières
- Aperçu
- Caractéristiques
- Démarrage rapide
- Systèmes d'exploitation pris en charge
- Dépendances
- Exemple de playbook
- Contributions
- Licence
Aperçu
Ce dépôt est l'accueil d'un rôle Ansible qui installe Homebrew (un système de gestion de paquets) sur les systèmes macOS et Linux. Homebrew est un système de gestion de paquets gratuit et open-source qui simplifie l'installation de logiciels sur le système d'exploitation macOS d'Apple ainsi que sur Linux. Son nom évoque l'idée de construire des logiciels selon le goût de l'utilisateur sur Mac.
Caractéristiques
Vérifie que Homebrew est installé :
- Vérifie si Homebrew n'est pas déjà installé
- Installe Homebrew sur macOS et Linux
- S'assure que le fichier
.bashrc
ajoute correctement Homebrew à la variablePATH
Installe des paquets Homebrew :
- S'assure que Homebrew et les paquets Homebrew 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 à utiliser Ansible ? Il vous 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. Bien que nous sachions déjà qu'il est sûr, vous devriez inspecter tout script avant de l'exécuter sur votre ordinateur.
Vous pouvez également consulter Install Doctor. C'est une application que nous avons créée qui peut installer n'importe quel rôle Ansible avec une seule commande. Elle a également d'autres fonctionnalités intéressantes, comme la possibilité d'installer des binaires à la volée sans nécessiter de mot de passe. Toutefois, si vous souhaitez intégrer ce rôle dans un playbook Ansible (et personnaliser les paramètres), veuillez continuer à lire ci-dessous.
Systèmes d'exploitation pris en charge
Le tableau ci-dessous montre les systèmes d'exploitation sur lesquels nous avons testé ce rôle. Il est généré automatiquement à l'aide des 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 d'un des systèmes que nous testons (c'est-à-dire un système basé sur Debian ou un système basé sur RedHat), il est possible que le rôle fonctionne tout de même.
Famille OS | Version OS | 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 dans le système lors de la deuxième exécution.
Nous avons passé beaucoup de temps à perfectionner nos configurations CI et nos outils de construction. Si vous êtes intéressé à en savoir plus sur la façon dont nous avons perfectionné notre processus, vous pouvez consulter nos fichiers communs Ansible et documentation Ansible. 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 la collection et des 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 n'avez pas d'objection à l'installation des exigences de développement. C'est le moyen facile de s'assurer que tout fonctionne correctement.
Python
Bien que le seul outil nécessaire pour exécuter ce play sur une machine standard soit Ansible (un paquet 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 paquets :
Paquet | Description | Requis |
---|---|---|
ansible | Un système de gestion de la configuration qui peut configurer à distance des ordinateurs | ✔️ |
docker | Permet la possibilité de provisionner des conteneurs Docker avec Ansible | ✔️ |
python-vagrant | Nécessaire pour provisionner des machines virtuelles 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 graphiques) | |
black | Formateur automatique 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 les erreurs de syntaxe et de style Python | |
mod-ansible-autodoc | Fork personnalisé de ansible-autodoc qui nous permet de générer automatiquement une documentation à partir des 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 machines virtuelles Vagrant | |
pre-commit-hooks | Suite d'outils utile pour le linting | |
proselint | Linter utilisé pour générer des améliorations en langue anglaise (utilisé pour améliorer la documentation) | |
yamllint | Linter pour fichiers YAML qui garantit que la syntaxe et le style appropriés sont utilisés |
Rôles Galaxy
Bien que la plupart de nos rôles n'aient pas de dépendances, il y a des 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 énumérées dans meta/main.yml
s'exécuteront. Ces dépendances sont configurées pour ne s'exécuter qu'une fois par playbook. Si vous incluez plus d'un de nos rôles dans votre playbook qui ont des dépendances en commun, l'installation de ces dépendances sera ignorée après la première exécution. Certains de nos rôles utilisent également directement des rôles d'assistance à partir des 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 d'Ansible Galaxy requises par ce rôle (c'est-à-dire les dépendances de rôle meta/main.yml
, les rôles d'assistance, les collections, etc.). Pour votre commodité, une liste des dépendances de rôle avec des descriptions rapides est ci-dessous :
dépendances_de_rôle
Collections Galaxy
Ce rôle dépend de plusieurs collections Ansible Galaxy. Les collections ainsi que des liens vers leur source sont énumérés ci-dessous.
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 ajouter le rôle à votre playbook sans 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 existant, il peut être judicieux de copier les exigences décrites dans pyproject.toml
et requirements.yml
vers les fichiers correspondants à la racine de votre playbook, de sorte que vous n'ayez à vous soucier que d'installer un ensemble d'exigences lors de l'utilisation future. Notez que les dépendances dans pyproject.toml
peuvent être déplacées dans le traditionnel requirements.txt
, si c'est ce que vous utilisez actuellement pour suivre les dépendances Python.
Exemple du monde réel
Vous pouvez trouver un exemple de playbook qui incorpore ce rôle dans notre playbook principal (appelé Gas Station). Le playbook est un excellent exemple pour quelqu'un qui apprend à utiliser Ansible. Il incorpore également de nombreux outils de construction bien pensés que les utilisateurs Ansible plus avancés apprécieront. Et les personnes qui ne se soucient pas d'Ansible peuvent également en bénéficier, car il permet de transformer, en quelque sorte, votre ordinateur (et votre réseau) en l'environnement de développement ultime. En résumé, c'est un projet génial que tous les développeurs devraient connaître !
Contributions
Les contributions, problèmes et demandes de fonctionnalités sont les bienvenus ! N'hésitez pas à consulter la page des problèmes. Si vous souhaitez contribuer, veuillez consulter le guide de contribution.
Sponsorship
Cher(e) personne géniale,
Je crée des projets open source par passion. Bien que j'ai un travail, un toit et autant de fast-food que je peux gérer, ce serait formidable d'être apprécié par la communauté pour quelque chose sur quoi j'ai passé beaucoup de temps et d'argent. Merci de considérer la possibilité de me soutenir ! Qui sait ? Peut-être que je pourrai quitter mon emploi et publier du code open source à plein temps.
Cordialement,
Brian Zalewski
Affiliés
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 spéciaux :

Licence
Copyright © 2020-2021 Megabyte LLC. Ce projet est sous licence MIT.
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install professormanhattan.homebrew