我正在构建的 Ubuntu 映像上有两个网络接口 - eth0 和 eth1。我想从该图像创建云实例。对于它创建的每个云实例,每个实例都将具有这两个网络接口。然而,要求是,接口分别重命名为interface0和interface1。如何在实例启动时使用 cloud-init 进行配置?
答案1
cloud-init 的文档在本节中显示了以下示例 -网络配置版本 2:
# all cards on second PCI bus
match:
name: enp2*
# fixed MAC address
match:
macaddress: 11:22:33:AA:BB:FF
# first card of driver ``ixgbe``
match:
driver: ixgbe
name: en*s0
只要匹配特定于单个设备,您就可以使用set-name:
来定义您想要的接口名称。
set-name: <(scalar)>
当匹配路径或 MAC 等独特属性时,或者带有诸如“永远只有一个 wifi 设备”之类的附加假设时,可以编写匹配规则,以便它们仅匹配一台设备。然后,可以使用此属性为该设备指定一个比 udev 的 ifnames 中的默认名称更具体/理想/更好的名称。任何满足匹配规则的附加设备将无法重命名并保留原始内核名称(并且 dmesg 将显示错误)。
例如:
$ cat /etc/cloud/cloud.cfg.d/custom-networking.cfg
network:
version: 2
ethernets:
interface0:
match:
mac_address: "52:54:00:12:34:00"
set-name: interface0
addresses:
- 192.168.1.10/255.255.255.0
gateway4: 192.168.1.254