Nagios: Use helm-toolkit template renderer for config files

This updates the Nagios chart to use the helm-toolkit template
renderer snippet for generating the Nagios configuration files.
This was done to make the exposure of the configuration files
simpler for those who are more familiar with traditional Nagios
configuration files, as well as allowing for values overrides for
adding custom host names or custom object definitions to nagios
objects (as Nagios doesn't easily allow for this via environment
accessible macros).

Change-Id: I84d5c83d84d6438af5f3ab57997e80e8b1fc8312
Signed-off-by: Steve Wilkerson <sw5822@att.com>
This commit is contained in:
Steve Wilkerson 2019-06-06 09:36:28 -05:00 committed by Steve Wilkerson
parent d23e847e1f
commit d72299db4b
4 changed files with 1164 additions and 935 deletions

View File

@ -14,15 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/}} */}}
{{ define "configmap_etc._nagios_objects" }}
{{- tuple "contact" $.Values.conf.nagios.contacts | include "nagios.utils.object_definition" }}
{{- tuple "contactgroup" $.Values.conf.nagios.contactgroups | include "nagios.utils.object_definition" }}
{{- tuple "host" $.Values.conf.nagios.hosts | include "nagios.utils.object_definition" }}
{{- tuple "hostgroup" $.Values.conf.nagios.host_groups | include "nagios.utils.object_definition" }}
{{- tuple "command" $.Values.conf.nagios.commands | include "nagios.utils.object_definition" }}
{{- tuple "service" $.Values.conf.nagios.services | include "nagios.utils.object_definition" }}
{{- end }}
{{- if .Values.manifests.configmap_etc }} {{- if .Values.manifests.configmap_etc }}
{{- $envAll := . }} {{- $envAll := . }}
--- ---
@ -32,12 +23,12 @@ metadata:
name: nagios-etc name: nagios-etc
type: Opaque type: Opaque
data: data:
cgi.cfg: {{ include "nagios.utils.to_nagios_conf" .Values.conf.nagios.cgi | b64enc }}
nagios.cfg: {{ include "nagios.utils.to_nagios_conf" .Values.conf.nagios.nagios | b64enc }}
{{- if not (empty .Values.conf.nagios.query_es_clauses) }} {{- if not (empty .Values.conf.nagios.query_es_clauses) }}
query_es_clauses.json: {{ .Values.conf.nagios.query_es_clauses | toJson | b64enc }} query_es_clauses.json: {{ .Values.conf.nagios.query_es_clauses | toJson | b64enc }}
{{- end }} {{- end }}
nagios_objects.cfg: {{ include "configmap_etc._nagios_objects" $ | b64enc }} {{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.nagios.nagios.template "key" "nagios.cfg" "format" "Secret") | indent 2 }}
{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.nagios.cgi.template "key" "cgi.cfg" "format" "Secret") | indent 2 }}
{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.nagios.objects.template "key" "nagios_objects.cfg" "format" "Secret") | indent 2 }}
#NOTE(portdirect): this must be last, to work round helm ~2.7 bug. #NOTE(portdirect): this must be last, to work round helm ~2.7 bug.
{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.httpd "key" "httpd.conf" "format" "Secret") | indent 2 }} {{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.httpd "key" "httpd.conf" "format" "Secret") | indent 2 }}
{{- end }} {{- end }}

View File

@ -1,29 +0,0 @@
{{/*
Copyright 2017 The Openstack-Helm Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}
# This function defines commands, hosts, hostgroups, and services for nagios by
# consuming yaml trees to define the fields for these objects
{{- define "nagios.utils.object_definition" -}}
{{- $type := index . 0 }}
{{- $objects := index . 1 }}
{{- range $object := $objects }}
{{ range $config := $object }}
define {{ $type }} {
{{- range $key, $value := $config }}
{{ $key }} {{ $value }}
{{- end }}
}
{{end -}}
{{- end -}}
{{- end -}}

View File

@ -1,24 +0,0 @@
{{/*
Copyright 2017 The Openstack-Helm Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}
{{- define "nagios.utils.to_nagios_conf" -}}
{{- range $key, $value := . -}}
{{ if eq $key "cfg_file" }}
{{ range $file := $value -}}
{{ $key }}={{ $file }}
{{ end }}
{{- else }}
{{ $key }}={{ $value }}
{{- end }}
{{- end -}}
{{- end -}}

File diff suppressed because it is too large Load Diff