微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Packer为 VMware Workstation Pro自动化构建Ubuntu 20.04 虚拟机映像

Ubuntu 20.04 带来了新的安装程序, 用 subiquity 取代了以前的Debian安装。这意味着以前用于自动/无人值守安装的任何方法都不再有效,需要更换。

使用Packer成功地做到了这一点。但首先,这是一个工作的无人值守配置:

ubuntu-2004.json

{
  "builders": [
    {
      "name": "ubuntu-2004","type": "vmware-iso","guest_os_type": "ubuntu-64","headless": false,"iso_url": "file://F:\\ubuntu-20.04.2-live-server-amd64.iso","iso_checksum": "aba7e22636c435c5008f5d059ae69a62","ssh_username": "vagrant","ssh_password": "vagrant","ssh_timeout":"60h","ssh_handshake_attempts": "20000","http_directory": "http","memory": 1024,"boot_wait": "5s","boot_command": [
        "<enter><enter><f6><esc><wait> ","autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/","<enter>"
      ]
    }
  ],"provisioners": [
    {
      "type": "shell","inline": ["ls /"]
    }
  ]
}

user-data

#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: librenms
    password: $6$p7TmlCd1WIljlXVE$B8Yr1f6eVvQrlE5qsk3dp6heo1YveUdXBzXwYY5bhMlbcyl9rvZtH0AkW1ntiE2jgYA8GEQ4vx/lsjxYNwHuK.
    username: vagrant
  storage:
    layout:
      name: lvm
  update: true
  ssh:
    install-server: true
    allow-pw: true

我们还需要空白文件Meta-data放置在 Packer HTTP 服务器可用的目录中。

虽然这使用VMware 构建器,但其他构建器中也存在相关的配置选项。.

除了基本配置之外,还有四件事需要解决

  • 确保有足够的内存来运行安装程序。512MB 导致内核崩溃,1GB 工作正常,
  • 安装SSH服务器,
  • 允许SSH 握手失败更长时间,因为安装程序有它自己的 SSH 服务器,这将导致“等待 SSH...”连接到错误的东西并且构建失败,
  • 确保在安装完成后我们有一个持久的 IP 地址。

执行此操作的典型方法是将使用的 DHCP 标识符恢复为设备的 MAC 地址,而不是现在常见的设备标识符这与我之前在 Debian Buster (10) 中看到的问题相同,我在这里重用了 late 命令来设置 DHCP 客户端来执行此操作。我们似乎也需要使用netplan来做到这一点,以可靠地获得 Packer 期望的相同 IP。

有趣的是,subiquity 似乎不支持dhcp-identifier,所以需要我们在安装完成后自己做。我们需要引用该sed行,否则我们在加载cloud-init配置时会陷入陷阱 ,因为它似乎认为它是 YAML

这需要相当长的时间才能正常工作。为了解决一路上的问题,我:

  • 当安装程序失败或卡住时,使用 Alt + F2 来获得一个工作控制台,
  • 阅读输出/var/log/installer/subiquity-debug.log以获得正确的网络配置,
  • ...并/var/log/syslog调试围绕 late-commands.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