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 集合。集合及其源的链接如下所示。
示例剧本
安装依赖项后,您只需将角色添加到您的主剧本中。该角色处理 become
行为,您可以简单地将角色添加到您的剧本中,而不必担心应避免以 root 身份运行的命令:
- hosts: all
roles:
- professormanhattan.snapd
如果您将此角色整合到现有剧本中,则可以复制 pyproject.toml
和 requirements.yml
中概述的要求到您的剧本根目录中的相应文件,以便在将来使用时只需安装一组要求。请注意,pyproject.toml
中的依赖项可以移动到更传统的 requirements.txt
中,如果那是您当前用于追踪 Python 依赖的方式。
实际示例
您可以在我们的主剧本(又称 Gas Station)中找到一个包含此角色的剧本示例。该剧本是学习如何使用 Ansible 的绝佳示例。它还包含许多经过深思熟虑的构建工具,更高级的 Ansible 用户可以欣赏。而对 Ansible 不太关心的人也可以从中受益,因为它几乎可以将您的计算机(和网络)变成终极开发环境。总之,这是一个出色的项目,开发人员应该了解它!
贡献
欢迎贡献、问题和特性请求!请随时查看 问题页面。如果您想贡献,请查看 贡献指南。
赞助支持
亲爱的优秀的人,
我出于热爱创建开源项目。虽然我有工作、住房和自己能承受的快餐,但如果社区能因我投入了大量时间和金钱的事情而表示赞赏,那就太好了。请考虑支持我!谁知道呢?也许我会辞掉工作,全职发布开源项目。
由衷感谢,
Brian Zalewski
附属信息
以下是我们利用的一些服务的列表,这些服务通过我们的特殊链接注册可以获得特别奖励:

许可证
版权所有 © 2020-2021 Megabyte LLC。本项目采用 MIT 许可证。
Ensures Snap is installed and properly configured on Linux systems
ansible-galaxy install megabyte-labs.snapd