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

时间:2019-10-28 18:37:52

标签: ruby puppet

我正在用up制作节点定义。需要很少的正则表达式帮助。目前,这就是我正在使用的

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

我希望木偶不要使用具有01a01b的证书来运行其目录。如下图所示。

(我不希望Puppet在具有这些证书的计算机上运行)

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

(木偶需要在具有这些证书的计算机上运行)

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

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

1 个答案:

答案 0 :(得分:2)

类似这样的事情应该可以解决:

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

regex graph

这仍然允许使用通用正则表达式[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可能不是您的意图。