Cloud-Init 设置网络

Cloud-Init 是一个用于初始化云实例的实用工具,它能够自动配置网络、存储设备、SSH 访问密钥等,本文将详细介绍如何使用 Cloud-Init 进行网络配置,包括 IPv4 和 IPv6 的静态及动态设置。
基本概念
在 Cloud-Init 中,网络配置通过元数据文件(metadata file)或用户数据脚本(user-data script)实现,元数据文件包含键值对列表,这些键值对定义了网络接口的配置。
配置文件结构
Cloud-Init 支持多种网络配置文件格式,其中最常见的是通过#cloud-config 指令指定配置内容,以下是一个典型的网络配置文件示例:
#cloud-config
network:
version: 2
ethernets:
ens33:
dhcp4: true
optional: true
route-metric: -100IPv4 配置
4.1 DHCP
使用 DHCP 动态获取 IP 地址是最常见的网络配置方式之一,如下所示:
#cloud-config
network:
version: 2
ethernets:
ens33:
dhcp4: true4.2 静态 IPv4 地址
如果需要为实例分配静态 IP 地址,可以按如下方式配置:

#cloud-config
network:
version: 2
ethernets:
ens33:
addresses:
192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
routes:
to: 0.0.0.0/0
via: 192.168.1.1
metric: 100IPv6 配置
5.1 DHCPv6
使用 DHCPv6 获取 IPv6 地址的配置如下:
#cloud-config
network:
version: 2
ethernets:
ens33:
dhcp6: true5.2 静态 IPv6 地址
静态 IPv6 地址的配置如下:
#cloud-config
network:
version: 2
ethernets:
ens33:
addresses:
2001:db8::1/64
gateway6: fe80::1
nameservers:
addresses: [2001:4860:4860::8888, 2001:4860:4860::8844]综合配置示例
一个同时包含 IPv4 和 IPv6 的综合配置示例如下:
#cloud-config
network:
version: 2
ethernets:
ens33:
dhcp4: true
dhcp6: true
optional: true
route-metric: -100常见问题与解答
7.1 如何禁用 Cloud-Init 接管网络配置?
如果希望在创建新实例时 Cloud-Init 不修改网络设置,可以在/etc/cloud/cloud.cfg 中添加以下内容:

network: config: disabled
或者,在/etc/cloud/cloud.cfg.d/ 目录下创建一个名为99_disable_network_config.cfg 的文件,并写入以下内容:
network: {all_addrs: []}然后以 root 用户执行以下命令:
rm -rf /var/lib/cloud/
7.2 如何保留主机名和语言设置?
如果希望 Cloud-Init 在初始化过程中保留主机名和语言设置,可以在/etc/cloud/cloud.cfg 中增加以下内容:
preserve_hostname: true
并且删除或注释掉任何涉及set_hostname、update_hostname 或locale 的配置行。
以上内容就是解答有关“cloud init 设置网络”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/44844.html<
