ctorgalson.linuxbrew

Linuxbrew (ctorgalson.linuxbrew)

手动在 Ubuntu/Debian 和 Fedora 上安装 linuxbrew、brew 包和 taps,以避免将 shell 脚本传递给 sh :)

这个角色假设可以在使用 become: true 的 playbook 中运行,因此需要一个非 root 用户的名称,以安全地运行 brew 命令。对于其他任务,例如使用 apt 安装依赖项,它会使用提升权限的方式。结果是,它应该可以按预期工作,无论 ansible_user 的值是什么,只要 {{ lb__owner }} 用户存在。

特别感谢 markosamuli 提供的 良好的 Linuxbrew 角色,虽然它不完全符合我的需求,但我使用该角色作为这个角色的基础(可能也引入了我自己的错误)。

任务

该角色分为三个任务文件:

main.yml

这个文件:

  • 检查 brew 是否已经存在,
  • 如果 brew 不存在,则包含 install.yml
  • 如果 lb__packages 变量不为空,或者两个变量 lb__update_homebrew_when_installing_packageslb__upgrade_all_when_installing_packagestrue,则包含 packages.yml
  • 包含 lb__shell_configuration_tasks 提供的任意数量的 shell 配置(或其他)任务文件。

install.yml

这个文件:

  • 使用 apt 安装依赖项,
  • 创建所需的 Linuxbrew 目录,
  • 克隆主和核心 Homebrew 仓库,
  • 创建 brew 二进制文件的符号链接,
  • 安装 portable-ruby 包。

packages.yml

这个文件:

  • lb__update_homebrew_when_installing_packagestrue 时,更新 brew 本身,
  • lb__upgrade_all_when_installing_packagestrue 时,更新所有 brew 包,
  • 安装 lb__packages 中定义的任何 brew 包,
  • 安装 lb__taps 中定义的任何 brew taps。

要求

没有特殊要求。

角色变量

变量

名称 类型 默认值 描述
lb__prefix 字符串 /home/linuxbrew/.linuxbrew 所有 brew 相关文件的位置。
lb__brew 字符串 {{ lb__prefix }}/bin/brew brew 二进制文件的路径。
lb__homebrew_dir 字符串 {{ lb__prefix }}/Homebrew Homebrew 仓库目录的路径。
lb__homebrew_core_dir 字符串 {{ lb__prefix }}/Homebrew/Library/Taps/homebrew-core Homebrew 核心仓库目录的路径。
lb__directories 列表 vars/main.yml lb__prefix 目录中创建的目录列表。
lb__repos 列表 vars/main.yml 安装过程中要克隆的仓库列表。每个项目必须具有适合 ansible.builtin.gitrepodestversion 属性。
lb__dependencies 列表 vars/main.yml brew 安装和使用所需的 apt 包列表。

默认值

名称 类型 默认值 描述
lb__owner 字符串 {{ ansible_user }} {{ lb__prefix }} 目录及其内容的所有者名称。
lb__group 字符串 {{ ansible_user }} {{ lb__prefix }} 目录及其内容的组名称。
lb__shell_configuration_tasks 列表 [] 安装完成后要运行的 Ansible 任务包含文件的路径列表。
lb__update_homebrew_when_installing_packages 布尔值 true 安装新包时是否更新 brew
lb__upgrade_all_when_installing_packages 布尔值 true 安装新包时是否升级 Linuxbrew 包。
lb__packages 列表 [] 要安装的 Linuxbrew 包列表。每个项目必须指定一个 name 属性,并可以有适合 ansible.community.homebrew 的可选属性 statepathinstall_options
lb__taps 列表 [] 要安装的 Linuxbrew taps 列表。每个项目必须指定一个 name 属性,并可以有适合 ansible.community.homebrew_tapstatepathurl 属性。

依赖项

此角色依赖于 ansible.community 集合中的 homebrewhomebrew_tap 模块。

示例 Playbook

- hosts: servers
  become: true
  
  vars:
    lb__owner: "ctorgalson"
    lb__group: "{{ lb__owner }}"
    lb__packages:
      - name: "bottom"
        state: "present"
      - name: "starship"
        state: "present"

  tasks:
     - name: "安装和配置 Linuxbrew、包和 taps。"
       ansible.builtin.import_role:
         name: "ctorgalson.linuxbrew"

许可证

GPL-3.0-only

关于项目

Installs linuxbrew, brew packages, and taps on Ubuntu/Debian.

安装
ansible-galaxy install ctorgalson.linuxbrew
许可证
gpl-3.0
下载
145