Packer 打包 Ubuntu 镜像
介绍如何用 packer 打包 ubuntu 基础镜像。
开始
- 创建 ubuntu iso 文件
- cloud-init 语法参考
- boot_command 内核参数参考
- ubuntu 自动安装官方文档
- packer 使用案例
- https://imagineer.in/blog/packer-build-for-ubuntu-20-04/
- https://blog.csdn.net/allway2/article/details/122105390
- https://www.jianshu.com/p/9526ce94fc47
- https://www.molnar-peter.hu/en/ubuntu-jammy-netinstall-pxe.html
- https://www.puppeteers.net/blog/building-ubuntu-20-04-qemu-images-with-packer/ 查看
- packer 官方文档
- packer 疑问
- packer ubuntu 模板
- https://github.com/chef/bento/tree/master/packer_templates/ubuntu
- https://github.com/aerialls/madalynn-packer/blob/master/ubuntu-20.04/ubuntu.json
- https://github.com/kalenarndt/packer-vsphere-cloud-init/blob/master/templates/ubuntu/20/linux-ubuntu-server.pkr.hcl
- https://github.com/it-pappa/Packer-vsphere/blob/main/Ubuntu.20.04/auto.pkrvars.hcl
- https://github.com/vmware-samples/packer-examples-for-vsphere/blob/main/builds/linux/ubuntu/20-04-lts/data/user-data.pkrtpl.hcl
- https://github.com/hashicorp/packer/issues/11275
- https://github.com/brantleyp1/ubuntu-autoinstall
- FAQ
- Post-processor failed: write /tmp/packer3748823707/box.img: copy_file_range: no space left on device
- 解决办法:
- 将 export TMPDIR=/home/echoxu/workfiles 添加到 ~/.bashrc
- 解决办法:
- 有没有 user-data 模板
- 先手动安装 ubuntu ,默认安装后在 /var/log/installer/autoinstall-user-data
- 如何生成密码
- mkpasswd --method=SHA-512 --rounds=4096
- windows 中使用 packer 时报错:“ could not find a supported CD ISO creation command (the supported commands are: xorriso, mkisofs, hdiutil, oscdimg)”
- 需要在 win11 中安装 oscdimg,去 https://learn.microsoft.com/zh-tw/windows-hardware/get-started/adk-install 选择 “下載適用于 Windows 11 22H2 版的 ADK” 下载 windows ADK 然后安装,安装中只选择“部署工具”即可,因为它包含了我们需要的 oscdimg
- 将
D:\Program Files\windowsADK\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg
添加进环境变量中,不然无法识别到 oscdimg 程序
- 怎么确定 ubuntu iso 以及 user-data 没有问题
- 用你的 ubuntu iso 以及 user-data 按照 https://ubuntu.com/server/docs/install/autoinstall-quickstart 的教程实现一遍
- 如果上面创建的 kvm 虚拟机能够开机表示, ubuntu 以及 user-data 都没有问题
- 我使用 packer 通过在 boot_command 参数往内核里添加 http 里的 user-data 等文件时还是不能安装,无法解决,也懒得试了
- 可使用 packer 往当前 iso 里添加 user-data 等文件,参考: https://discuss.hashicorp.com/t/packer-ubuntu-20-04-autoinstall-via-cd-drive/18999/7
- 打包后的 ubuntu2204.1 在 virtualbox 不能启动,报错:kernel panic not syncing : Attempted to kill the idle task
- cpu 核数必须设置为 2
- 必须启动 主板--- I/O AIPC
- 上面的配置项可通过 Vagrantfile 来配置.
- 参考链接
- Post-processor failed: write /tmp/packer3748823707/box.img: copy_file_range: no space left on device