You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Netplan的YAML配置文件中为特定键添加多个值(IPv6地址场景)

如何用yq或Bash脚本在Netplan配置中为addresses键添加新IPv6地址

问题描述

我正在Linux系统中配置IPv6地址,目前遇到的问题是不清楚如何在Netplan的YAML配置文件中为特定键添加值。以下是我的配置文件内容:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: no
      addresses: [155.128.134.198/23,'2002:18f0:b009:f84:5200:03ff:fdf7:d0c2/64']
      gateway4: 155.128.134.198
      nameservers:
        addresses: [108.61.10.10]
      routes:
        - to: 169.254.0.0/16
          via: 155.138.148.1
          metric: 100

我希望在addresses键下添加新的IPv6地址,同时保留已有的地址。请问是否可以通过yq或其他简单方法实现该操作,以便我编写bash脚本来完成?我尚未找到专门用于Netplan的可批量添加地址的工具,恳请提供相关帮助。


解决方案

当然可以用yq来轻松实现这个需求——它是专门处理YAML文件的命令行工具,非常适合编写自动化脚本。下面是具体的操作方法:

1. 安装yq(推荐v4版本)

大多数Linux发行版可以通过包管理器安装:

# Ubuntu/Debian
sudo apt update && sudo apt install yq

# RHEL/CentOS/Fedora
sudo dnf install yq

如果你的系统里是旧版yq(v3),语法会有差异,建议升级到v4版本以获得更好的数组操作支持。

2. 单个IPv6地址的添加命令

使用+=操作符可以直接向addresses数组追加新地址,同时保留原有内容。执行以下命令(替换你的配置文件路径和新IPv6地址):

sudo yq eval '.network.ethernets.ens3.addresses += ["2001:db8::1/64"]' -i /etc/netplan/00-installer-config.yaml
  • -i参数表示原地修改配置文件,无需手动重定向输出;
  • ["2001:db8::1/64"]是要添加的新地址,格式要符合YAML数组规范。

3. 批量添加多个IPv6地址

如果需要一次性添加多个地址,只需在数组中列出所有目标地址即可:

sudo yq eval '.network.ethernets.ens3.addresses += ["2001:db8::1/64", "2001:db8::2/64", "2001:db8::3/64"]' -i /etc/netplan/00-installer-config.yaml

4. 编写自动化Bash脚本

如果你需要重复执行这个操作,可以写一个简单的Bash脚本,示例如下:

#!/bin/bash

# 配置参数
NETPLAN_CONFIG="/etc/netplan/00-installer-config.yaml"
# 要添加的IPv6地址列表
NEW_IPV6_ADDRESSES=("2001:db8::1/64" "2001:db8::2/64" "2001:db8::3/64")

# 批量追加地址
sudo yq eval ".network.ethernets.ens3.addresses += ${NEW_IPV6_ADDRESSES[*]@Q}" -i "$NETPLAN_CONFIG"

# 验证配置(推荐先执行这个,避免配置错误导致断网)
echo "正在验证Netplan配置..."
sudo netplan try

# 如果验证通过,取消下面的注释以应用配置
# echo "应用Netplan配置..."
# sudo netplan apply
  • ${NEW_IPV6_ADDRESSES[*]@Q}会自动将数组转换为符合YAML语法的引号包裹格式,避免地址中的特殊字符引发错误;
  • netplan try会临时应用配置并等待用户确认,15秒内无操作会自动回滚,非常适合远程服务器操作。

5. 验证结果

修改完成后,可以查看配置文件确认地址是否添加成功:

cat /etc/netplan/00-installer-config.yaml

或者直接查看网络接口的地址:

ip -6 addr show ens3

内容的提问来源于stack exchange,提问作者Michal Žídek

火山引擎 最新活动