2025年Multipass中文文档-使用Packer打包Multipass镜像

Multipass中文文档-使用Packer打包Multipass镜像总目录 1 概览 2 教程 3 使用指引 3 1 安装 Multipass 基于 Linux 基于 macOS 基于 Windows 3 2 管理实例 创建实例 修改实例 使用实例 使用实例命令别名 与实例共享数据 移除实例 3 3 管理 Multipass 设置驱动 使用 Multipass 服务授权代理

大家好,我是讯享网,很高兴认识大家。

总目录

1. 概览

2. 教程

3. 使用指引

    3.1 安装Multipass - 基于Linux / 基于macOS / 基于Windows

    3.2 管理实例 - 创建实例 / 修改实例 / 使用实例 / 使用实例命令别名 / 与实例共享数据 / 移除实例

    3.3 管理Multipass - 设置驱动 / 使用Multipass服务授权代理 / 远程使用Multipass / 提高挂载性能 / 使用Packer打包Multipass镜像 👈 / 设置图像界面 / 使用不同的macOS终端 / 配置Multipass外部储存位置

    3.4 问题排查 - 连接日志 / 网络问题处理


如何使用Packer打包Multipass镜像

Packer是一个可以让你(重新)打包镜像以在不同环境下运行的实用程序. Multipass也可以运行那些镜像, 只需要满足一条件(意即, 镜像必须在虚拟机启动, 并且云端启动(cloud-init)需要可用.

内容:

  • 基础
  • 定制镜像
  • 解析过程
    • 云端启动
    • 清理
  • 后续步骤

基础

最简单的方式是从现有的Ubuntu云镜像(Ubuntu Cloud image)启动, 然后是一些基础的项目设置(你可以点击文件名看具体内容, meta-data是特意留空的):

|- cloud-data | |- meta-data | |- user-data |---- template.json 1个目录, 3份文件 

讯享网

user-data
template.json

你需要安装QEMU(例如sudo apt install qemu), 可以从此运行:

讯享网$ packer build template.json $ multipass launch file://$PWD/output-qemu/packer-qemu --disk 5G ... Launched: tolerant-hammerhead $ multipass shell tolerant-hammerhead ... ubuntu@tolearant-hammerhead ~:$ 

定制镜像

现在上面步骤起作用了, 使用multipass delete --purge tolerant-hammerhead删除测试实例, 然后在template.json文件中编辑下面部分:

 { 
    "type": "shell", "inline": ["echo Your steps go here."] }, 

任何你在这所在都会影响到最终镜像. 你可以安装包, 配置服务, 做任何你可以在运行中系统上可做的事情. 有可能需要sudo(无需密码)处理任何需要管理权限的事务, 或者你可以将下面这些加到过程中以有权限执行完整脚本:

讯享网 "execute_command": "sudo sh -c '{ 
   { .Vars }} { 
   { .Path }}'", 

为了让镜像对让人也有用, 你可能需要"普遍化"镜像, 以使它可以在其他机器上也能平稳运行, 例如其他网络, 甚至是在不同的虚拟机上. 这是template.json文件中最后一个词条在设置过程中所做的事.


解析过程

长话短说, Packer使用下载好的镜像启动虚拟机, 然后在运行中的系统上运行所有设置过程.


讯享网


云端启动

Ubuntu云端镜像被默认设置为仅允许基于密钥的SSH登录. Packer的qemu builder仅支持密码授权, 所以我们在镜像打包过程中, 使用cloud-init预设一个带有简单密码的packer用户. 这些是通过JSON模板文件中下面这部分完成的:

 "http_directory": "cloud-data", "qemuargs": [ ["-smbios", "type=1,serial=ds=nocloud-net;instance-id=packer;seedfrom=http://{ 
   { .HTTPIP }}:{ 
   { .HTTPPort }}/"] ], 

这让Packer通过HTTP服务cloud-data目录, 然后cloud-init通过NoCloud数据源(Nocloud datasource)消费它. 参考cloud-init文档以理解user-data词条的意思.


清理

为了让Multipass能够消费此镜像, cloud-init需要去执行另一套指令, 所以需要重置. 镜像中的Packer用户需要被移除, 并且其他修改会被恢复(例如SSH密码授权). 这些是模板中设置过程的最后一步, 也不需要被解释.

你所作修改也有可能需要一些清理, 你可以挂载qemu镜像, 然后使用Meld工具比较这两个树(trees), 看看是否所有修改确实都是有意而为.

译者注: trees应被理解为git中的历史记录树


后续步骤

前往Packer文档学习关于QEMU编辑器, 其他设置过程和相关的配置, 和其他可能派上用场的内容. 可选方案, 你可以扩展user-data到其他cloud-init目录以扩充你的镜像.

请访问我们的讨论空间(our discourse space), 让我们了解你的镜像!


原文链接

小讯
上一篇 2025-01-10 08:30
下一篇 2025-02-24 19:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/22543.html