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. Коллекции и ссылки на их источники перечислены ниже.
Пример плейбука
С установленными зависимостями вам всего лишь нужно добавить роль в ваш основной плейбук. Роль обрабатывает поведение become
, поэтому вам просто нужно добавить роль в свой плейбук, не беспокоясь о командах, которые не должны выполняться от имени root:
- hosts: all
roles:
- professormanhattan.homebrew
Если вы интегрируете эту роль в заранее существующий плейбук, тогда может быть разумно скопировать требования, изложенные в pyproject.toml
и requirements.yml
, в соответствующие файлы в корне вашего плейбука, чтобы вам нужно было беспокоиться только об установке одного набора требований в дальнейшем. Обратите внимание, что зависимости в pyproject.toml
могут быть перемещены в более традиционный requirements.txt
, если это то, что вы используете для отслеживания зависимостей Python.
Пример из реальной жизни
Вы можете найти пример плейбука, который включает эту роль, в нашем основном плейбуке (также известном как Gas Station). Плейбук является отличным примером для тех, кто учится использовать Ansible. Он также включает в себя множество хорошо продуманных инструментов сборки, которые могут оценить более опытные пользователи Ansible. А люди, которым все равно на Ansible, тоже могут извлечь из него выгоду, так как он позволяет вам превратить ваш компьютер (и сеть) в идеальную среду разработки. Главное, что это классный проект, о котором разработчикам стоит знать!
Внесение вклада
Вклады, проблемы и запросы функций приветствуются! Не стесняйтесь проверять страницу проблем. Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством по внесению вклада.
Спонсорство
Дорогой Удивительный Человек,
Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько фастфуда, сколько я могу осилить, было бы довольно круто, если бы сообщество оценило то, над чем я потратил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Кто знает? Возможно, я смогу бросить свою работу и заниматься открытым исходным кодом на полный рабочий день.
С уважением,
Брайан Залевски
Партнеры
Ниже приведен список услуг, которые мы используем и которые предлагают специальные преимущества для регистрации на их сервисы через наши специальные ссылки:
Лицензия
Авторские права © 2020-2021 Megabyte LLC. Этот проект лицензирован под MIT.
Installs Homebrew (a package management system) on macOS and Linux systems
ansible-galaxy install megabyte-labs/ansible-homebrew