如何使用 cloud-init 来应用 netplan?

如何使用 cloud-init 来应用 netplan?

手动编辑后/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg,如何通知cloud-init更新/etc/netplan/50-cloud-init.yaml?换句话说,手动更新两个文件是没有意义的;重新应用 netplan 的标准流程是什么?

答案1

正如 Lismatro 所说,一旦您创建了 netplan 配置,就生成它然后应用它。

在您的 cloud-init 配置中,首先告诉 netplan 使用自定义配置:

write_files:
- path: /etc/cloud/cloud.cfg.d/99-custom-networking.cfg
  permissions: '0644'
  content: |
    network: {config: disabled}

然后创建 netplan 配置(仍在 cloud-init 配置中)。这是一个简单示例。查找更多使用 netplan 配置网络接口的方法这里

- path: /etc/netplan/my-new-config.yaml
  permissions: '0644'
  content: |
    network:
        version: 2
        ethernets:
            ens3:
                dhcp4: true

最后告诉 cloud-init 使用它(再次,仍然在 cloud-init 配置中):

runcmd:
 - rm /etc/netplan/50-cloud-init.yaml
 - netplan generate
 - netplan apply

答案2

cloud-init 配置文件不是首次启动后更改网络配置的地方,因为网络配置只会由 cloud-init 生成一次(首次启动时)。

但是,您可以直接更改 netplan 配置文件。然后以 root 身份使用以下命令来启用您的更改。它们将在启动过程中保留。

netplan generate
netplan apply

只有命令“cloud-init clean”会重新生成 50...yaml 文件,但我认为您不希望这样。这会重置所有内容,包括主机名和机器 ID(导致新的最大地址和新的 dhcp ip 地址)。

相关内容