定义节点。调整正则表达式以排除某些节点
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 不 运行 其目录中包含 01a
或 01b
的证书。就像下面显示的示例一样。
(我不希望 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]
,但排除前面的 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
这可能不是你的本意。
我正在 puppet 中定义节点。对正则表达式几乎不需要帮助。目前这就是我正在使用的
node /^[d][e][v]-\d{6}-[0-9][1-9][a|b].test-cloud.prod.puppet$/
我希望 Puppet 不 运行 其目录中包含 01a
或 01b
的证书。就像下面显示的示例一样。
(我不希望 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]
,但排除前面的 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
这可能不是你的本意。