自动安装中来自 DHCP 的动态主机名

自动安装中来自 DHCP 的动态主机名

在通过 tftp 提供服务的 user_data 自动安装中,主机名字段是必需的。我使用静态映射的 dhcp 条目将机器与主机名、ip 等进行匹配。

如何让自动安装主机名在 pxe 启动时接受来自 dhcp 的值?

谢谢

答案1

我不相信有任何办法下位性使用 DHCP 提供中的主机名。但是,有很多方法early-commands可以late-commands用来做你想做的事情。

我建议的解决方案是使用user-data类似于此代码片段的自动安装文件。它将从 DHCP 租约文件中读取 DHCP 提议中的主机名,并/etc/hostname在已安装的系统上进行覆盖。

#cloud-config
autoinstall:
  # NO identity section
  #identity:
  user-data:
    users:
    - name: ubuntu
      passwd: REDACTED
      shell: /bin/bash
      lock-passwd: false
      sudo: ALL=(ALL) NOPASSWD:ALL
      groups: users
  late-commands:
    - |
      bash <<'EOF'
        source <(cat /run/systemd/netif/leases/* | grep ^HOSTNAME=)
        [[ -n "${HOSTNAME}" ]] && echo "${HOSTNAME}" > /target/etc/hostname
      EOF
      true

无论您尝试哪种方法,都需要注意以下一些问题。

  • autoinstall identity和部分user-data不能很好地共存。我倾向于使用user-data部分而不包含identity部分。由于配置主机名的唯一方法是 部分,因此identity必须使用另一种方法来配置主机名(例如late-commands)。
  • 如果没有identity部分,则下位性改变行为。生成的云初始化配置(在 中/target/etc/cloud/cloud.cfg.d/99-installer.cfg)会有所不同。不会/target/etc/hosts生成任何内容,文件将留空。可能还有其他差异。
  • 相反,如果有一个identity部分,那么提供的hostname将在多个文件中进行配置。在/target/etc/hosts并可能在其他文件中。

也可以看看

笔记

  • 我使用 Ubuntu 22.04 ( subiquity 22.04.2) 进行了测试。

相关内容