2016-04-19 3 views
0

Ich bin mir nicht sicher, ob ich das richtig formuliere, aber ich hatte gehofft, ich könnte ein Beispiel für die Filterung bekommen, indem ich auf Kornschlüssel passe und dann filtere Werte (oder Unterschlüssel: Werte). Meine Sorge ist, dass ein weiteres Korn irgendwann in der Zukunft hinzugefügt werden könnte und von filter_by falsch aufgenommen werden könnte. Beispiel unten ...SaltStack - grains.filter_by, Kornschlüssel angeben und nach Subtaste filtern

Beispiel Liste der Körner:

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

Beispiel Kartendatei:

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

In diesem Beispiel vorstellen Sekundär war das zusätzliche Korn, das zu einem späteren Zeitpunkt hinzugefügt wurde. Was würde die Mapfile für Host2 aufnehmen, nachdem dieses sekundäre Korn hinzugefügt wurde? Ich weiß, dass dies nicht das beste Beispiel ist, aber dies kam beim Code-Review einiger Staaten, die ich geschrieben habe, und ich hatte keine gute Antwort darauf, wie wir Kornschlüssel ansprechen können. In diesem Fall möchte ich die Kornrolle bestimmen und die Werte innerhalb dieses Korns filtern. Wie würde ich das tun?

Antwort

0

ich vollständig dies in der Dokumentation verpasst, bis ich sie mehrmals lesen ...

Lösung ist Kornmehrwert zu schaffen, wie so filtern auf:

{% 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' 
)%}