megabyte-labs.snapd

Snap - 一款 Linux 包管理器

Megabyte Labs 制作



一个确保在 Linux 系统上安装和正确配置 Snap 的 Ansible 角色


目录

概述

这个仓库是一个 Ansible 角色,确保 Snap 在 Linux 系统上安装和正确配置。 Snap 是由 Canonical 开发的一种软件打包和部署系统,适用于使用 Linux 内核的操作系统。称为 snaps 的包以及用于使用它们的工具 snapd,适用于多种 Linux 发行版,并允许上游软件开发人员直接将他们的应用程序分发给用户。 Snap 是独立的应用程序,在沙箱中运行,具有受控访问主机系统的权限。

特点

确保 Snap 被安装:

  • 在 Linux 系统上安装 Snap
  • 确保 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 剧本中(并自定义设置),请继续阅读下面的内容。

支持的操作系统

下面的表格显示我们已在其上测试此角色的操作系统。它是通过位于 molecule/ 文件夹中的 Ansible Molecule 测试自动生成的。CI 逻辑会自动处理 Windows、macOS、Ubuntu、Fedora、CentOS、Debian 和 Archlinux 的测试。如果您的操作系统未列出,但属于我们测试的系统之一(例如,Debian 系列系统或 RedHat 系列系统),那么该角色仍然可能有效。

OS 系列 OS 版本 状态 幂等性 测试于

什么是幂等性? 幂等性意味着如果您连续运行这个角色两次,则第二次运行时系统不会发生任何变化。

我们花了很多时间来完善我们的 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

或者,如果您是 Ansible 新手并且不介意同时安装开发要求,可以简单地运行 bash .config/scripts/start.sh。这是确保一切正常工作的简单方法。

Python

虽然在标准机器上运行此剧本所需的唯一工具是 Ansible(一个 Python 包),但我们还包括了一些其他 Python 依赖项,这些依赖项用于特定用例和开发。以下表格详细列出了这些包:

包名 描述 是否必需
ansible 一个可以远程配置计算机的配置管理系统
✔️
docker 使Ansible能够提供Docker容器的功能
✔️
python-vagrant 用于提供Vagrant虚拟机的必要组件
✔️
pywinrm 用于提供使用WinRM的Windows机器的必要组件
✔️
ansible-lint 用于 Ansible 文件的 lint 工具
ansibler 自定义工具,用于生成高级文档(例如,它生成兼容性图以及其他一些图表)
black Python 文件自动格式化工具,以防项目使用 Python 测试脚本
blocklint 一种 lint 工具,防止某些单词进入代码库
flake8 Python linter,用于报告 Python 语法和风格错误
mod-ansible-autodoc ansible-autodoc 的自定义分支,允许我们基于角色 YAML 文件中的注释自动生成文档
molecule Ansible 的测试框架
molecule-docker Molecule 插件,用于提供 Docker 容器
molecule-vagrant Molecule 插件,用于提供 Vagrant 虚拟机
pre-commit-hooks 实用的工具套件,用于 linting
proselint 用于生成英语语言改进的 lint 工具(用于改进文档)
yamllint 用于 YAML 文件的 lint 工具,确保正确的语法和样式

Galaxy 角色

尽管我们的大多数角色没有依赖项,但在某些情况下,必须安装另一个角色才能继续执行逻辑。在剧本的开头,将会运行 meta/main.yml 中列出的 Ansible Galaxy 角色依赖项。这些依赖项配置为每个剧本只运行一次。如果您在剧本中包含多个有共同依赖项的角色,则在第一次运行后将跳过依赖项的安装。有些角色还直接从任务文件中使用辅助角色,这有助于保持我们的 主剧本 (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.tomlrequirements.yml 中概述的要求到您的剧本根目录中的相应文件,以便在将来使用时只需安装一组要求。请注意,pyproject.toml 中的依赖项可以移动到更传统的 requirements.txt 中,如果那是您当前用于追踪 Python 依赖的方式。

实际示例

您可以在我们的主剧本(又称 Gas Station)中找到一个包含此角色的剧本示例。该剧本是学习如何使用 Ansible 的绝佳示例。它还包含许多经过深思熟虑的构建工具,更高级的 Ansible 用户可以欣赏。而对 Ansible 不太关心的人也可以从中受益,因为它几乎可以将您的计算机(和网络)变成终极开发环境。总之,这是一个出色的项目,开发人员应该了解它!

贡献

欢迎贡献、问题和特性请求!请随时查看 问题页面。如果您想贡献,请查看 贡献指南

赞助支持

亲爱的优秀的人,

我出于热爱创建开源项目。虽然我有工作、住房和自己能承受的快餐,但如果社区能因我投入了大量时间和金钱的事情而表示赞赏,那就太好了。请考虑支持我!谁知道呢?也许我会辞掉工作,全职发布开源项目。

由衷感谢,

Brian Zalewski

Open Collective 赞助商 GitHub 赞助商 Patreon

附属信息

以下是我们利用的一些服务的列表,这些服务通过我们的特殊链接注册可以获得特别奖励:

MailChimp DigitalOcean 推荐徽章

许可证

版权所有 © 2020-2021 Megabyte LLC。本项目采用 MIT 许可证。

安装
ansible-galaxy install megabyte-labs.snapd
许可证
other
下载
3.5k
拥有者
Free open-source developer tools for managing massive amounts of code