snapd
Snap - Менеджер пакетов для Linux
Создано Megabyte Labs
Роль Ansible, которая гарантирует установку и правильную настройку Snap на системах Linux
Содержание
- Обзор
- Функции
- Быстрый старт
- Поддерживаемые операционные системы
- Зависимости
- Пример плейбука
- Сотрудничество
- Лицензия
Обзор
Этот репозиторий является домом для роли Ansible, которая гарантирует установку и правильную настройку Snap на системах Linux. Snap — это система упаковки и развертывания программного обеспечения, разработанная компанией Canonical для операционных систем, использующих ядро Linux. Пакеты, называемые снапами, и инструмент для их использования, snapd, работают на ряде дистрибутивов Linux и позволяют разработчикам программного обеспечения распространять свои приложения непосредственно пользователям. Снапы — это независимые приложения, работающие в песочнице с ограниченным доступом к системе.
Функции
Гарантирует установку Snap:
- Устанавливает Snap на системах Linux
- Обеспечивает запуск Snap и его активацию при загрузке системы
Быстрый старт
Хотите установить Snap без использования Ansible? Просто выполните следующую команду в зависимости от вашей операционной системы:
Linux/macOS:
curl -sS https://install.doctor/snapd | 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/snapd?os=win'))
Важное замечание: Перед выполнением указанных команд лучше всего открыть URL напрямую, чтобы убедиться, что код безопасен. Мы знаем, что это безопасно, но перед запуском любого скрипта на вашем компьютере стоит проверить его.
Вы также можете ознакомиться с Install Doctor. Это приложение, которое мы создали, чтобы установить любую роль Ansible одной командой. У него есть и другие полезные функции, такие как возможность установки бинарных файлов без запроса пароля. Однако, если вы хотите интегрировать эту роль в плейбук Ansible (и настроить параметры), пожалуйста, продолжайте читать далее.
Поддерживаемые операционные системы
Таблица ниже показывает операционные системы, на которых мы протестировали эту роль. Она автоматически генерируется с помощью тестов Ansible Molecule, находящихся в папке molecule/
. Существует логика CI для автоматического тестирования Windows, macOS, Ubuntu, Fedora, CentOS, Debian и Archlinux. Если ваша операционная система не перечислена, но является вариантом одной из протестированных систем (например, система, основанная на Debian или RedHat), возможно, что роль все равно будет работать.
Семейство ОС | Версия ОС | Статус | Идемпотентность | Протестировано на |
---|
Что означает идемпотентность? Идемпотентность означает, что если вы запустите эту роль дважды подряд, изменений в системе во второй раз не будет.
Мы потратили много времени на совершенствование наших конфигураций 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) в соответствии с DRY.
Файл requirements.yml
содержит полный список зависимостей Ansible Galaxy, необходимых для этой роли (т.е. зависимости ролей meta/main.yml
, вспомогательные роли, коллекции и т.д.). Для вашего удобства ниже приведен список зависимостей ролей с краткими описаниями:
role_dependencies
Коллекции Galaxy
Эта роль зависит от нескольких коллекций Ansible Galaxy. Коллекции и ссылки на их исходники приведены ниже.
Пример плейбука
С установленными зависимостями вам нужно только добавить роль в ваш основной плейбук. Роль обрабатывает поведение become
, поэтому вы можете просто добавить роль в свой плейбук, не беспокоясь о командах, которые не должны выполняться от имени root:
- hosts: all
roles:
- professormanhattan.snapd
Если вы интегрируете эту роль в уже существующий плейбук, имеет смысл скопировать требования, изложенные в pyproject.toml
и requirements.yml
, в соответствующие файлы в корне вашего плейбука, чтобы в дальнейшем вам нужно было беспокоиться только об установке одного набора требований. Обратите внимание, что зависимости в pyproject.toml
могут быть перенесены в более традиционный requirements.txt
, если вы в настоящее время используете его для отслеживания зависимостей Python.
Пример из реальной жизни
Вы можете найти пример плейбука, который включает эту роль, в нашем основном плейбуке (также известном как Gas Station). Этот плейбук является отличным примером для тех, кто изучает Ansible. Он также включает много хорошо продуманных инструментов сборки, которые могут быть полезны более продвинутым пользователям Ansible. А люди, которым Ansible не так интересен, тоже могут извлечь из него выгоду, так как он позволяет превратить ваш компьютер (и сеть) в идеальную среду разработки. В конечном счете, это отличный проект, о котором разработчикам следовало бы знать!
Сотрудничество
Ваши идеи, вопросы и предложения по функциональности всегда приветствуются! Не стесняйтесь обращаться к странице вопросов. Если вы хотите внести вклад, пожалуйста, ознакомьтесь с руководством по сотрудничеству.
Спонсорство
Дорогой замечательный человек,
Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько фастфуда, сколько я могу вынести, было бы довольно приятно быть оцененным обществом за то, на что я потратил много времени и денег. Пожалуйста, подумайте о спонсорстве меня! Кто знает? Может быть, я смогу оставить свою работу и заниматься открытым исходным кодом на полную ставку.
С уважением,
Брайан Залевски
Партнеры
Ниже приведен список услуг, которые мы используем и которые предлагают специальные стимулы за регистрацию в их сервисах через наши специальные ссылки:
Лицензия
Copyright © 2020-2021 Megabyte LLC. Этот проект имеет лицензия MIT.
Ensures Snap is installed and properly configured on Linux systems
ansible-galaxy install megabyte-labs/ansible-snapd