Let’s indicate that a file should be parsed with the py renderer with #!py at the top.
In that case, the file is interpreted as a Python file. Salt looks for a run function, runs it, and treats the return value as the state.
When running, __grains__ and __pillar__ contain the grain and pillar data.
As an example, you can implement the same logic with a py renderer.
#!py
def run():
if __grains__['os'] == 'CentOS':
package_name = 'python-devel'
elif __grains__['os'] == 'Debian':
package_name = 'python-dev'
else:
raise ValueError("Unrecognized operating
system",
__grains__['os'])
return { package_name: dict(pkg='installed') }
Since the py renderer is not a combination of two unrelated parsers, mistakes are sometimes easier to diagnose.
You get the following if you reintroduce the bug from the first version.
#!py
def run():
if __grains__['os'] == 'CentOS':
package_name = 'python-devel'
elif __grains__['os'] == 'Debian':
package_name = 'python-dev'
return { package_name: dict(pkg='installed') }
In this case, the result is a NameError pinpointing the erroneous line and the missing name.
The trade-off is that reading it in YAML form is more straightforward if the configuration is big and mostly static.
0 comments:
Post a Comment