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

Rei*_*ien 7 cloud-init netplan

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

小智 4

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

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

write_files:
- path: /etc/cloud/cloud.cfg.d/99-custom-networking.cfg
  permissions: '0644'
  content: |
    network: {config: disabled}
Run Code Online (Sandbox Code Playgroud)

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

- path: /etc/netplan/my-new-config.yaml
  permissions: '0644'
  content: |
    network:
        version: 2
        ethernets:
            ens3:
                dhcp4: true
Run Code Online (Sandbox Code Playgroud)

最后告诉 cloud-init 使用它(同样,仍在 cloud-init 配置中):

runcmd:
 - rm /etc/netplan/50-cloud-init.yaml
 - netplan generate
 - netplan apply
Run Code Online (Sandbox Code Playgroud)


Lis*_*tro 2

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

不过,您可以直接更改 netplan 配置文件。然后以 root 身份使用以下命令来启用更改。它们会粘在靴子上。

netplan generate
netplan apply
Run Code Online (Sandbox Code Playgroud)

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

  • 我的 netplan 文件在顶部这样说:“ # 该文件是根据数据源提供的信息生成的。对其所做的更改不会在实例中持续存在。 # 要禁用 cloud-init 的网络配置功能,请写入一个文件 # /etc/ cloud/cloud.cfg.d/99-disable-network-config.cfg 包含以下内容: # network: {config:disabled} " 仍然可以编辑此文件吗? (13认同)