Puppet 使用端口例如 1.2.3.4:5678验证查找 IP 地址

问题描述

我正在 Puppet 清单中作为顶级范围变量执行查找,以查找将包含串联 IP 地址和端口的值,例如 1.2.3.4:5678。

我知道我可以使用以下任一 IP 地址或端口进行验证:

Stdlib::IP::Address::V4 $server = lookup(profiles::something::server)

Stdlib::Port $server = lookup(profiles::something::server)

但是我想同时验证两者,例如

String[[Stdlib::IP::Address::V4]:[Stdlib::Port]] $server = lookup(profiles::something::server)

但是,除了在清单中拆分它们并执行内联验证之外,我找不到其他方法

有没有办法对顶级范围变量进行组合查找验证?

解决方法

您展示的用于验证值形式的方法依赖于在 puppetlabs-stdlib 模块中定义的数据类型别名。如果那里没有适合您想要的别名,那么您可以随时为您想要的内容编写完整的 type expression。在这种情况下,我还建议在您控制的某个模块中为它定义一个 type alias,因为合适的别名比复杂的类型表达式更容易理解。您可以查看 stdlib 中定义的类型别名以帮助您继续前进。