routeros_firmware: Initial version of role

This commit is contained in:
Timo Makinen 2024-02-10 17:34:31 +00:00
parent c91568cd7e
commit 2eb65f713f
3 changed files with 80 additions and 0 deletions

View file

@ -31,6 +31,7 @@
- sssd
- mkhomedir
- tftp
- routeros_firmware
tasks:
- name: Enable UDP rsyslog server

View file

@ -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/.*<a href="\(.*routeros-[0-9\.]*-arm\.npk\)">.*/\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>.*<td>SHA256<\/td><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"

View file

@ -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"