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. Эти зависимости настроены так, чтобы выполняться только один раз на плейбук. Если вы включаете более одной нашей роли в свой плейбук, которые имеют общие зависимости, установка зависимости будет пропущена после первого выполнения. Некоторые наши роли также используют вспомогательные роли непосредственно из файлов задач, что помогает сохранить наш основной плейбук (Заправочная станция) 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.

Реальный пример

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

Вклад

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

Спонсорство

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

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

С уважением,

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

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

Партнеры

Ниже вы найдете список услуг, которые мы используем и которые предлагают специальные условия для регистрации на их الخدمات по нашим специальным ссылкам:

MailChimp Партнерский значок DigitalOcean

Лицензия

Авторские права © 2020-2021 Megabyte LLC. Этот проект лицензирован под MIT.

Установить
ansible-galaxy install ProfessorManhattan/ansible-snapd
Лицензия
other
Загрузки
4368
Владелец
Often imitated, never duplicated