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集合。以下是这些集合及其源链接的列表。

  • community.general Ansible Galaxy徽章
  • google.cloud Ansible Galaxy徽章

示例Playbook

安装依赖项后,您只需将角色添加到您的主Playbook中。该角色处理become行为,因此您可以简单地将角色添加到您的playbook中,而无需担心不应以root身份运行的命令:

- hosts: all
  roles:
    - professormanhattan.homebrew

如果您将此角色纳入现有的playbook中,那么最好将pyproject.tomlrequirements.yml中列出的依赖项复制到您playbook根目录中的相应文件中,以便在将来的使用中只需担心安装一组依赖项。请注意,pyproject.toml中的依赖项可以移动到更传统的requirements.txt中,如果您正在使用它来跟踪Python依赖项。

现实世界示例

您可以在我们的主playbook(又名加油站)中找到包含此角色的playbook示例。该playbook为学习如何使用Ansible的人提供了很好的示例。它还包含了许多深思熟虑的构建工具,能够吸引更高级的Ansible用户。而且对于那些不太关心Ansible的人来说,它也能带来好处,因为它使您可以在一定程度上将计算机(和网络)转变为终极开发环境。总之,这是一个开发者应该了解的出色项目!

贡献

欢迎贡献、问题和功能请求!欢迎随时查看问题页面。如果您想做出贡献,请查看贡献指南

赞助

亲爱的优秀人士,

我出于热爱创建开源项目。虽然我有工作、住所,以及足够的快餐应付,但如果能被社区认可我花了很多时间和金钱的事情,那一定会很好。请考虑赞助我!谁知道呢?也许我将能够辞去工作,全职发布开源项目。

真诚的,

Brian Zalewski

Open Collective赞助 GitHub赞助 Patreon

合作伙伴

以下是我们利用的服务列表,通过我们的特殊链接注册其服务可获得特别优惠:

MailChimp DigitalOcean推荐徽章

许可证

版权 © 2020-2021 Megabyte LLC。该项目已获得MIT许可证。 ```

安装
ansible-galaxy install professormanhattan.homebrew
许可证
other
下载
5.9k
拥有者
Often imitated, never duplicated