shelly_firmware: Initial version of role
This commit is contained in:
parent
31d00d0b9d
commit
bf10bc5c6c
3 changed files with 55 additions and 0 deletions
|
@ -16,3 +16,4 @@
|
||||||
- nginx
|
- nginx
|
||||||
- role: nginx_site
|
- role: nginx_site
|
||||||
nginx_site_name: iot.foo.sh
|
nginx_site_name: iot.foo.sh
|
||||||
|
- shelly_firmware
|
||||||
|
|
26
roles/shelly_firmware/files/download-shelly-firmware.sh
Normal file
26
roles/shelly_firmware/files/download-shelly-firmware.sh
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
|
||||||
|
cd /srv/web/iot.foo.sh/shelly
|
||||||
|
|
||||||
|
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
|
||||||
|
|
||||||
|
URL="http://archive.shelly-tools.de/"
|
||||||
|
|
||||||
|
for _prod in $(curl -sSf "${URL}/archive.php" | jq -r '.[].type') ; do
|
||||||
|
_ver="$(curl -sSf "${URL}/archive.php?type=${_prod}" | jq -r \
|
||||||
|
'max_by(.version[1:] | split(".") | map(try tonumber catch 0)) .version')"
|
||||||
|
_name="$(curl -sSf "${URL}/archive.php?type=${_prod}" | jq -r \
|
||||||
|
'limit(1; .[].file)')"
|
||||||
|
if [ ! -f "${_prod}.${_ver}.zip" ]; then
|
||||||
|
echo "New firmware for ${_prod} (version ${_ver})"
|
||||||
|
curl -sSf -o "${_prod}.${_ver}.zip" "${URL}/version/${_ver}/${_name}"
|
||||||
|
if [ -h "$_name" ]; then
|
||||||
|
rm -f "$_name"
|
||||||
|
fi
|
||||||
|
ln -s "${_prod}.${_ver}.zip" "$_name"
|
||||||
|
fi
|
||||||
|
done
|
28
roles/shelly_firmware/tasks/main.yml
Normal file
28
roles/shelly_firmware/tasks/main.yml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
- name: Install dependencies
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: jq
|
||||||
|
state: installed
|
||||||
|
|
||||||
|
- name: Create download directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /srv/web/iot.foo.sh/shelly
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: "{{ ansible_wheel }}"
|
||||||
|
|
||||||
|
- name: Install download script
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /usr/local/bin/download-shelly-firmware
|
||||||
|
src: download-shelly-firmware.sh
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: "{{ ansible_wheel }}"
|
||||||
|
|
||||||
|
- name: Install cron job
|
||||||
|
ansible.builtin.cron:
|
||||||
|
name: download-shelly-firmware
|
||||||
|
job: /usr/local/bin/download-shelly-firmware
|
||||||
|
hour: "05"
|
||||||
|
minute: 20
|
Loading…
Add table
Reference in a new issue