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. Коллекции и ссылки на их источники перечислены ниже.
Пример плейбука
С установленными зависимостями, вам нужно лишь добавить роль в ваш основной плейбук. Роль обрабатывает поведение become
, так что вам просто нужно добавить роль в свой плейбук без беспокойства о командах, которые не должны выполняться от имени root:
- hosts: all
roles:
- professormanhattan.snapd
Если вы интегрируете эту роль в уже существующий плейбук, то имеет смысл скопировать требования, изложенные в pyproject.toml
и requirements.yml
, в соответствующие файлы в корне вашего плейбука, чтобы в будущем вам нужно было заботиться лишь об установке одного набора требований. Обратите внимание, что зависимости в pyproject.toml
могут быть перемещены в более традиционный requirements.txt
, если вы используете его для отслеживания зависимостей Python.
Реальный пример
Вы можете найти пример плейбука, который включает в себя эту роль, в нашем основном плейбуке (так называемой Заправочной станции). Этот плейбук является отличным примером для тех, кто изучает, как использовать Ansible. Он также включает в себя много продуманных инструментов сборки, которые могут оценить более продвинутые пользователи Ansible. И люди, которым не важен Ansible, также могут извлечь из этого выгоду, поскольку это позволяет вам более или менее превратить ваш компьютер (и сеть) в идеальную среду разработки. В конечном счете, это потрясающий проект, о котором должны знать разработчики!
Вклад
Вклады, вопросы и запросы на функции приветствуются! Вы можете ознакомиться со страницей вопросов. Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством по вкладу.
Спонсорство
Дорогой замечательный человек,
Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько фастфуда, сколько я могу справиться, было бы здорово получить признание от сообщества за то, на что я потратил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Может быть, я смогу оставить свою работу и заниматься открытым исходным кодом на полный день.
С уважением,
Брайан Залевский
Партнеры
Ниже вы найдете список услуг, которые мы используем и которые предлагают специальные условия для регистрации на их الخدمات по нашим специальным ссылкам:
Лицензия
Авторские права © 2020-2021 Megabyte LLC. Этот проект лицензирован под MIT.
Ensures Snap is installed and properly configured on Linux systems
ansible-galaxy install ProfessorManhattan/ansible-snapd