如何向yaml中的特定键添加多个值?尼普兰相关

问题描述

我正在尝试在 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 的特定工具,可以轻松地在该范围内添加地址。任何帮助将不胜感激。

解决方法

要从 shell 脚本追加,似乎可以使用最新版本的 yq

我可以按如下方式附加到它:

$ yq e '.network.ethernets.ens3.addresses += "127.0.0.1/32"' myyaml.yml 
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: no
      addresses: [155.128.134.198/23,'2002:18f0:b009:f84:5200:03ff:fdf7:d0c2/64',127.0.0.1/32]
      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

请注意,这不会更新实际文件,您可以将该输出通过管道传输到新文件,也可以使用 -i 标志就地更新它。