3 ms·
Without being a comparison the other tool(s), I would make a point regarding to your blocker, which actually it shouldn't be a blocker. Many folks miss one imp
by mirceaulinic 9y ago
Without being a comparison the other tool(s), I would make a point regarding to your blocker, which actually it shouldn't be a blocker.
Many folks miss one important point: Salt's renderer interface is also pluggable. There are quite a few choices for you: https://docs.saltstack.com/en/latest/ref/renderers/index.html#full-list-of-renderers https://docs.saltstack.com/en/latest/ref/renderers/index.htm.... For data representation you can choose between: yaml, yamlex, json, json5, hjson, or even pure python. Nothing else can be more flexible than pure python. But, of course, this approach also has its drawbacks. Anyway, if none of them suits your needs for non-terrible DSL, you can even implement your own DSL, your own renderer.
All you have to do is adding few characters at the top of your pillar, i.e. #!json or #!json5 or even #!lobster.
So where is the limitation again? In reading documentation I guess.
- lobster_johnson 9y agoThe Python interface is the only one that addresses my criticisms, but do people actually use it? Is it well supported, stable and so on? The YAML is the default, and it's what you find examples and support for (Stack Overflow and so on). I get the impression that many of the renderers are not "official", in the sense that they're maintained by other people. If Salt only provided a Python API, the situation would be different. As such, it's a case of too much choice, and not enough standardization. There are no less than three competing Python renderers.
- mirceaulinic 9y agoI'm not entirely sure I understand you. Do you find it bad that there are several options? I had the feeling that YAML is the one that addresses your criticism ("I like YAML as configuration file language, but it's terrible for DSLs."). And yes, I do use the python one and I am very happy with it. > The YAML is the default, and it's what you find examples and support for (Stack Overflow and so on) Pro tip: if they are YAML on StackOverflow, you don't have to copy-paste them, but more rather translate them to the representation that satisfy your high requirements.
- whiteinge 9y agoIt's a common misconception to read too much into Renderers. Salt's State system takes a data structure as input so each of the Renderer modules is really just what flavor of "data structure generator" you like most. The so-called highstate data structure is very stable and well documented so Renders rarely need changes: https://docs.saltstack.com/en/latest/ref/states/highstate.html https://docs.saltstack.com/en/latest/ref/states/highstate.ht... The regular Python interface you mentioned is my favorite too, when YAML/Jinja aren't a good fit, and people do use it. It's 40 LOC and has only needed 32 commits in the six years it's been around: https://github.com/saltstack/salt/blob/5406a7cdd4729/salt/renderers/py.py#L100-L140 https://github.com/saltstack/salt/blob/5406a7cdd4729/salt/re... The takeaway is YAML/Jinja generate exactly the same result as the Python Renderer so use what you like.