-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use cmd_check to validate config files #37
base: master
Are you sure you want to change the base?
Conversation
Work on Travis’s issue. |
Ready to merge :) |
@@ -0,0 +1 @@ | |||
{{ content | tojson(indent=2) }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tojson()
Jinja filter is only available in the latest stable Salt 2018.3.3 release.
However, the built-in serializer has generic JSON filter for ages and also supports indentation. Simply like this:
content|json(indent=2)
This is more portable and reliable. As far as I understand upstream Jinja docs, the tojson()
filter is designed to be used within HTML pages, and it could do some weird things when you need "raw" JSON file.
@@ -1,18 +1,24 @@ | |||
{%- from slspath + '/map.jinja' import consul with context -%} | |||
|
|||
consul-config: | |||
file.serialize: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMHO, manage structured files with file.managed
is really bad (I tried this myself and it always requires many hacks and checks).
I'd suggest to keep using file.serialize
, and create another check for syntax specifically.
We could use mod_run_check_cmd, but just realized it doesn't work as expected (it's used as an internal function for file.managed
. It's already exposed externally, however it doesn't met functions requirements, where it doesn't have name,changes
in returned output).
So till fixing that (mostly I will make a PR for that), let's use cmd.run
with unless
:
consul-config-validate:
cmd.run:
- name: /usr/local/bin/consul validate /etc/consul.d/config.json
- unless: /usr/local/bin/consul validate /etc/consul.d/config.json
- require:
- file: consul-config
The unless
clue, will prevent running the command when it has a valid syntax. So it avoids any extra noise.
In some case I have an error in config file. State detect a change, restart services, restart fail. It's bad.
Soo, I rewrite the resources to use
file.managed
allowedcmd_check
.It works as:
Last think. I have an issue with whitespace and end of some lines :/
It's not a problem for Consul or Saltstack. Just for me when I open file with my vi doesn't like them and show me a "warning" (like my brain in fact :p ).