summaryrefslogtreecommitdiff
path: root/roles/network
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2021-01-23 23:18:18 +0100
committerChristian Pointner <equinox@spreadspace.org>2021-01-23 23:18:18 +0100
commit5894254e71c909850e96c872b61ca6a9db85e0ac (patch)
treea1f1b1cf7fa33e7ce8d4c92c80c3c48e85b1d909 /roles/network
parentmove wireguard to network sub-dir (diff)
add wakeonlan role
Diffstat (limited to 'roles/network')
-rw-r--r--roles/network/wakeonlan/defaults/main.yml13
-rw-r--r--roles/network/wakeonlan/handlers/main.yml5
-rw-r--r--roles/network/wakeonlan/tasks/main.yml13
-rw-r--r--roles/network/wakeonlan/templates/wakeonlan.service.j225
4 files changed, 56 insertions, 0 deletions
diff --git a/roles/network/wakeonlan/defaults/main.yml b/roles/network/wakeonlan/defaults/main.yml
new file mode 100644
index 00000000..1a03f030
--- /dev/null
+++ b/roles/network/wakeonlan/defaults/main.yml
@@ -0,0 +1,13 @@
+---
+wakeonlan_interfaces:
+ - "{{ network.primary.name }}"
+
+wakeonlan_options:
+# - p ## Wake on PHY activity
+# - u ## Wake on unicast messages
+# - m ## Wake on multicast messages
+# - b ## Wake on broadcast messages
+# - a ## Wake on ARP
+ - g ## Wake on MagicPacket™
+# - s ## Enable SecureOn™ password for MagicPacket™
+# - f ## Wake on filter(s)
diff --git a/roles/network/wakeonlan/handlers/main.yml b/roles/network/wakeonlan/handlers/main.yml
new file mode 100644
index 00000000..77b049a5
--- /dev/null
+++ b/roles/network/wakeonlan/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart wakeonlan
+ systemd:
+ name: wakeonlan.service
+ state: restarted
diff --git a/roles/network/wakeonlan/tasks/main.yml b/roles/network/wakeonlan/tasks/main.yml
new file mode 100644
index 00000000..5270ba4e
--- /dev/null
+++ b/roles/network/wakeonlan/tasks/main.yml
@@ -0,0 +1,13 @@
+---
+- name: install systemd service unit
+ template:
+ src: wakeonlan.service.j2
+ dest: /etc/systemd/system/wakeonlan.service
+ notify: restart wakeonlan
+
+- name: make sure wakeonlan service unit is enabled and started
+ systemd:
+ name: wakeonlan.service
+ daemon_reload: yes
+ state: started
+ enabled: yes
diff --git a/roles/network/wakeonlan/templates/wakeonlan.service.j2 b/roles/network/wakeonlan/templates/wakeonlan.service.j2
new file mode 100644
index 00000000..c163e8a7
--- /dev/null
+++ b/roles/network/wakeonlan/templates/wakeonlan.service.j2
@@ -0,0 +1,25 @@
+[Unit]
+Description=Configure Wake-on-LAN
+
+[Service]
+Type=oneshot
+{% for interface in wakeonlan_interfaces %}
+ExecStart=/usr/sbin/ethtool -s {{ interface }} wol {{ wakeonlan_options | join }}
+{% endfor %}
+{% for interface in wakeonlan_interfaces %}
+ExecStop=/usr/sbin/ethtool -s {{ interface }} wol d
+{% endfor %}
+RemainAfterExit=yes
+NoNewPrivileges=yes
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=strict
+ProtectHome=yes
+ProtectKernelTunables=yes
+ProtectControlGroups=yes
+RestrictRealtime=yes
+RestrictAddressFamilies=AF_UNIX AF_NETLINK
+SystemCallArchitectures=native
+
+[Install]
+WantedBy=basic.target