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

  • коллекция community.general на Ansible Galaxy
  • коллекция google.cloud на Ansible Galaxy

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

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

- hosts: all
  roles:
    - professormanhattan.snapd

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

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

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

Сотрудничество

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

Спонсорство

Дорогой замечательный человек,

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

С уважением,

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

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

Партнеры

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

MailChimp Бadge Referrals DigitalOcean

Лицензия

Copyright © 2020-2021 Megabyte LLC. Этот проект имеет лицензия MIT.

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