定义节点。调整正则表达式以排除某些节点

Defining Nodes. Adjust Regex to exclude certain nodes

我正在 puppet 中定义节点。对正则表达式几乎不需要帮助。目前这就是我正在使用的

node /^[d][e][v]-\d{6}-[0-9][1-9][a|b].test-cloud.prod.puppet$/

我希望 Puppet 不 运行 其目录中包含 01a01b 的证书。就像下面显示的示例一样。

(我不希望 Puppet 在拥有这些证书的机器上 运行)

dev-123456-01a.test-cloud.prod.puppet dev-999999-01b.test-cloud.prod.puppet dev-000001-01a.test-cloud.prod.puppet

(Puppet 需要在具有这些证书的机器上 运行s)

dev-123456-02a.test-cloud.prod.puppet dev-999999-11b.test-cloud.prod.puppet dev-000001-03a.test-cloud.prod.puppet

我希望我的解释现在已经清楚了。可能有一个简单的解决方案,但无法弄清楚。

像这样应该可以解决问题:

/^dev-\d{6}-(?!01[ab])[0-9][1-9][a-z]\.test-cloud\.prod\.puppet$/

这仍然允许使用通用正则表达式 [0-9][1-9][a-z],但排除前面的 01a01b(使用 (?!01[ab]))。这样做的原因是为了保持正则表达式相对干净。替代方案是 (01[c-z]|(0[2-9]|[1-9][1-9])[a-z]) 而不是 (?!01[ab])[0-9][1-9][a-z] ,后者更难维护。

请注意,[0-9][1-9] 确实排除了 00(我相信这是您的意图),但也排除了 2030、... 90 这可能不是你的本意。