homebrew

Homebrew - Менеджер пакетов для macOS/Linux

Создано Megabyte Labs



Роль Ansible, которая устанавливает Homebrew (систему управления пакетами) на macOS и Linux


Содержание

Обзор

Этот репозиторий является домом роли Ansible, которая устанавливает Homebrew (систему управления пакетами) на macOS и Linux. Homebrew - это бесплатная и открытая система управления пакетами, которая упрощает установку программного обеспечения на операционной системе Apple macOS, а также на Linux. Название предполагает идею создания программного обеспечения на Mac в зависимости от вкуса пользователя.

Особенности

Гарантия установки Homebrew:

  • Проверяет, что Homebrew еще не установлен
  • Устанавливает Homebrew на macOS и Linux
  • Убеждается, что файл .bashrc правильно добавляет Homebrew в переменную PATH

Установка пакетов Homebrew:

  • Убеждается, что Homebrew и пакеты Homebrew актуальны
  • Устанавливает настраиваемый список пакетов Homebrew (через переменную homebrew_packages)
  • Убеждается, что предустановленные кэски Homebrew актуальны
  • Устанавливает настраиваемый список кэсков Homebrew на macOS (через переменную homebrew_casks)

Быстрый старт

Хотите установить Homebrew без использования Ansible? Просто выполните следующую команду, соответствующую вашей операционной системе:

Linux/macOS:

curl -sS https://install.doctor/homebrew | bash

Windows:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/homebrew?os=win'))

Важно: Перед выполнением вышеуказанных команд вам, вероятно, следует непосредственно перейти по URL, чтобы удостовериться, что код легитимен. Мы уже знаем, что он безопасен, но прежде чем запускать любой скрипт на вашем компьютере, вам следует проверить его.

Вы также можете ознакомиться с Install Doctor. Это приложение, которое мы создали, чтобы установить любую роль Ansible за одну строку. У него также есть несколько других полезных функций, таких как возможность устанавливать бинарные файлы на лету без необходимости ввода пароля. Однако, если вы хотите интегрировать эту роль в плейбук Ansible (и настраивать параметры), тогда продолжайте читать ниже.

Поддерживаемые операционные системы

В таблице ниже показаны операционные системы, на которых мы тестировали эту роль. Она автоматически генерируется с использованием тестов Ansible Molecule, находящихся в папке molecule/. Есть логика CI, которая автоматически обрабатывает тестирование Windows, macOS, Ubuntu, Fedora, CentOS, Debian и ArchLinux. Если вашей операционной системы нет в списке, но она является вариантом одной из систем, которые мы тестируем (т.е. система на базе Debian или система на базе RedHat), то вполне возможно, что роль все равно будет работать.

Семейство ОС Версия ОС Статус Идемпотентность Протестировано
ArchLinux Последняя
7 января 2022 года
CentOS 7
7 января 2022 года
CentOS 8
7 января 2022 года
CentOS Stream 8
7 января 2022 года
Debian 10 (Buster)
7 января 2022 года
Debian 11 (Bullseye)
7 января 2022 года
Debian 9 (Stretch)
7 января 2022 года
Fedora 33
7 января 2022 года
Fedora 34
7 января 2022 года
Fedora 35
7 января 2022 года
Ubuntu 18.04 (Bionic Beaver)
7 января 2022 года
Ubuntu 20.04 (Focal Fossa)
7 января 2022 года
Ubuntu 21.04 (Hirsute Hippo)
7 января 2022 года
Ubuntu 21.10 (Impish Indri)
7 января 2022 года
Windows 10
7 января 2022 года

Что означает идемпотентность? Идемпотентность означает, что если вы запустите эту роль дважды подряд, то во второй раз на системе не будет изменений.

Мы потратили много времени на совершенствование нашей конфигурации CI и инструментов сборки. Если вам интересно узнать больше о том, как мы усовершенствовали наш процесс, то вы можете ознакомиться с нашими общими файлами Ansible и документацией Ansible. Более подробно смотрите в руководстве CONTRIBUTING.md.

Зависимости

Большинство наших ролей зависят от коллекций Ansible Galaxy. Некоторые наши проекты также зависят от других ролей и коллекций, которые опубликованы в Ansible Galaxy. Перед запуском этой роли вам нужно будет установить зависимости коллекций и ролей, а также требования Python, выполнив:

if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml

В качестве альтернативы вы можете просто запустить bash .config/scripts/start.sh, если вы новичок в Ansible и не против установки также требований для разработки. Это простой способ убедиться, что все работает правильно.

Python

Хотя единственным инструментом, необходимым для запуска этой роли на стандартной машине, является Ansible (пакет Python), мы включаем несколько других зависимостей Python, которые необходимы для специализированных случаев использования и разработки. В таблице ниже указаны эти пакеты:

