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
Лицензия
gpl-3.0
Загрузки
109
Владелец