Skip to content

上下文数据

配置上下文数据(简称为 "config contexts")是一项强大的功能,它使用户能够根据某些特征定义适用于设备和虚拟机的任意数据。例如,假设您希望为分配给特定区域内站点的设备定义 syslog 服务器。在 NetBox 中,您可以创建一个包含此数据的配置上下文实例,并将其应用于所需区域。现在,通过 API 获取的该区域内的所有设备都将包含此数据。

{
    "syslog-servers": [
        "192.168.43.107",
        "192.168.48.112"
    ]
}

上下文数据可以被远程 API 客户端使用,也可以原生地用于渲染配置模板

根据以下标准计算对象的配置上下文:

类型 设备 虚拟机
区域
站点组
站点
位置
设备类型
角色
平台
集群类型
集群组
集群
租户组
租户
标签

配置上下文中可以存储任何数据,只要它可以用 JSON 表达。

层次化渲染

尽管上下文数据本身就很方便,但其真正的力量源自于它能够通过多个实例合并和重写的能力。例如,也许您需要在区域内为特定设备角色定义_不同的_ syslog 服务器。您可以创建一个具有适当数据和更高权重的第二个配置上下文,并将其应用于所需的角色。这将覆盖适用于整个区域的较低权重数据。如您所想,这种灵活性可以满足许多复杂的用例。

例如,假设我们想为区域内的所有设备指定一组 syslog 和 NTP 服务器。我们可以创建一个配置上下文实例,权重为 1000,分配给该区域,包含以下 JSON 数据:

{
    "ntp-servers": [
        "172.16.10.22",
        "172.16.10.33"
    ],
    "syslog-servers": [
        "172.16.9.100",
        "172.16.9.101"
    ]
}

但假设该区域内的一个特定站点出现问题,阻止了流量到达区域 syslog 服务器。那里的设备需要使用本地 syslog 服务器,而不是上面定义的两个。我们将为该站点单独创建一个权重为 2000 的第二个配置上下文,并包含以下数据:

{
    "syslog-servers": [
        "192.168.43.107"
    ]
}

当为该站点的设备渲染上下文数据时,第二个、权重更高的数据将覆盖第一个,结果如下:

{
    "ntp-servers": [
        "172.16.10.22",
        "172.16.10.33"
    ],
    "syslog-servers": [
        "192.168.43.107"
    ]
}

高权重上下文中的数据将覆盖低权重上下文中的冲突数据,同时保留低权重上下文中非冲突部分(NTP 服务器列表)。

本地上下文数据

设备和虚拟机也可以定义本地上下文数据。这个本地上下文将始终优先于适用于设备/VM 的任何单独配置上下文对象。这在我们需要针对特定对象调出数据中的特定偏差时非常有用。

警告

如果您发现自己经常为许多单个设备或虚拟机定义本地上下文数据,自定义字段可能提供更有效的解决方案。