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
|
||||
- role: nginx_site
|
||||
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