Saltstack Official Syslog-NG Formula
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.2KB

  1. <% syslog_config = pillar.get('syslog_ng', {}) %>\
  2. <%!
  3. def rule_builder(rule):
  4. if rule is None:
  5. return ''
  6. elif type(rule) is bool:
  7. return {True: 'yes', False: 'no'}[rule]
  8. elif type(rule) is int:
  9. return rule
  10. elif type(rule) is list:
  11. return ' '.join([rule_builder(v) for v in rule])
  12. elif type(rule) is dict:
  13. return ' '.join([ '%s(%s)' % (k,rule_builder(v)) for k, v in rule.items()])
  14. else:
  15. if rule[0] == '=':
  16. return rule[1:]
  17. return '"%s"' % rule
  18. %>\
  19. @version: ${ syslog_config.get('version', '3.3') }
  20. @module tfjson
  21. % for inc in syslog_config.get('include', []):
  22. @include ${ rule_builder(inc) }
  23. % endfor
  24. options {
  25. % for rule in syslog_config.get('options', []):
  26. ${ rule_builder(rule) };
  27. % endfor
  28. };
  29. % for obj in ('source', 'destination', 'filter', 'parser', 'rewrite', 'template'):
  30. % for params in syslog_config.get(obj, []):
  31. % for name, rules in params.items():
  32. ${ obj } ${ name } {
  33. % for rule in rules:
  34. ${ rule_builder(rule) };
  35. % endfor
  36. };
  37. % endfor
  38. % endfor
  39. % endfor
  40. % for loggers in syslog_config.get('log', []):
  41. log {
  42. % for rule in loggers:
  43. ${ rule_builder(rule) };
  44. % endfor
  45. };
  46. % endfor