Определение узлов. Настройте регулярные выражения, чтобы исключить определенные узлы - PullRequest
0 голосов
/ 28 октября 2019

Я делаю определения узлов в марионетке. Нужна небольшая помощь с регулярным выражением. В настоящее время это то, что я использую

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 должен работать намашины с этими сертификатами)

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

Надеюсь, мое объяснение теперь понятно. Возможно, есть простое решение для этого, но не могу понять.

1 Ответ

2 голосов
/ 29 октября 2019

Что-то вроде этого должно сработать:

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

regex graph

Это все еще допускает обобщенное регулярное выражение [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, что не может быть вашим намерением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...