summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-07-02 15:43:37 +0200
committerAhmed Abdelhalim <[email protected]>2026-07-02 15:43:37 +0200
commit8494d425eebb714bc152a9487d90f5b32bcca96e (patch)
treea28fc68fb6bd46503e3fa5d59270978a03192bb7 /roles
parent66720caa5a108c69e0f561b0b3b0d200733dae15 (diff)
Add role to install ethtool (Wake-on-LAN)
Diffstat (limited to 'roles')
-rw-r--r--roles/ethtool/defaults/main.yml2
-rw-r--r--roles/ethtool/handlers/main.yml5
-rw-r--r--roles/ethtool/meta/argument_specs.yml8
-rw-r--r--roles/ethtool/meta/main.yml17
-rw-r--r--roles/ethtool/tasks/main.yml24
-rw-r--r--roles/ethtool/templates/wol.service.j211
6 files changed, 67 insertions, 0 deletions
diff --git a/roles/ethtool/defaults/main.yml b/roles/ethtool/defaults/main.yml
new file mode 100644
index 00000000..61cfd43e
--- /dev/null
+++ b/roles/ethtool/defaults/main.yml
@@ -0,0 +1,2 @@
+---
+ethtool_wol_interface: "eth0"
diff --git a/roles/ethtool/handlers/main.yml b/roles/ethtool/handlers/main.yml
new file mode 100644
index 00000000..3360d709
--- /dev/null
+++ b/roles/ethtool/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: "Reload systemd"
+ become: true
+ ansible.builtin.systemd_service:
+ daemon_reload: true
diff --git a/roles/ethtool/meta/argument_specs.yml b/roles/ethtool/meta/argument_specs.yml
new file mode 100644
index 00000000..8f6ce206
--- /dev/null
+++ b/roles/ethtool/meta/argument_specs.yml
@@ -0,0 +1,8 @@
+---
+argument_specs:
+ main:
+ options:
+ ethtool_wol_interface:
+ type: "str"
+ description: "Network interface to enable Wake-on-LAN on"
+ default: "eth0"
diff --git a/roles/ethtool/meta/main.yml b/roles/ethtool/meta/main.yml
new file mode 100644
index 00000000..de7f32a3
--- /dev/null
+++ b/roles/ethtool/meta/main.yml
@@ -0,0 +1,17 @@
+---
+dependencies: []
+galaxy_info:
+ author: "a14m"
+ description: "Install ethtool and enable Wake-on-LAN via systemd service"
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
+ - name: "Ubuntu"
+ versions:
+ - "noble"
+ - name: "Debian"
+ versions:
+ - "bookworm"
diff --git a/roles/ethtool/tasks/main.yml b/roles/ethtool/tasks/main.yml
new file mode 100644
index 00000000..9d2dac60
--- /dev/null
+++ b/roles/ethtool/tasks/main.yml
@@ -0,0 +1,24 @@
+---
+- name: "Install ethtool"
+ become: true
+ ansible.builtin.package:
+ name: "ethtool"
+ state: "present"
+
+- name: "Deploy WoL systemd service"
+ become: true
+ ansible.builtin.template:
+ src: "wol.service.j2"
+ dest: "/etc/systemd/system/wol@{{ ethtool_wol_interface }}.service"
+ owner: "root"
+ group: "root"
+ mode: "0644"
+ notify: "Reload systemd"
+
+- name: "Enable WoL service"
+ become: true
+ ansible.builtin.systemd_service:
+ name: "wol@{{ ethtool_wol_interface }}.service"
+ enabled: true
+ state: "started"
+ daemon_reload: true
diff --git a/roles/ethtool/templates/wol.service.j2 b/roles/ethtool/templates/wol.service.j2
new file mode 100644
index 00000000..0d11f2af
--- /dev/null
+++ b/roles/ethtool/templates/wol.service.j2
@@ -0,0 +1,11 @@
+[Unit]
+Description=Enable Wake-on-LAN on {{ ethtool_wol_interface }}
+After=network.target
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/ethtool -s {{ ethtool_wol_interface }} wol g
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target