professormanhattan.homebrew
Homebrew - Un Gestor de Paquetes para macOS/Linux
Creado por Megabyte Labs
Un rol de Ansible que instala Homebrew (un sistema de gestión de paquetes) en sistemas macOS y Linux
Tabla de Contenidos
- Descripción General
- Características
- Inicio Rápido
- Sistemas Operativos Soportados
- Dependencias
- Ejemplo de Playbook
- Contribuciones
- Licencia
Descripción General
Este repositorio es el hogar de un rol Ansible que instala Homebrew (un sistema de gestión de paquetes) en sistemas macOS y Linux. Homebrew es un sistema de gestión de paquetes de software libre y de código abierto que simplifica la instalación de software en el sistema operativo macOS de Apple, así como en Linux. El nombre sugiere la idea de construir software en el Mac según el gusto del usuario.
Características
Asegura que Homebrew esté instalado:
- Verifica que Homebrew no esté ya instalado
- Instala Homebrew en macOS y Linux
- Asegura que el archivo
.bashrc
añade correctamente Homebrew a la variablePATH
Instala paquetes de Homebrew:
- Asegura que Homebrew y los paquetes de Homebrew están actualizados
- Instala una lista configurable de paquetes de Homebrew (a través de la variable
homebrew_packages
) - Asegura que los casks de Homebrew preinstalados estén actualizados
- Instala una lista configurable de casks de Homebrew en macOS (a través de la variable
homebrew_casks
)
Inicio Rápido
¿Buscas instalar Homebrew sin tener que lidiar con Ansible? Simplemente ejecuta el siguiente comando que corresponde a tu sistema operativo:
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'))
Nota Importante: Antes de ejecutar los comandos anteriores, es recomendable que accedas directamente a la URL para asegurarte de que el código es legítimo. Ya sabemos que es seguro, pero antes de ejecutar cualquier script en tu computadora, deberías inspeccionarlo.
También puedes visitar Install Doctor. Es una aplicación que creamos que puede instalar cualquier rol de Ansible con una sola línea de código. También tiene otras funciones interesantes, como la capacidad de instalar binarios sobre la marcha sin necesitar una contraseña. Sin embargo, si deseas incorporar este rol en un playbook de Ansible (y personalizar configuraciones), sigue leyendo.
Sistemas Operativos Soportados
El siguiente cuadro muestra los sistemas operativos en los que hemos probado este rol. Se genera automáticamente utilizando las pruebas de Ansible Molecule ubicadas en la carpeta molecule/
. Hay lógica de CI en su lugar para manejar automáticamente la prueba de Windows, macOS, Ubuntu, Fedora, CentOS, Debian y Archlinux. Si tu sistema operativo no está listado pero es una variante de uno de los sistemas que probamos (es decir, un sistema de tipo Debian o un sistema de tipo RedHat), entonces es posible que el rol funcione.
Familia de SO | Versión de SO | Estado | Idempotente | Probado En |
---|---|---|---|---|
ArchLinux | Última | ❌ |
❌ |
7 de enero de 2022 |
CentOS | 7 | ❌ |
❌ |
7 de enero de 2022 |
CentOS | 8 | ❌ |
❌ |
7 de enero de 2022 |
CentOS Stream | 8 | ❌ |
❌ |
7 de enero de 2022 |
Debian | 10 (Buster) | ❌ |
❌ |
7 de enero de 2022 |
Debian | 11 (Bullseye) | ❌ |
❌ |
7 de enero de 2022 |
Debian | 9 (Stretch) | ❌ |
❌ |
7 de enero de 2022 |
Fedora | 33 | ❌ |
❌ |
7 de enero de 2022 |
Fedora | 34 | ❌ |
❌ |
7 de enero de 2022 |
Fedora | 35 | ❌ |
❌ |
7 de enero de 2022 |
Ubuntu | 18.04 (Bionic Beaver) | ✅ |
❌ |
7 de enero de 2022 |
Ubuntu | 20.04 (Focal Fossa) | ✅ |
❌ |
7 de enero de 2022 |
Ubuntu | 21.04 (Hirsute Hippo) | ✅ |
❌ |
7 de enero de 2022 |
Ubuntu | 21.10 (Impish Indri) | ✅ |
❌ |
7 de enero de 2022 |
Windows | 10 | ✅ |
❌ |
7 de enero de 2022 |
¿Qué significa idempotente? Idempotente significa que si ejecutas este rol dos veces seguidas, no habrá cambios en el sistema la segunda vez.
Pasamos mucho tiempo perfeccionando nuestras configuraciones de CI y herramientas de compilación. Si estás interesado en aprender más sobre cómo perfeccionamos nuestro proceso, es posible que encuentres interesantes nuestros archivos comunes de Ansible y documentación de Ansible. Consulta la guía CONTRIBUTING.md para obtener más detalles.
Dependencias
La mayoría de nuestros roles dependen de colecciones de Ansible Galaxy. Algunos de nuestros proyectos también dependen de otros roles y colecciones que se publican en Ansible Galaxy. Antes de ejecutar este rol, necesitarás instalar las dependencias de las colecciones y roles, así como los requisitos de Python, ejecutando:
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
Alternativamente, puedes simplemente ejecutar bash .config/scripts/start.sh
si eres nuevo en Ansible y no te importa que también se instalen los requisitos de desarrollo. Esta es la forma más fácil de asegurarte de que todo funcione correctamente.
Python
Aunque la única herramienta necesaria para ejecutar este juego en una máquina estándar es Ansible (un paquete de Python), incluimos varias otras dependencias de Python que son requeridas para casos de uso especializados y desarrollo. La tabla a continuación detalla estos paquetes:
Paquete | Descripción | Requerido |
---|---|---|
ansible | Un sistema de gestión de configuraciones que puede configurar computadoras de forma remota | ✔️ |
docker | Habilita la capacidad de aprovisionar contenedores Docker con Ansible | ✔️ |
python-vagrant | Requerido para aprovisionar VMs de Vagrant | ✔️ |
pywinrm | Requerido para aprovisionar máquinas Windows que están usando WinRM | ✔️ |
ansible-lint | Herramienta de linting para archivos de Ansible | |
ansibler | Herramienta personalizada utilizada para generar documentación avanzada (por ejemplo, genera la tabla de compatibilidad y otros gráficos) | |
black | Formateador de archivos Python incluido en caso de que el proyecto utilice scripts de prueba de Python | |
blocklint | Herramienta de linting que impide que ciertas palabras ingresen en la base de código | |
flake8 | Linter de Python que reporta errores de sintaxis y estilo de Python | |
mod-ansible-autodoc | Fork personalizado de ansible-autodoc que nos permite generar documentación automáticamente basada en los comentarios en los archivos YAML del rol | |
molecule | Marco de pruebas para Ansible | |
molecule-docker | Plugin de Molecule para aprovisionar contenedores Docker | |
molecule-vagrant | Plugin de Molecule para aprovisionar VMs de Vagrant | |
pre-commit-hooks | Conjunto de herramientas útil para linting | |
proselint | Linter utilizado para generar mejoras en el lenguaje inglés (se utiliza para mejorar la documentación) | |
yamllint | Linter para archivos YAML que asegura que se utilicen la sintaxis y el estilo correctos |
Roles de Galaxy
Aunque la mayoría de nuestros roles no tienen dependencias, hay algunos casos en los que otro rol debe instalarse antes de que la lógica pueda continuar. Al comienzo de la ejecución, se ejecutarán las dependencias de roles de Ansible Galaxy listadas en meta/main.yml
. Estas dependencias están configuradas para ejecutarse una sola vez por playbook. Si incluyes más de uno de nuestros roles en tu playbook que tienen dependencias en común, entonces la instalación de dependencias se omitirán después de la primera ejecución. Algunos de nuestros roles también utilizan roles auxiliares directamente desde los archivos de tareas, lo que ayuda a mantener nuestro playbook principal (Gas Station) limpio.
El archivo requirements.yml
contiene una lista completa de las dependencias de Ansible Galaxy requeridas por este rol (es decir, dependencias de roles en meta/main.yml
, roles auxiliares, colecciones, etc.). Para tu conveniencia, a continuación se presenta una lista de las dependencias de roles junto con descripciones breves:
dependencias_de_roles
Colecciones de Galaxy
Este rol depende de múltiples colecciones de Ansible Galaxy. Las colecciones, junto con enlaces a su fuente, se enumeran a continuación.
Ejemplo de Playbook
Con las dependencias instaladas, todo lo que tienes que hacer es agregar el rol a tu playbook principal. El rol maneja el comportamiento de become
, así que puedes simplemente agregar el rol a tu playbook sin preocuparte por comandos que no deben ejecutarse como root:
- hosts: all
roles:
- professormanhattan.homebrew
Si estás incorporando este rol en un playbook preexistente, podría ser prudente copiar los requisitos descritos en pyproject.toml
y requirements.yml
a sus archivos correspondientes en la raíz de tu playbook, así solo tendrás que preocuparte por instalar un conjunto de requisitos en el uso futuro. Ten en cuenta que las dependencias en pyproject.toml
pueden trasladarse al más tradicional requirements.txt
, si es lo que utilizas actualmente para rastrear dependencias de Python.
Ejemplo del Mundo Real
Puedes encontrar un ejemplo de un playbook que incorpora este rol en nuestro playbook principal (también conocido como Gas Station). El playbook es un excelente ejemplo para alguien que está aprendiendo a usar Ansible. También incorpora muchas herramientas de construcción bien pensadas que los usuarios de Ansible más avanzados pueden apreciar. Y las personas que no les importa Ansible también pueden beneficiarse de ello porque les permite, en gran medida, convertir su computadora (y red) en el entorno de desarrollo definitivo. La conclusión es que es un proyecto increíble que los desarrolladores deben conocer.
Contribuciones
¡Las contribuciones, problemas y solicitudes de características son bienvenidas! Siéntete libre de revisar la página de problemas. Si deseas contribuir, por favor revisa la guía de contribuciones.
Patrocinio
Estimado Persona Genial,
Creé proyectos de código abierto por amor. Aunque tengo un trabajo, refugio, y tanta comida rápida como puedo manejar, aún sería genial ser apreciado por la comunidad por algo en lo que he gastado mucho tiempo y dinero. ¡Por favor considera patrocinándome! ¿Quién sabe? Tal vez pueda dejar mi trabajo y publicar código abierto a tiempo completo.
Sinceramente,
Brian Zalewski
Afiliados
A continuación encontrarás una lista de servicios que usamos y que ofrecen incentivos especiales por registrarte a través de nuestros enlaces especiales:

Licencia
Copyright © 2020-2021 Megabyte LLC. Este proyecto está licenciado bajo MIT.
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install professormanhattan.homebrew