Browse Source

Icinga2: Do ping check + DNS lookup for wireless backbone links.

Signed-off-by: Maximilian Wilhelm <max@rfc2324.org>
Maximilian Wilhelm 6 years ago
parent
commit
e84011e897
2 changed files with 45 additions and 0 deletions
  1. 21 0
      icinga2/init.sls
  2. 24 0
      icinga2/wbbl.conf.tmpl

+ 21 - 0
icinga2/init.sls

@@ -189,6 +189,27 @@ sudo:
   {% endfor %}
 
 
+# Create configuration for network devices
+/etc/icinga2/ffho-conf.d/net/wbbl/:
+  file.directory:
+    - makedirs: true
+    - require:
+      - pkg: icinga2
+
+  # Generate config files for every WBBL device known to pillar
+  {% for link_id, link_config in salt['pillar.get']('net:wbbl', {}).items () %}
+/etc/icinga2/ffho-conf.d/net/wbbl/{{ link_id }}.conf:
+  file.managed:
+    - source: salt://icinga2/wbbl.conf.tmpl
+    - template: jinja
+    - context:
+      link_id: {{ link_id }}
+      link_config: {{ link_config }}
+    - require:
+      - file: /etc/icinga2/ffho-conf.d/net/wbbl/
+    - watch_in:
+      - service: icinga2
+  {% endfor %}
 
 
 ################################################################################

+ 24 - 0
icinga2/wbbl.conf.tmpl

@@ -0,0 +1,24 @@
+#
+# {{ link_id }}
+#
+{%- set devices = link_config.get ('devices', {}) %}
+
+{% for device, device_config in devices.items () %}
+  {%- set fqdn = device ~ '.' ~ link_id %}
+  {%- set addresses = [] %}
+  {%- for iface, iface_config in device_config.get ('ifaces', {}).items () %}
+    {%- for ip in iface_config.get ('prefixes', []) %}
+      {%- do addresses.append (ip.split ('/')[0]) %}
+    {%- endfor %}
+  {%- endfor %}
+object Host "{{ fqdn }}" {
+	import "generic-host"
+
+	display_name = "{{ fqdn }}"
+
+	address = "{{ addresses[0] }}"
+
+	vars.os = "AirOS"
+}
+
+{%- endfor %}