From 9b3daae6502d019d33597fb7ad3766c3b0f4468b Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 28 Aug 2021 02:21:52 +0200 Subject: add generic group for ups monitoring --- inventory/group_vars/chaos-at-home-ups/vars.yml | 12 ++ inventory/group_vars/chaos-at-home/network.yml | 1 + inventory/group_vars/ele-ups/vars.yml | 156 +---------------------- inventory/group_vars/ups/vars.yml | 161 ++++++++++++++++++++++++ inventory/hosts.ini | 9 ++ 5 files changed, 186 insertions(+), 153 deletions(-) create mode 100644 inventory/group_vars/chaos-at-home-ups/vars.yml create mode 100644 inventory/group_vars/ups/vars.yml (limited to 'inventory') diff --git a/inventory/group_vars/chaos-at-home-ups/vars.yml b/inventory/group_vars/chaos-at-home-ups/vars.yml new file mode 100644 index 00000000..3bdcd7ea --- /dev/null +++ b/inventory/group_vars/chaos-at-home-ups/vars.yml @@ -0,0 +1,12 @@ +--- +network_mgmt_zone: "{{ network_zones.mgmt }}" + +ups_name: "{{ inventory_hostname | regex_replace('^ch-ups-(.*)$', '\\1') }}" +ups_query_sources: + - "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets['ch-mon']) | ipaddr('address') }}" + - "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets['ch-equinox-ws']) | ipaddr('address') }}" + + +prometheus_scrape_endpoint: "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets[inventory_hostname]) | ipaddr('address') }}:9100" +prometheus_exporters_default: + - openwrt diff --git a/inventory/group_vars/chaos-at-home/network.yml b/inventory/group_vars/chaos-at-home/network.yml index c6102d7f..904c6b23 100644 --- a/inventory/group_vars/chaos-at-home/network.yml +++ b/inventory/group_vars/chaos-at-home/network.yml @@ -88,6 +88,7 @@ network_zones: ch-helene: 101 # IPMI ch-sw0: 200 ch-sw1: 201 + ch-ups-test: 210 ch-ap0: 220 ch-ap1: 221 ch-mon: 230 diff --git a/inventory/group_vars/ele-ups/vars.yml b/inventory/group_vars/ele-ups/vars.yml index 8b420c61..b9e1eaba 100644 --- a/inventory/group_vars/ele-ups/vars.yml +++ b/inventory/group_vars/ele-ups/vars.yml @@ -5,159 +5,9 @@ ssh_users_root: network_mgmt_zone: "{{ network_zones.mgmt }}" - -install_playbook: openwrt - -openwrt_variant: openwrt -openwrt_release: 19.07.7 -openwrt_arch: ramips -openwrt_target: mt7620 -openwrt_profile: ravpower_wd03 -openwrt_output_image_suffixes: - - "{{ openwrt_profile }}-squashfs-sysupgrade.bin" - -openwrt_packages_remove: - - ppp - - ppp-mod-pppoe - - dnsmasq - - firewall - - odhcpd - - odhcpd-ipv6only -openwrt_packages_add: - - haveged - - htop - - ip - - less - - nano - - tcpdump-mini - - usbutils - - kmod-usb-storage - - nut-server - - nut-driver-usbhid-ups - - nut-upsc - - nut-upscmd - - prometheus-node-exporter-lua - - prometheus-node-exporter-lua-nat_traffic - - prometheus-node-exporter-lua-netstat - - prometheus-node-exporter-lua-openwrt - - -openwrt_mixin: - /etc/dropbear/authorized_keys: - content: "{{ ssh_keys_root | join('\n') }}\n" - - /etc/htoprc: - file: "{{ global_files_dir }}/common/htoprc" - - /usr/bin/powercycle-ups: - mode: "0755" - content: | - #!/bin/sh - - UPS="{{ inventory_hostname | regex_replace('^ele-ups-(.*)$', '\1') }}" - - upscmd -u admin -p secret "$UPS" load.off - sleep 5 - upscmd -u admin -p secret "$UPS" load.on - - /etc/rc.d/S22network-fw: - link: "../init.d/network-fw" - - /etc/rc.d/K92network-fw: - link: "../init.d/network-fw" - - /etc/init.d/network-fw: - mode: "0755" - content: | - #!/bin/sh /etc/rc.common - - START=22 - STOP=91 - - start() { - iptables -A INPUT -p tcp --dport 3493 -s 127.0.0.0/8 -j ACCEPT - iptables -A INPUT -p tcp --dport 3493 -s {{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets['ele-mon']) | ipaddr('address') }} -j ACCEPT - iptables -A INPUT -p tcp --dport 3493 -j DROP - } - - stop() { - iptables -D INPUT -p tcp --dport 3493 -j DROP - iptables -D INPUT -p tcp --dport 3493 -s {{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets['ele-mon']) | ipaddr('address') }} -j ACCEPT - iptables -D INPUT -p tcp --dport 3493 -s 127.0.0.0/8 -j ACCEPT - } - - -openwrt_uci: - system: - - name: system - options: - hostname: '{{ host_name }}' - timezone: 'CET-1CEST,M3.5.0,M10.5.0/3' - ttylogin: '0' - log_size: '64' - urandom_seed: '0' - - - name: timeserver 'ntp' - options: - enabled: '1' - enable_server: '0' - server: - - '0.lede.pool.ntp.org' - - '1.lede.pool.ntp.org' - - '2.lede.pool.ntp.org' - - '3.lede.pool.ntp.org' - - dropbear: - - name: dropbear - options: - PasswordAuth: 'off' - RootPasswordAuth: 'off' - Port: '{{ ansible_port }}' - - network: - - name: globals 'globals' - options: - ula_prefix: "fc{{ '%02x:%04x:%04x' | format((255 | random(seed=inventory_hostname + '0')), (65535 | random(seed=inventory_hostname + '1')), (65535 | random(seed=inventory_hostname + '2'))) }}::/48" - - - name: interface 'loopback' - options: - ifname: lo - proto: static - ipaddr: 127.0.0.1 - netmask: 255.0.0.0 - - - name: interface 'mgmt' - options: - ifname: "eth0" - proto: static - ipaddr: "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets[inventory_hostname]) | ipaddr('address') }}" - netmask: "{{ network_mgmt_zone.prefix | ipaddr('netmask') }}" - accept_ra: 0 - - prometheus-node-exporter-lua: - - name: prometheus-node-exporter-lua 'main' - options: - listen_interface: 'mgmt' - listen_ipv6: '0' - listen_port: '9100' - - nut_server: - - name: listen_address - options: - address: 0.0.0.0 - - - name: "driver '{{ inventory_hostname | regex_replace('^ele-ups-(.*)$', '\\1') }}'" - options: - driver: usbhid-ups - port: auto - enable_usb_serial: 0 - - - name: user - options: - username: admin - password: secret - instcmd: - - ALL +ups_name: "{{ inventory_hostname | regex_replace('^ele-ups-(.*)$', '\\1') }}" +ups_query_sources: + - "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets['ele-mon']) | ipaddr('address') }}" prometheus_scrape_endpoint: "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets[inventory_hostname]) | ipaddr('address') }}:9100" diff --git a/inventory/group_vars/ups/vars.yml b/inventory/group_vars/ups/vars.yml new file mode 100644 index 00000000..c1b58dbc --- /dev/null +++ b/inventory/group_vars/ups/vars.yml @@ -0,0 +1,161 @@ +--- +ups_name: "ups" +ups_query_sources: [] + + +install_playbook: openwrt + +openwrt_variant: openwrt +openwrt_release: 19.07.7 +openwrt_arch: ramips +openwrt_target: mt7620 +openwrt_profile: ravpower_wd03 +openwrt_output_image_suffixes: + - "{{ openwrt_profile }}-squashfs-sysupgrade.bin" + +openwrt_packages_remove: + - ppp + - ppp-mod-pppoe + - dnsmasq + - firewall + - odhcpd + - odhcpd-ipv6only +openwrt_packages_add: + - haveged + - htop + - ip + - less + - nano + - tcpdump-mini + - usbutils + - kmod-usb-storage + - nut-server + - nut-driver-usbhid-ups + - nut-upsc + - nut-upscmd + - prometheus-node-exporter-lua + - prometheus-node-exporter-lua-nat_traffic + - prometheus-node-exporter-lua-netstat + - prometheus-node-exporter-lua-openwrt + + +openwrt_mixin: + /etc/dropbear/authorized_keys: + content: "{{ ssh_keys_root | join('\n') }}\n" + + /etc/htoprc: + file: "{{ global_files_dir }}/common/htoprc" + + /usr/bin/powercycle-ups: + mode: "0755" + content: | + #!/bin/sh + + UPS="{{ ups_name }}" + + upscmd -u admin -p secret "$UPS" load.off + sleep 5 + upscmd -u admin -p secret "$UPS" load.on + + /etc/rc.d/S22network-fw: + link: "../init.d/network-fw" + + /etc/rc.d/K92network-fw: + link: "../init.d/network-fw" + + /etc/init.d/network-fw: + mode: "0755" + content: | + #!/bin/sh /etc/rc.common + + START=22 + STOP=91 + + start() { + iptables -A INPUT -p tcp --dport 3493 -s 127.0.0.0/8 -j ACCEPT + {% for src in ups_query_sources %} + iptables -A INPUT -p tcp --dport 3493 -s {{ src }} -j ACCEPT + {% endfor %} + iptables -A INPUT -p tcp --dport 3493 -j DROP + } + + stop() { + iptables -D INPUT -p tcp --dport 3493 -j DROP + {% for src in ups_query_sources %} + iptables -D INPUT -p tcp --dport 3493 -s {{ src }} -j ACCEPT + {% endfor %} + iptables -D INPUT -p tcp --dport 3493 -s 127.0.0.0/8 -j ACCEPT + } + + +openwrt_uci: + system: + - name: system + options: + hostname: '{{ host_name }}' + timezone: 'CET-1CEST,M3.5.0,M10.5.0/3' + ttylogin: '0' + log_size: '64' + urandom_seed: '0' + + - name: timeserver 'ntp' + options: + enabled: '1' + enable_server: '0' + server: + - '0.lede.pool.ntp.org' + - '1.lede.pool.ntp.org' + - '2.lede.pool.ntp.org' + - '3.lede.pool.ntp.org' + + dropbear: + - name: dropbear + options: + PasswordAuth: 'off' + RootPasswordAuth: 'off' + Port: '{{ ansible_port }}' + + network: + - name: globals 'globals' + options: + ula_prefix: "fc{{ '%02x:%04x:%04x' | format((255 | random(seed=inventory_hostname + '0')), (65535 | random(seed=inventory_hostname + '1')), (65535 | random(seed=inventory_hostname + '2'))) }}::/48" + + - name: interface 'loopback' + options: + ifname: lo + proto: static + ipaddr: 127.0.0.1 + netmask: 255.0.0.0 + + - name: interface 'mgmt' + options: + ifname: "eth0" + proto: static + ipaddr: "{{ network_mgmt_zone.prefix | ipaddr(network_mgmt_zone.offsets[inventory_hostname]) | ipaddr('address') }}" + netmask: "{{ network_mgmt_zone.prefix | ipaddr('netmask') }}" + accept_ra: 0 + + prometheus-node-exporter-lua: + - name: prometheus-node-exporter-lua 'main' + options: + listen_interface: 'mgmt' + listen_ipv6: '0' + listen_port: '9100' + + nut_server: + - name: listen_address + options: + address: 0.0.0.0 + + - name: "driver '{{ ups_name }}'" + options: + driver: usbhid-ups + port: auto + enable_usb_serial: 0 + + - name: user + options: + username: admin + password: secret + instcmd: + - ALL diff --git a/inventory/hosts.ini b/inventory/hosts.ini index 1abf21a0..f583db48 100644 --- a/inventory/hosts.ini +++ b/inventory/hosts.ini @@ -55,6 +55,7 @@ mz-chaos-at-home chaos-at-home-switches chaos-at-home-ap chaos-at-home-sensors +chaos-at-home-ups [mz-chaos-at-home] mz-router ansible_host=chmz-router @@ -77,6 +78,9 @@ ch-sensors0 host_name=sensors0 ch-sensors1 host_name=sensors1 ch-sensors2 host_name=sensors2 +[chaos-at-home-ups] +ch-ups-test host_name=ups-test + [chaos-at-home-vpn-extern] ch-router ch-pan @@ -407,6 +411,7 @@ ch-router ch-testvm-prometheus [promzone-chaos-at-home:children] chaos-at-home-ap +chaos-at-home-ups promzone-chaos-at-home-server [promzone-elevate-festival-server] @@ -471,6 +476,10 @@ scaleway-kernel ele-ap chaos-at-home-ap +[ups:children] +ele-ups +chaos-at-home-ups + [dolmetsch-raspi:children] ele-dolmetsch-raspi -- cgit v1.2.3