上下文数据
配置上下文数据(简称为 "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 的任何单独配置上下文对象。这在我们需要针对特定对象调出数据中的特定偏差时非常有用。
警告
如果您发现自己经常为许多单个设备或虚拟机定义本地上下文数据,自定义字段可能提供更有效的解决方案。