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 %}