ctorgalson.linuxbrew
Linuxbrew (ctorgalson.linuxbrew)
Лично устанавливает Linuxbrew, пакеты brew и taps на Ubuntu/Debian и Fedora, чтобы избежать передачи скрипта оболочки в sh :)
Роль предполагает, что она может быть выполнена в плейбуке, который использует become: true, поэтому она требует имя не-root пользователя для безопасного выполнения команд brew. Для других задач, таких как установка зависимостей с использованием apt, используется elevate привилегий. В результате, это должно работать независимо от значения ansible_user, при условии, что пользователь {{ lb__owner }} существует.
Благодарности markosamuli за хорошую роль Linuxbrew, которая не совсем соответствовала моим нуждам. Я использовал эту роль как основу для этой (и, вероятно, допустил свои собственные ошибки).
Задачи
Роль делится на три файла задач:
main.yml
Этот файл:
- проверяет, существует ли уже
brew, - включает
install.yml, когдаbrewеще не существует, - включает
packages.yml, когда переменнаяlb__packagesне пуста, или одна из двух переменныхlb__update_homebrew_when_installing_packagesилиlb__upgrade_all_when_installing_packagesравнаtrue. - включает любое количество файлов задач настройки оболочки (или других), указанных в
lb__shell_configuration_tasks.
install.yml
Этот файл:
- устанавливает зависимости с помощью
apt, - создает необходимые директории для Linuxbrew,
- клонирует основные и базовые репозитории Homebrew,
- создает символические ссылки для бинарного файла
brew, - устанавливает пакет
portable-ruby.
packages.yml
Этот файл:
- обновляет сам
brew, когдаlb__update_homebrew_when_installing_packagesравенtrue, - обновляет все пакеты
brew, когдаlb__upgrade_all_when_installing_packagesравенtrue, - устанавливает любые пакеты
brew, определенные вlb__packages, - устанавливает любые
brewtaps, определенные вlb__taps.
Требования
Нет специальных требований.
Переменные роли
Vars
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
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 |
Список репозиториев, которые будут клонированы во время установки. Каждый элемент должен иметь свойства repo, dest и version, подходящие для ansible.builtin.git. |
lb__dependencies |
список | См. vars/main.yml |
Список пакетов apt, необходимых для установки и использования brew. |
По умолчанию
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
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 и может иметь необязательные свойства state, path и install_options, подходящие для ansible.community.homebrew. |
lb__taps |
список | [] |
Список taps для установки. Каждый элемент должен определять свойство name и может иметь свойства state, path и url, подходящие для ansible.community.homebrew_tap. |
Зависимости
Эта роль зависит от коллекции ansible.community для модулей homebrew и homebrew_tap.
Пример плейбука
- 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