megabyte-labs.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

Este repositorio es el hogar de un rol de 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 gratuito 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 dependiendo del 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ñada correctamente Homebrew a la variable PATH

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, probablemente deberías acceder directamente a la URL para asegurarte de que el código sea legítimo. Ya sabemos que es seguro, pero, antes de ejecutar cualquier script en tu computadora, deberías inspeccionarlo.

También puedes consultar Install Doctor. Es una aplicación que creamos que puede instalar cualquier rol de Ansible con una sola línea. Tiene algunas otras características útiles, como la capacidad de instalar binarios al vuelo sin requerir una contraseña. Sin embargo, si deseas incorporar este rol en un playbook de Ansible (y personalizar configuraciones), por favor sigue leyendo a continuación.

Sistemas Operativos Soportados

El siguiente gráfico 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 las pruebas de Windows, macOS, Ubuntu, Fedora, CentOS, Debian y Archlinux. Si tu sistema operativo no está en la lista, pero es un variante de uno de los sistemas que probamos (es decir, un sistema de tipo Debian o de tipo RedHat), entonces es posible que el rol aún funcione.

Familia de SO Versión de SO Estado Idempotente Probado En
ArchLinux Último
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.

Hemos pasado mucho tiempo perfeccionando nuestras configuraciones de CI y herramientas de construcción. Si estás interesado en aprender más sobre cómo perfeccionamos nuestro proceso, puede que te interesen nuestros archivos comunes de Ansible y documentación de Ansible. Consulta la guía CONTRIBUTING.md para 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 están publicados en Ansible Galaxy. Antes de ejecutar este rol, deberás instalar las colecciones y roles dependientes, 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 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 sencilla 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 necesarias 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 configuración que puede configurar computadoras de forma remota
✔️
docker Permite la capacidad de aprovisionar contenedores Docker con Ansible
✔️
python-vagrant Requerido para aprovisionar VMs de Vagrant
✔️
pywinrm Requerido para aprovisionar máquinas Windows que utilizan WinRM
✔️
ansible-lint Herramienta de linting para archivos de Ansible
ansibler Herramienta personalizada utilizada para generar documentación avanzada (por ejemplo, genera el gráfico de compatibilidad y otros gráficos)
black Formateador de archivos de Python incluido en caso de que el proyecto utilice scripts de prueba en Python
blocklint Herramienta de linting que impide que ciertas palabras ingresen al código base
flake8 Linter de Python que informa sobre 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 comentarios en los archivos YAML del rol
molecule Framework 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 útiles para linting
proselint Linter usado para generar mejoras en el idioma inglés (se utiliza para mejorar la documentación)
yamllint Linter para archivos YAML que asegura que se utilice la sintaxis y el estilo adecuado

Roles de Galaxy

Aunque la mayoría de nuestros roles no tienen dependencias, hay algunos casos en los que otro rol debe ser instalado antes de que la lógica pueda continuar. Al comienzo del play, las dependencias de rol de Ansible Galaxy enumeradas en meta/main.yml se ejecutarán. Estas dependencias están configuradas para ejecutarse solo una vez por playbook. Si incluyes más de uno de nuestros roles en tu playbook que tienen dependencias comunes, entonces la instalación de dependencias se omitirá 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) DRY.

El archivo requirements.yml contiene una lista completa de las dependencias de Ansible Galaxy requeridas por este rol (es decir, dependencias de rol de meta/main.yml, roles auxiliares, colecciones, etc.). Para tu comodidad, a continuación encontrarás una lista de las dependencias de rol junto con descripciones rápidas:

role_dependencies

Colecciones de Galaxy

Este rol depende de múltiples colecciones de Ansible Galaxy. Las colecciones junto con sus enlaces a la fuente se enumeran a continuación.

  • insignia de Ansible Galaxy de community.general
  • insignia de Ansible Galaxy de google.cloud

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, por lo que puedes agregar el rol a tu playbook sin preocuparte por los comandos que no se deben ejecutar como root:

- hosts: all
  roles:
    - professormanhattan.homebrew

Si estás incorporando este rol en un playbook preexistente, puede ser prudente copiar los requisitos que se indican 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 futuros usos. Ten en cuenta que las dependencias en pyproject.toml pueden trasladarse al más tradicional requirements.txt, si eso es lo que actualmente utilizas para rastrear las 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 a los usuarios más avanzados de Ansible les pueden gustar. Y las personas que no se preocupan por Ansible también pueden beneficiarse porque permite que tu computadora (y red) se conviertan en el entorno de desarrollo definitivo. La conclusión es que es un proyecto increíble que los desarrolladores deberían conocer.

Contribuciones

¡Las contribuciones, problemas y solicitudes de características son bienvenidas! No dudes en consultar la página de problemas. Si te gustaría contribuir, por favor echa un vistazo a la guía de contribuciones.

Patrocinio

Querida Persona Increíble,

Creo proyectos de código abierto por amor. Aunque tengo un trabajo, refugio y tanto comida rápida como puedo manejar, todavía sería genial ser apreciado por la comunidad por algo en lo que he pasado mucho tiempo y dinero. ¡Por favor considera patrocinarme! ¿Quién sabe? Tal vez pueda dejar mi trabajo y publicar código abierto a tiempo completo.

Sinceramente,

Brian Zalewski

patrocinadores de Open Collective patrocinadores de GitHub Patreon

Afiliados

A continuación encontrarás una lista de servicios que utilizamos que ofrecen incentivos especiales por registrarse a sus servicios a través de nuestros enlaces especiales:

MailChimp Insignia de Referido de DigitalOcean

Licencia

Copyright © 2020-2021 Megabyte LLC. Este proyecto está licenciado bajo MIT.

Instalar
ansible-galaxy install megabyte-labs.homebrew
Licencia
other
Descargas
7.9k
Propietario
Free open-source developer tools for managing massive amounts of code