diff --git a/playbooks/nms.yml b/playbooks/nms.yml
index e20f3e3..7979440 100644
--- a/playbooks/nms.yml
+++ b/playbooks/nms.yml
@@ -31,6 +31,7 @@
- sssd
- mkhomedir
- tftp
+ - routeros_firmware
tasks:
- name: Enable UDP rsyslog server
diff --git a/roles/routeros_firmware/files/download-routeros-firmware.sh b/roles/routeros_firmware/files/download-routeros-firmware.sh
new file mode 100644
index 0000000..4347526
--- /dev/null
+++ b/roles/routeros_firmware/files/download-routeros-firmware.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+set -eu
+
+umask 022
+
+cd /srv/web/oob.foo.sh/routeros
+
+verbose=false
+if [ "${1:-}" = "-v" ]; then
+ verbose=true
+ shift
+fi
+
+if [ $# -gt 0 ]; then
+ echo "Usage: $(basename "$0") [-v]" 1>&2
+ exit 1
+fi
+
+packageurl="$(curl -sSf "https://mikrotik.com/download" | \
+ sed -n 's/.*.*/\1/p')"
+packagename="$(basename "$packageurl")"
+if [ -f "$packagename" ]; then
+ "$verbose" && echo "Already up to date"
+ exit 0
+fi
+
+checksum="$(curl -sSf "https://mikrotik.com/download" | \
+ sed -n 's/.*routeros-[0-9\.]*-arm\.npk<\/td>.*
SHA256<\/td> | \(.*\)<\/td>.*/\1/p')"
+
+echo "Downloading new package '${packagename}'"
+trap 'rm -f -- "${packagename}.tmp"' EXIT
+curl -sSf -o "${packagename}.tmp" "$packageurl"
+
+if [ "$(sha256sum "${packagename}.tmp" | cut -d " " -f 1)" != "$checksum" ]; then
+ echo "ERR: Checksum check failed, not saving package" 1>&2
+ exit 1
+fi
+
+mv "${packagename}.tmp" "$packagename"
diff --git a/roles/routeros_firmware/tasks/main.yml b/roles/routeros_firmware/tasks/main.yml
new file mode 100644
index 0000000..a9fbc97
--- /dev/null
+++ b/roles/routeros_firmware/tasks/main.yml
@@ -0,0 +1,39 @@
+---
+- name: Create download directory
+ ansible.builtin.file:
+ path: /srv/web/oob.foo.sh/routeros
+ state: directory
+ mode: 0755
+ owner: root
+ group: "{{ ansible_wheel }}"
+
+- name: Install README.md
+ ansible.builtin.copy:
+ dest: /srv/web/oob.foo.sh/routeros/README.md
+ content: |
+ ## Update
+
+ ```
+ /system package update print
+ /tool fetch url=https://oob.foo.sh/routeros/routeros-7.13.4-arm.npk
+ /system reboot
+ /system package update print
+ ```
+ mode: 0644
+ owner: root
+ group: "{{ ansible_wheel }}"
+
+- name: Install download script
+ ansible.builtin.copy:
+ dest: /usr/local/bin/download-routeros-firmware
+ src: download-routeros-firmware.sh
+ mode: 0755
+ owner: root
+ group: "{{ ansible_wheel }}"
+
+- name: Install cron job
+ ansible.builtin.cron:
+ name: download-routeros-firmware
+ job: /usr/local/bin/download-routeros-firmware
+ hour: "05"
+ minute: "25"
|