professormanhattan.homebrew
<!-- ⚠️ 本README由文件“.config/docs/blueprint-readme-role.md”生成 ⚠️ -->
<div align="center">
<center>
<a href="https://github.com/megabyte-labs/ansible-homebrew">
<img width="148" height="148" alt="Homebrew logo" src="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/raw/master/logo.png" />
</a>
</center>
</div>
<div align="center">
<center><h1 align="center"><i></i>Homebrew - macOS/Linux 的包管理工具<i></i></h1></center>
<center><h4 style="color: #18c3d1;">由 <a href="https://megabyte.space" target="_blank">Megabyte Labs</a> 制作</h4><i></i></center>
</div>
<div align="center">
<a href="https://megabyte.space" title="Megabyte Labs主页" target="_blank">
<img alt="主页" src="https://img.shields.io/website?down_color=%23FF4136&down_message=不可用&label=主页&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=可用&url=https%3A%2F%2Fmegabyte.space&style=for-the-badge" />
</a>
<a href="https://github.com/megabyte-labs/ansible-homebrew/blob/master/docs/CONTRIBUTING.md" title="了解如何贡献" target="_blank">
<img alt="贡献" src="https://img.shields.io/badge/贡献指引-0074D9?logo=github-sponsors&logoColor=white&style=for-the-badge" />
</a>
<a href="https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/" title="在Slack与我们聊天" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-聊天-e01e5a?logo=slack&logoColor=white&style=for-the-badge" />
</a>
<a href="https://gitter.im/megabyte-labs/community" title="在Gitter与社区聊天" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style=for-the-badge" />
</a>
<a href="https://github.com/megabyte-labs/ansible-homebrew" title="GitHub镜像" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/镜像-GitHub-333333?logo=github&style=for-the-badge" />
</a>
<a href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew" title="GitLab仓库" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/仓库-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style=for-the-badge" />
</a>
</div>
<br/>
<div align="center">
<a title="Ansible Galaxy角色: professormanhattan.homebrew" href="https://galaxy.ansible.com/professormanhattan/homebrew" target="_blank">
<img alt="Ansible Galaxy角色: professormanhattan.homebrew" src="https://img.shields.io/ansible/role/57302?logo=ansible&style=flat-square" />
</a>
<a title="版本: 1.0.0" href="https://github.com/megabyte-labs/ansible-homebrew" target="_blank">
<img alt="版本: 1.0.0" src="https://img.shields.io/badge/version-1.0.0-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACNJREFUCNdjIACY//+BEp9hhM3hAzYQwoBIAqEDYQrCZLwAAGlFKxU1nF9cAAAAAElFTkSuQmCC&cacheSeconds=2592000&style=flat-square" />
</a>
<a title="GitLab构建状态" href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/commits/master" target="_blank">
<img alt="构建状态" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/homebrew?branch=master&label=构建&logo=gitlab&logoColor=white&style=flat-square" />
</a>
<a title="Windows 11在GitHub上的测试状态" href="https://github.com/megabyte-labs/ansible-homebrew/actions/workflows/Windows.yml" target="_blank">
<img alt="Windows 11测试状态" src="https://img.shields.io/github/workflow/status/ProfessorManhattan/ansible-homebrew/Windows%20Ansible%20Role%20Test/master?color=cyan&label=windows&logo=windows&style=flat-square" />
</a>
<a title="macOS在GitLab上的测试状态" href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/commits/master" target="_blank">
<img alt="macOS测试状态" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/homebrew?branch=test%2Fdarwin&label=osx&logo=apple&style=flat-square" />
</a>
<a title="Linux Molecule在GitLab上的测试状态" href="https://gitlab.com/megabyte-labs/ansible-roles/homebrew/-/commits/master" target="_blank">
<img alt="Linux Molecule测试状态" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/homebrew?branch=test%2Flinux&label=linux&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAElBMVEUAAAAwPEEuOEIxOzswPj7///91+pI+AAAABXRSTlMANRkNJejDPNcAAAB+SURBVCjPddHBDYAgDIXhGtMRHMG7S3hvTP79VxFIQVq1wOVLm7wU8QIJpSThC2wGwwJoPQFKRdiAAIhGsAykZNSZAOVNMx4BMjwtpySgr6CDJdB/MAdJwAvSiFoE5aABHUb0ch0WHNQq+KPAOgCgrbEnbjAHArjGz3jr3hpumrQpvwi66rkAAAAASUVORK5CYII=&style=flat-square" />
</a>
<a title="Ansible Galaxy质量评分(满分5分)" href="https://galaxy.ansible.com/professormanhattan/homebrew" target="_blank">
<img alt="Ansible Galaxy质量评分" src="https://img.shields.io/ansible/quality/57302?logo=ansible&style=flat-square" />
</a>
<a title="Ansible Galaxy下载次数" href="https://galaxy.ansible.com/professormanhattan/homebrew" target="_blank">
<img alt="Ansible Galaxy下载次数" src="https://img.shields.io/ansible/role/d/57302?logo=ansible&label=下载次数&style=flat-square" />
</a>
<a title="文档" href="https://megabyte.space/docs/ansible" target="_blank">
<img alt="文档" src="https://img.shields.io/badge/documentation-是-brightgreen.svg?logo=readthedocs&logoColor=white&style=flat-square" />
</a>
<a title="许可证: MIT" href="https://github.com/megabyte-labs/ansible-homebrew/blob/master/LICENSE" target="_blank">
<img alt="许可证: MIT" src="https://img.shields.io/badge/license-MIT-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC&style=flat-square" />
</a>
</div>
> <br/><h4 align="center">**一个在macOS和Linux系统上安装Homebrew(一个软件包管理系统)的Ansible角色**</h4><br/>
<a href="#table-of-contents" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## 内容
- [概述](#overview)
- [功能](#features)
- [快速开始](#quick-start)
- [支持的操作系统](#supported-operating-systems)
- [依赖](#dependencies)
- [Python](#python)
- [Galaxy角色](#galaxy-roles)
- [Galaxy集合](#galaxy-collections)
- [示例Playbook](#example-playbook)
- [现实世界示例](#real-world-example)
- [贡献](#contributing)
- [合作伙伴](#affiliates)
- [许可证](#license)
<a href="#overview" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## 概述
这个仓库是一个 [Ansible](https://www.ansible.com/) 角色的家,它在macOS和Linux系统上安装Homebrew(一个软件包管理系统)。[Homebrew](https://brew.sh/) 是一个免费开源的软件包管理系统,简化了在Apple的macOS和Linux操作系统上安装软件的过程。这个名字意在表达根据用户的需求在Mac上构建软件的想法。
<a href="#features" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## 功能
**确保安装Homebrew:**
- 检查确保Homebrew尚未安装
- 在macOS和Linux上安装Homebrew
- 确保`.bashrc`文件正确地将Homebrew添加到`PATH`变量
**安装Homebrew包:**
- 确保Homebrew及其包是最新的
- 安装可配置的Homebrew包列表(通过`homebrew_packages`变量)
- 确保预安装的Homebrew casks是最新的
- 在macOS上安装可配置的Homebrew casks(通过`homebrew_casks`变量)
<a href="#quick-start" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## 快速开始
想要安装Homebrew而不需处理[Ansible](https://www.ansible.com/)? 只需运行以下与您的操作系统相对应的命令:
**Linux/macOS:**
```shell
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 playbook并自定义设置,请继续阅读下面的内容。
支持的操作系统
下表显示了我们测试该角色的操作系统。它是采用位于molecule/
文件夹中的Ansible Molecule测试自动生成的。我们有自动化逻辑来处理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
虽然在标准机器上运行此play所需的唯一工具是Ansible(一个Python软件包),但我们还包括一些其他Python依赖项,以适应特殊的使用场景和开发需求。以下表格详细说明了这些包:
包 | 描述 | 是否必需 |
---|---|---|
ansible | 一种可以远程配置计算机的配置管理系统 | ✔️ |
docker | 使得通过Ansible提供Docker容器的能力 | ✔️ |
python-vagrant | 提供Vagrant虚拟机所需 | ✔️ |
pywinrm | 提供用于与使用WinRM的Windows机器进行配置所需 | ✔️ |
ansible-lint | Ansible文件的检查工具 | |
ansibler | 自定义工具,用于生成高级文档(例如,它生成兼容性图表和其他图表) | |
black | Python文件自动格式化工具,适用于项目中使用Python测试脚本的情况 | |
blocklint | 一种检查工具,防止某些词汇进入代码库 | |
flake8 | Python检查工具,用于报告Python语法和风格错误 | |
mod-ansible-autodoc | 基于ansible-autodoc的自定义分支,允许我们根据角色YAML文件中的注释自动生成文档 | |
molecule | Ansible的测试框架 | |
molecule-docker | Molecule插件,用于提供Docker容器 | |
molecule-vagrant | Molecule插件,用于提供Vagrant虚拟机 | |
pre-commit-hooks | 一套有助于检查的工具 | |
proselint | 用于生成英语语言改进的检查工具(用于改善文档) | |
yamllint | 用于确保YAML文件遵循正确的语法和样式的检查工具 |
Galaxy角色
虽然我们大多数角色没有依赖关系,但在某些情况下必须在逻辑继续之前安装其他角色。在play的开头,将运行在meta/main.yml
中列出的Ansible Galaxy角色依赖项。这些依赖项配置为在每个playbook中仅运行一次。如果您在playbook中包含了多个我们的角色,并且它们有共同的依赖项,那么在第一次运行后,后续的依赖项安装将被跳过。我们的某些角色还直接在任务文件中利用了辅助角色,这有助于保持我们的主Playbook(加油站) DRY。
requirements.yml
文件包含此角色所需的Ansible Galaxy依赖项的完整列表(即meta/main.yml
角色依赖项、辅助角色、集合等)。为方便起见,以下是角色依赖项的列表及其简要描述:
角色依赖
Galaxy集合
此角色依赖于多个Ansible Galaxy集合。以下是这些集合及其源链接的列表。
示例Playbook
安装依赖项后,您只需将角色添加到您的主Playbook中。该角色处理become
行为,因此您可以简单地将角色添加到您的playbook中,而无需担心不应以root身份运行的命令:
- hosts: all
roles:
- professormanhattan.homebrew
如果您将此角色纳入现有的playbook中,那么最好将pyproject.toml
和requirements.yml
中列出的依赖项复制到您playbook根目录中的相应文件中,以便在将来的使用中只需担心安装一组依赖项。请注意,pyproject.toml
中的依赖项可以移动到更传统的requirements.txt
中,如果您正在使用它来跟踪Python依赖项。
现实世界示例
您可以在我们的主playbook(又名加油站)中找到包含此角色的playbook示例。该playbook为学习如何使用Ansible的人提供了很好的示例。它还包含了许多深思熟虑的构建工具,能够吸引更高级的Ansible用户。而且对于那些不太关心Ansible的人来说,它也能带来好处,因为它使您可以在一定程度上将计算机(和网络)转变为终极开发环境。总之,这是一个开发者应该了解的出色项目!
贡献
欢迎贡献、问题和功能请求!欢迎随时查看问题页面。如果您想做出贡献,请查看贡献指南。
赞助
亲爱的优秀人士,
我出于热爱创建开源项目。虽然我有工作、住所,以及足够的快餐应付,但如果能被社区认可我花了很多时间和金钱的事情,那一定会很好。请考虑赞助我!谁知道呢?也许我将能够辞去工作,全职发布开源项目。
真诚的,
Brian Zalewski
合作伙伴
以下是我们利用的服务列表,通过我们的特殊链接注册其服务可获得特别优惠:

许可证
版权 © 2020-2021 Megabyte LLC。该项目已获得MIT许可证。 ```
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install professormanhattan.homebrew