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_packages
或lb__upgrade_all_when_installing_packages
为true
,则包含packages.yml
。 - 包含
lb__shell_configuration_tasks
提供的任意数量的 shell 配置(或其他)任务文件。
install.yml
这个文件:
- 使用
apt
安装依赖项, - 创建所需的 Linuxbrew 目录,
- 克隆主和核心 Homebrew 仓库,
- 创建
brew
二进制文件的符号链接, - 安装
portable-ruby
包。
packages.yml
这个文件:
- 当
lb__update_homebrew_when_installing_packages
为true
时,更新brew
本身, - 当
lb__upgrade_all_when_installing_packages
为true
时,更新所有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.git 的 repo 、dest 和 version 属性。 |
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 的可选属性 state 、path 和 install_options 。 |
lb__taps |
列表 | [] |
要安装的 Linuxbrew taps 列表。每个项目必须指定一个 name 属性,并可以有适合 ansible.community.homebrew_tap 的 state 、path 和 url 属性。 |
依赖项
此角色依赖于 ansible.community
集合中的 homebrew
和 homebrew_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