Пакет Описание Необходимый
ansible Система управления конфигурацией, которая может удаленно настраивать компьютеры
✔️
docker Позволяет provision Docker-контейнеров с использованием Ansible
✔️
python-vagrant Необходим для provision Vagrant VMs
✔️
pywinrm Необходим для provision Windows-машин, использующих WinRM
✔️
ansible-lint Инструмент линтинга для файлов Ansible
ansibler Пользовательский инструмент для генерации расширенной документации (например, он генерирует таблицу совместимости и другие диаграммы)
black Автоформатировщик файлов Python, включенный на случай, если проект использует тестовые скрипты Python
blocklint Инструмент линтинга, который предотвращает попадание определенных слов в кодовую базу
flake8 Линтер для Python, который сообщает об ошибках синтаксиса и стиля Python
mod-ansible-autodoc Пользовательская версия ansible-autodoc, которая позволяет нам автоматически генерировать документацию на основе комментариев в YAML-файлах роли
molecule Тестовый фреймворк для Ansible
molecule-docker Плагин Molecule для provision Docker-контейнеров
molecule-vagrant Плагин Molecule для provision Vagrant VMs
pre-commit-hooks Набор инструментов, полезных для линтинга
proselint Линтер, используемый для генерации улучшений на английском языке (используется для улучшения документации)
yamllint Линтер для YAML-файлов, который обеспечивает правильный синтаксис и стиль

Роли Galaxy

Хотя большинство наших ролей не имеют зависимостей, есть некоторые случаи, когда другая роль должна быть установлена, прежде чем логика может продолжиться. В начале плейбука зависимости ролей Ansible Galaxy, перечисленные в meta/main.yml, будут запущены. Эти зависимости настроены так, чтобы выполняться только один раз на плейбук. Если вы включаете более одной из наших ролей в ваш плейбук, которые имеют общие зависимости, установка зависимостей будет пропущена после первого запуска. Некоторые наши роли также используют вспомогательные роли непосредственно из файлов задач, что помогает сохранить наш основной плейбук (Gas Station) DRY.

Файл requirements.yml содержит полный список зависимостей Ansible Galaxy, требуемых этой ролью (т.е. зависимости ролей из meta/main.yml, вспомогательные роли, коллекции и т.д.). Для вашего удобства, ниже приведён список зависимостей ролей с краткими описаниями:

role_dependencies

Коллекции Galaxy

Эта роль зависит от множества коллекций Ansible Galaxy. Коллекции и ссылки на их источники перечислены ниже.

  • значок community.general Ansible Galaxy
  • значок google.cloud Ansible Galaxy

Пример плейбука

С установленными зависимостями вам всего лишь нужно добавить роль в ваш основной плейбук. Роль обрабатывает поведение become, поэтому вам просто нужно добавить роль в свой плейбук, не беспокоясь о командах, которые не должны выполняться от имени root:

- hosts: all
  roles:
    - professormanhattan.homebrew

Если вы интегрируете эту роль в заранее существующий плейбук, тогда может быть разумно скопировать требования, изложенные в pyproject.toml и requirements.yml, в соответствующие файлы в корне вашего плейбука, чтобы вам нужно было беспокоиться только об установке одного набора требований в дальнейшем. Обратите внимание, что зависимости в pyproject.toml могут быть перемещены в более традиционный requirements.txt, если это то, что вы используете для отслеживания зависимостей Python.

Пример из реальной жизни

Вы можете найти пример плейбука, который включает эту роль, в нашем основном плейбуке (также известном как Gas Station). Плейбук является отличным примером для тех, кто учится использовать Ansible. Он также включает в себя множество хорошо продуманных инструментов сборки, которые могут оценить более опытные пользователи Ansible. А люди, которым все равно на Ansible, тоже могут извлечь из него выгоду, так как он позволяет вам превратить ваш компьютер (и сеть) в идеальную среду разработки. Главное, что это классный проект, о котором разработчикам стоит знать!

Внесение вклада

Вклады, проблемы и запросы функций приветствуются! Не стесняйтесь проверять страницу проблем. Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством по внесению вклада.

Спонсорство

Дорогой Удивительный Человек,

Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько фастфуда, сколько я могу осилить, было бы довольно круто, если бы сообщество оценило то, над чем я потратил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Кто знает? Возможно, я смогу бросить свою работу и заниматься открытым исходным кодом на полный рабочий день.

С уважением,

Брайан Залевски

Спонсоры Open Collective Спонсоры GitHub Patreon

Партнеры

Ниже приведен список услуг, которые мы используем и которые предлагают специальные преимущества для регистрации на их сервисы через наши специальные ссылки:

MailChimp Знак рекомендации DigitalOcean

Лицензия

Авторские права © 2020-2021 Megabyte LLC. Этот проект лицензирован под MIT.

Установить
ansible-galaxy install megabyte-labs/ansible-homebrew
Лицензия
other
Загрузки
7325
Владелец
Free open-source developer tools for managing massive amounts of code