From 4beade5465b95b6fa1482a74e9d8e3c67c4a067e Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Sun, 31 Oct 2021 14:25:59 -0500 Subject: [PATCH] r/nut: Add role for Network UPS Tools The *nut* role installs and configures Network UPS Tools. --- roles/nut/defaults/main.yml | 5 +++ roles/nut/handlers/main.yml | 4 ++ roles/nut/tasks/main.yml | 62 +++++++++++++++++++++++++++++++ roles/nut/templates/ups.conf.j2 | 8 ++++ roles/nut/templates/upsd.conf.j2 | 1 + roles/nut/templates/upsd.users.j2 | 8 ++++ 6 files changed, 88 insertions(+) create mode 100644 roles/nut/defaults/main.yml create mode 100644 roles/nut/handlers/main.yml create mode 100644 roles/nut/tasks/main.yml create mode 100644 roles/nut/templates/ups.conf.j2 create mode 100644 roles/nut/templates/upsd.conf.j2 create mode 100644 roles/nut/templates/upsd.users.j2 diff --git a/roles/nut/defaults/main.yml b/roles/nut/defaults/main.yml new file mode 100644 index 0000000..27f5b07 --- /dev/null +++ b/roles/nut/defaults/main.yml @@ -0,0 +1,5 @@ +nut_users: [] +nut_listen: + address: '::' + port: 3493 +nut_ups: [] diff --git a/roles/nut/handlers/main.yml b/roles/nut/handlers/main.yml new file mode 100644 index 0000000..437ad5e --- /dev/null +++ b/roles/nut/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart nut + service: + name: nut-server + state: restarted diff --git a/roles/nut/tasks/main.yml b/roles/nut/tasks/main.yml new file mode 100644 index 0000000..38dcde4 --- /dev/null +++ b/roles/nut/tasks/main.yml @@ -0,0 +1,62 @@ +- name: ensure nut is installed + package: + name: nut + state: present + tags: + - install + +- name: ensure upsd is configured + template: + src: upsd.conf.j2 + dest: /etc/ups/upsd.conf + owner: root + group: nut + mode: 'o=rw,g=r,o=' + notify: + - restart nut + tags: + - nut-config +- name: ensure ups is configured + template: + src: ups.conf.j2 + dest: /etc/ups/ups.conf + owner: root + group: nut + mode: 'o=rw,g=r,o=' + notify: + - restart nut + tags: + - nut-config +- name: ensure upsd users are configured + template: + src: upsd.users.j2 + dest: /etc/ups/upsd.users + owner: root + group: nut + mode: 'o=rw,g=r,o=' + notify: + - restart nut + tags: + - nut-users + +- name: ensure nut starts at boot + service: + name: nut-server + enabled: true + tags: + - service +- name: ensure nut is running + service: + name: nut-server + state: started + tags: + - service + +- name: ensure firewall is configured for nut + firewalld: + port: '{{ nut_listen.port }}/tcp' + state: enabled + immediate: true + permanent: true + tags: + - firewalld diff --git a/roles/nut/templates/ups.conf.j2 b/roles/nut/templates/ups.conf.j2 new file mode 100644 index 0000000..daf042b --- /dev/null +++ b/roles/nut/templates/ups.conf.j2 @@ -0,0 +1,8 @@ +{% for name, settings in nut_ups.items() %} +[{{ name }}] +{% for setting in settings %} +{% for key, value in setting|dictsort %} +{{ key }} = "{{ value }}" +{% endfor %} +{% endfor %} +{% endfor %} diff --git a/roles/nut/templates/upsd.conf.j2 b/roles/nut/templates/upsd.conf.j2 new file mode 100644 index 0000000..d9b8d09 --- /dev/null +++ b/roles/nut/templates/upsd.conf.j2 @@ -0,0 +1 @@ +LISTEN {{ nut_listen.address }} {{ nut_listen.port }} diff --git a/roles/nut/templates/upsd.users.j2 b/roles/nut/templates/upsd.users.j2 new file mode 100644 index 0000000..ae3ebda --- /dev/null +++ b/roles/nut/templates/upsd.users.j2 @@ -0,0 +1,8 @@ +{% for username, settings in nut_users.items() %} +[{{ username }}] +{% for setting in settings %} +{% for key, value in setting|dictsort %} +{{ key }} = {{ value }} +{% endfor %} +{% endfor %} +{% endfor %}