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. Коллекции и ссылки на их источники перечислены ниже.

  • коллекция 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 ProfessorManhattan/ansible-homebrew
Лицензия
other
Загрузки
5915
Владелец
Often imitated, never duplicated