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 | Позволяет предоставлять возможности создания контейнеров Docker с помощью Ansible | ✔️ |
python-vagrant | Требуется для создания ВМ через Vagrant | ✔️ |
pywinrm | Требуется для создания Windows-машин с использованием WinRM | ✔️ |
ansible-lint | Инструмент для анализа файлов Ansible | |
ansibler | Пользовательский инструмент для генерации расширенной документации (например, генерирует график совместимости и некоторые другие графики) | |
black | Автоформатировщик файлов Python, входящий в проект, в случае использования тестовых сценариев на Python | |
blocklint | Инструмент анализа, который предотвращает появление определенных слов в кодовой базе | |
flake8 | Анализатор Python, который сообщает об ошибках синтаксиса и стиля в Python | |
mod-ansible-autodoc | Пользовательская модификация ansible-autodoc, позволяющая автоматически генерировать документацию на основе комментариев в YAML-файлах роли | |
molecule | Тестовая платформа для Ansible | |
molecule-docker | Плагин Molecule для создания контейнеров Docker | |
molecule-vagrant | Плагин Molecule для создания ВМ через Vagrant | |
pre-commit-hooks | Набор инструментов, полезных для анализа | |
proselint | Анализатор, используемый для улучшения английского языка (используется для улучшения документации) | |
yamllint | Инструмент контроля синтаксиса для файлов YAML, который обеспечивает правильность синтаксиса и стиля |
Роли Galaxy
Хотя у большинства наших ролей нет зависимостей, есть случаи, когда перед выполнением логики необходимо установить другую роль. В начале игры зависимости ролей Ansible Galaxy, указанные в meta/main.yml
, будут запущены. Эти зависимости настроены таким образом, что запускаются только один раз за плейбук. Если вы включаете более одной нашей роли в свой плейбук, у которых есть общие зависимости, то установка зависимостей будет пропущена после первого выполнения. Некоторые из наших ролей также используют вспомогательные роли напрямую из файлов задания, что помогает сохранить наши основные плейбуки (Gas Station) упорядоченными.
Файл 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 ProfessorManhattan/ansible-homebrew