总目录
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), 让我们了解你的镜像!

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