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
, - устанавливает любые
brew
taps, определенные в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/ansible-role-linuxbrew