首页 > 解决方案 > 定义节点。调整正则表达式以排除某些节点

问题描述

我正在 puppet 中进行节点定义。在正则表达式方面需要一点帮助。目前这是我正在使用的

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

我希望 puppet 不要使用具有01aor的证书运行其目录01b。如下图所示。

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

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

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

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

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

标签: rubypuppet

解决方案


这样的事情应该可以解决问题:

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

正则表达式图

这仍然允许通用正则表达式[0-9][1-9][a-z],但排除01a和预先01b(使用(?!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(我认为这是您的意图),但也排除了20, 30, ...90这可能不是您的意图。


推荐阅读