Netplan:未知键“

Netplan:未知键“

我正在尝试使用共享viatableYAML 锚点语法添加多个静态路由。这是一个示例custom.yaml文件:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp5s0:
      dhcp4: false
      accept-ra: false
      addresses:
        - 192.0.2.2/24
      gateway: 192.0.2.1
      nameservers:
        addresses:
          [8.8.8.8, 1.1.1.1]
      routing-policy:
        - to: 0.0.0.0/0
          table: 2 # custom
          priority: 10
      routes:
        - &custom-route
          to: 198.18.0.0/24
          via: 192.0.2.1
          table: 2
        - <<: *custom-route
          to: 198.18.2.0/24
        - <<: *custom-route
          to: 198.18.4.0/24

虽然它不是我的实际配置文件,但据我所知,它应该演示并重现我所面临的问题。

运行时netplan apply,这是我得到的输出:

/etc/netplan/custom.yaml:48:11: Error in network definition: unknown key '<<'
        - <<: *custom-route
          ^

有什么方法可以实现这个目标吗?

以防万一,我的服务器集群包含 Ubuntu 20.04 和 22.04 系统。如果解决方案适用于这两个版本,那就最好了。

答案1

正确确认netplan不支持合并键。

这意味着需要一个不太花哨的配置:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp5s0:
      dhcp4: false
      accept-ra: false
      addresses:
        - 192.0.2.2/24
      gateway: 192.0.2.1
      nameservers:
        addresses:
          [8.8.8.8, 1.1.1.1]
      routing-policy:
        - to: 0.0.0.0/0
          table: 2 # custom
          priority: 10
      routes:
        - to: 198.18.0.0/24
          via: 192.0.2.1
          table: 2
        - to: 198.18.2.0/24
          via: 192.0.2.1
          table: 2
        - to: 198.18.4.0/24
          via: 192.0.2.1
          table: 2

来自您引用的页面

警告:支持合并键

在特定 YAML 版本中支持(YAML 版本不同/每个版本都不同):

  • 自 1.0 版起,锚点和别名就是 YAML 的一部分,也是 YAML 1.1 和当前 YAML 1.2 的一部分。

  • 合并键只是 YAML 1.1 的一部分,该版本已弃用,而不是 YAML 1.2 或 1.0 的一部分。这意味着合并键天生就被弃用了。从技术上讲,这在规范中是不可能的,这也许可以解释为什么 YAML™ 版本 1.1 的合并键语言独立类型是一个仅有单个实例的工作草案。它似乎属于 YAML 1.1 版本的通用可用性。

  • 根据 Flyx 在 Stackoverflow 上的一篇文章以及 YAML RFC(Ingy döt Net、Tinita)的说法,合并键在 YAML 1.1 中已被弃用。

  • 2017 年的 SO 建议在即将发布的 YAML 版本中用“更好的东西”替换合并键(最佳猜测是 YAML 1.3 将于 2020 年 11 月发布),RFC 索引中逐字逐句地注明“删除合并键”(Brian Ingerson / Ingy döt Net),以使删除成为新的 RFC。

这就是合并密钥不适用于 Netplan 的原因。

相关内容