megabyte-labs.homebrew
Homebrew - macOS/Linux 的软件包管理工具
由 Megabyte Labs 制作
一个在macOS和Linux系统上安装Homebrew(软件包管理系统)的Ansible角色
目录
概述
该仓库是一个用于在macOS和Linux系统上安装Homebrew(软件包管理系统)的Ansible角色的主页。Homebrew是一个免费和开源的软件包管理系统,简化了在Apple的操作系统macOS和Linux上安装软件的过程。这个名字旨在暗示在Mac上根据用户的喜好构建软件的概念。
特点
确保Homebrew已安装:
- 检查Homebrew是否已经安装
- 在macOS和Linux上安装Homebrew
- 确保
.bashrc
文件正确地将Homebrew添加到PATH
变量中
安装Homebrew包:
- 确保Homebrew和Homebrew包是最新的
- 安装可配置的Homebrew包列表(通过
homebrew_packages
变量) - 确保预装的Homebrew casks是最新的
- 在macOS上安装可配置的Homebrew casks(通过
homebrew_casks
变量)
快速开始
想要安装Homebrew而不使用Ansible? 只需运行与您的操作系统相对应的以下命令:
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'))
重要提示: 在运行上述命令之前,您应该直接访问该网址以确保代码是可信的。我们知道它是安全的,但在运行任何脚本之前,您应该检查它。
您还可以查看**Install Doctor**。这是我们创建的一个应用程序,可以通过一行命令安装任何Ansible角色。它还有一些其他很棒的功能,比如在不需要密码的情况下动态安装二进制文件。然而,如果您想将此角色集成到Ansible剧本中(并自定义设置),请继续阅读下面的内容。
支持的操作系统
下表显示了我们在其上测试了该角色的操作系统。它是通过位于molecule/
文件夹中的Ansible Molecule测试自动生成的。我们有CI逻辑可自动处理Windows、macOS、Ubuntu、Fedora、CentOS、Debian和Archlinux的测试。如果您的操作系统没有列出,但它是我们测试的系统的变体(即基于Debian或基于RedHat的系统),那么此角色仍然有效的可能性是存在的。
操作系统家族 | 操作系统版本 | 状态 | 幂等性 | 测试日期 |
---|---|---|---|---|
ArchLinux | 最新 | ❌ |
❌ |
2022年1月7日 |
CentOS | 7 | ❌ |
❌ |
2022年1月7日 |
CentOS | 8 | ❌ |
❌ |
2022年1月7日 |
CentOS Stream | 8 | ❌ |
❌ |
2022年1月7日 |
Debian | 10 (Buster) | ❌ |
❌ |
2022年1月7日 |
Debian | 11 (Bullseye) | ❌ |
❌ |
2022年1月7日 |
Debian | 9 (Stretch) | ❌ |
❌ |
2022年1月7日 |
Fedora | 33 | ❌ |
❌ |
2022年1月7日 |
Fedora | 34 | ❌ |
❌ |
2022年1月7日 |
Fedora | 35 | ❌ |
❌ |
2022年1月7日 |
Ubuntu | 18.04 (Bionic Beaver) | ✅ |
❌ |
2022年1月7日 |
Ubuntu | 20.04 (Focal Fossa) | ✅ |
❌ |
2022年1月7日 |
Ubuntu | 21.04 (Hirsute Hippo) | ✅ |
❌ |
2022年1月7日 |
Ubuntu | 21.10 (Impish Indri) | ✅ |
❌ |
2022年1月7日 |
Windows | 10 | ✅ |
❌ |
2022年1月7日 |
什么是幂等性? 幂等性意味着如果您连续运行此角色两次,则第二次运行系统不会发生变化。
我们花了很多时间来完善我们的CI配置和构建工具。如果您想了解更多关于我们如何完善流程的信息,您可以查看我们的Ansible常见文件和Ansible文档仓库。有关更多详细信息,请参见CONTRIBUTING.md指南。
依赖关系
我们的大多数角色依赖于Ansible Galaxy集合。我们的一些项目还依赖于其他在Ansible Galaxy上发布的角色和集合。在您运行此角色之前,您需要安装集合和角色依赖关系,以及Python要求,运行以下命令:
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
或者,如果您是Ansible的新手,并且不介意安装开发要求,您可以简单地运行bash .config/scripts/start.sh
。这是一种简单的方法,确保一切正常工作。
Python
尽管在标准机器上运行此剧本唯一需要的工具是Ansible(一个Python包),但我们还包括了一些其他适用于特定用例和开发的Python依赖性。下表详细列出了这些包:
包名称 | 描述 | 必需 |
---|---|---|
ansible | 一种可以远程配置计算机的配置管理系统 | ✔️ |
docker | 提供使用Ansible配置Docker容器的能力 | ✔️ |
python-vagrant | 用于配置Vagrant虚拟机 | ✔️ |
pywinrm | 用于配置使用WinRM的Windows机器 | ✔️ |
ansible-lint | Ansible文件的Lint工具 | |
ansibler | 自定义工具,用于生成高级文档(例如,它生成兼容性图表和其他一些图表) | |
black | Python文件自动格式化工具(如果项目使用Python测试脚本) | |
blocklint | 确保某些单词不会进入代码库的Lint工具 | |
flake8 | Python Linter,报告Python语法和风格错误 | |
mod-ansible-autodoc | ansible-autodoc的自定义分支,允许我们根据角色的YAML文件中的注释自动生成文档 | |
molecule | Ansible的测试框架 | |
molecule-docker | Molecule插件,用于配置Docker容器 | |
molecule-vagrant | Molecule插件,用于配置Vagrant虚拟机 | |
pre-commit-hooks | 一系列有助于Lint的工具 | |
proselint | 用于生成英语语言改进的Lint工具(用于改善文档) | |
yamllint | 用于YAML文件的Lint工具,确保使用正确的语法和样式 |
Galaxy角色
虽然我们的大多数角色没有依赖,但在某些情况下,必须先安装另一个角色才能继续执行逻辑。剧本开始时,将运行在meta/main.yml
中列出的Ansible Galaxy角色依赖关系。这些依赖关系配置为每个剧本只运行一次。如果您在剧本中包含多个具有共同依赖的角色,则在第一次运行之后将跳过依赖项安装。我们的一些角色还直接在任务文件中利用帮助角色,从而帮助保持我们的主剧本(加油站) DRY。
requirements.yml
文件包含此角色所需的Ansible Galaxy依赖关系的完整列表(即meta/main.yml
角色依赖关系、帮助角色、集合等)。为了方便起见,下方列出了角色依赖关系及其简要描述:
角色依赖关系
Galaxy集合
此角色依赖于多个Ansible Galaxy集合。集合及其源链接如下所示。
示例剧本
安装了依赖关系后,您只需将角色添加到主剧本中。该角色处理become
行为,因此您可以直接将该角色添加到您的剧本中,而不必担心不应以root身份运行的命令:
- hosts: all
roles:
- professormanhattan.homebrew
如果您将此角色纳入到现有的剧本中,建议您将pyproject.toml
和requirements.yml
中列出的要求复制到剧本根目录中的相应文件中,以便您只需在将来使用时安装一组要求。请注意,pyproject.toml
中的依赖关系可以移动到更传统的requirements.txt
中,如果您当前正使用它来跟踪Python依赖关系。
真实世界示例
您可以在我们的主剧本(即加油站)中找到一个使用此角色的示例剧本。该剧本是学习如何使用Ansible的很好的例子。它还包含了很多经过深思熟虑的构建工具,更高级的Ansible用户可以欣赏。此外,完全不关心Ansible的人也能受益,因为它可以让您更或少地将计算机(和网络)变成终极开发环境。总之,这是一个很棒的项目,开发人员应该了解它!
贡献
欢迎贡献、问题和功能请求!欢迎查看问题页面。如果您想参与贡献,请查看贡献指南。
赞助
亲爱的优秀人士,
我出于热爱创建开源项目。虽然我有工作、住所,能够吃到快餐,但被社区认可还是蛮不错的,因为我为此花费了很多时间和金钱。请考虑赞助我!谁知道呢?也许我能辞掉工作,全职发布开源项目。
诚挚的,
Brian Zalewski
合作伙伴
下面是我们利用的一些服务的列表,这些服务通过我们的特殊链接提供特殊优惠:

许可证
版权所有 © 2020-2021 Megabyte LLC。此项目根据MIT许可证发布。
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install megabyte-labs.homebrew