2016-04-19 2 views
0

Я не уверен, правильно ли я формулирую это, но я надеялся, что смогу получить пример фильтрации, сопоставляя по зернистым клавишам, а затем фильтруя значения (или вспомогательный ключ: значения). Моя забота заключается в том, что еще одно зерно может быть добавлено некоторое время в будущем и будет неправильно выбрано filter_by. Пример ниже ...SaltStack - grains.filter_by, укажите ключ зерна и фильтр под ключ

Примера список зерен:

Host1 
    role: 
     webserver 
    secondary: 
     none 
Host2 
    role: 
     appserver1 
    secondary: 
     appserver2 
Host3 
    role: 
     appserver1 
     appserver2 
    secondary: 
     none 

Пример файл карта:

{% set java = salt['grains.filter_by']({ 
    'default': { 
     'target': '/some/default/file/path', 
    }, 
    'appserver1': { 
     'target': '/app/server1/path', 
    }, 
    'appserver2': { 
     'target': '/app/server2/path', 
    }, 
}, 
default='default' 
)%} 

В этом примере, представьте вторичное было дополнительное зерно, которое было добавлено в будущем. Что будет отображать файл карты для Host2 после добавления этого вторичного зерна? Я знаю, что это не лучший пример, но это произошло, когда код просматривал некоторые состояния, которые я написал, и у меня не было хорошего ответа о том, как мы можем ориентировать зерновые ключи. В этом случае я хотел бы нацелиться на роль зерна и фильтровать значения внутри этого зерна. Как мне это сделать?

ответ

0

я полностью пропустил это в документации, пока я не прочитал их несколько раз ...

Решение заключается в добавлении стоимости зерна для фильтрации следующим образом:

{% set java = salt['grains.filter_by']({ 
    'default': { 
     'target': '/some/default/file/path', 
    }, 
    'appserver1': { 
     'target': '/app/server1/path', 
    }, 
    'appserver2': { 
     'target': '/app/server2/path', 
    }, 
}, 
grain='role', 
default='default' 
)%} 

 Смежные вопросы

  • Нет связанных вопросов^_^