mirror of
https://github.com/vvzvlad/vestasync.git
synced 2024-12-27 04:31:01 +03:00
add update module
This commit is contained in:
parent
6b664ef4fa
commit
2ab448f036
@ -44,7 +44,7 @@ pip install -r requirements.txt
|
|||||||
### install — установка на контроллер
|
### install — установка на контроллер
|
||||||
|
|
||||||
Команда `install` выполняет подготовительные действия — устанавливает ПО, создает гит-репозитарий, устанавливает службы (подробнее в разделе "Службы").
|
Команда `install` выполняет подготовительные действия — устанавливает ПО, создает гит-репозитарий, устанавливает службы (подробнее в разделе "Службы").
|
||||||
Эту команду надо выполнять, указывая в ```device_ip``` исходный контроллер (который будет стоять в проде инсталляции) перед началом эксплуатации (если выполнять ее еще до настройки, то бонусом получим сохранение конфигов и wb-rules в гите во время разработки и ПНР). Эта команда выполняется на контроллере один раз.
|
Эту команду надо выполнять, указывая в ```device_ip``` исходный контроллер (который будет стоять в проде инсталляции) перед началом эксплуатации (если выполнять ее еще до настройки, то бонусом получим сохранение конфигов и wb-rules в гите во время разработки и ПНР). Эта команда выполняется на контроллере один раз. При повторном запуске она перезапишет файлы скриптов и сервисов, этим можно пользоваться для обновления скриптов на существующих контроллерах, если вышла новая версия Vestasync.
|
||||||
|
|
||||||
Пример запуска (запускается на локальной машине, адрес контроллера указывается в ```device_ip```):
|
Пример запуска (запускается на локальной машине, адрес контроллера указывается в ```device_ip```):
|
||||||
|
|
||||||
|
44
vestasync.py
44
vestasync.py
@ -98,31 +98,53 @@ def init_repo(c):
|
|||||||
|
|
||||||
|
|
||||||
def copy_wb_rule(c):
|
def copy_wb_rule(c):
|
||||||
c.put("./files/vestasync.js", "/mnt/data/etc/wb-rules/vestasync.js")
|
wb_rule_path = "/mnt/data/etc/wb-rules/vestasync.js"
|
||||||
|
c.run(f"rm {wb_rule_path} || true")
|
||||||
|
c.put("./files/vestasync.js", wb_rule_path)
|
||||||
|
|
||||||
def create_automac_systemd(c):
|
def create_automac_systemd(c):
|
||||||
apply_macs_script_path = "/usr/local/bin/apply_macs.sh"
|
apply_macs_script_path = "/usr/local/bin/apply_macs.sh"
|
||||||
|
c.run(f"rm {apply_macs_script_path} || true")
|
||||||
c.put("./files/apply_macs.sh", apply_macs_script_path)
|
c.put("./files/apply_macs.sh", apply_macs_script_path)
|
||||||
c.run(f"chmod +x {apply_macs_script_path}")
|
c.run(f"chmod +x {apply_macs_script_path}")
|
||||||
|
|
||||||
c.put("./files/apply_macs.service", "/etc/systemd/system/apply_macs.service")
|
apply_macs_service_path = "/etc/systemd/system/apply_macs.service"
|
||||||
|
c.run(f"rm {apply_macs_service_path} || true")
|
||||||
|
c.put("./files/apply_macs.service", apply_macs_service_path)
|
||||||
|
|
||||||
|
c.run("systemctl disable apply_macs.service || true")
|
||||||
c.run("systemctl daemon-reload")
|
c.run("systemctl daemon-reload")
|
||||||
c.run("systemctl enable apply_macs.service")
|
c.run("systemctl enable apply_macs.service")
|
||||||
|
|
||||||
def create_autogit_systemd(c):
|
def create_autogit_systemd(c):
|
||||||
pushgit_script_path = "/usr/local/bin/pushgit.sh"
|
pushgit_script_path = "/usr/local/bin/pushgit.sh"
|
||||||
|
c.run(f"rm {pushgit_script_path} || true")
|
||||||
c.put("./files/pushgit.sh", pushgit_script_path)
|
c.put("./files/pushgit.sh", pushgit_script_path)
|
||||||
c.run(f"chmod +x {pushgit_script_path}")
|
c.run(f"chmod +x {pushgit_script_path}")
|
||||||
|
|
||||||
pushgit_inotify_script_path = "/usr/local/bin/pushgit_inotify.sh"
|
pushgit_inotify_script_path = "/usr/local/bin/pushgit_inotify.sh"
|
||||||
|
c.run(f"rm {pushgit_inotify_script_path} || true")
|
||||||
c.put("./files/pushgit.sh", pushgit_inotify_script_path)
|
c.put("./files/pushgit.sh", pushgit_inotify_script_path)
|
||||||
c.run(f"chmod +x {pushgit_inotify_script_path}")
|
c.run(f"chmod +x {pushgit_inotify_script_path}")
|
||||||
|
|
||||||
c.put("./files/pushgit.service", "/etc/systemd/system/pushgit.service")
|
pushgit_inotify_service_path = "/etc/systemd/system/pushgit_inotify.service"
|
||||||
c.put("./files/pushgit.timer", "/etc/systemd/system/pushgit.timer")
|
c.run(f"rm {pushgit_inotify_service_path} || true")
|
||||||
|
c.put("./files/pushgit_inotify.service", pushgit_inotify_service_path)
|
||||||
|
c.run(f"chmod +x {pushgit_inotify_service_path}")
|
||||||
|
|
||||||
c.put("./files/pushgit_inotify.service", "/etc/systemd/system/pushgit_inotify.service")
|
pushgit_service_path = "/etc/systemd/system/pushgit.service"
|
||||||
|
c.run(f"rm {pushgit_service_path} || true")
|
||||||
|
c.put("./files/pushgit.service", pushgit_service_path)
|
||||||
|
c.run(f"chmod +x {pushgit_service_path}")
|
||||||
|
|
||||||
|
pushgit_timer_path = "/etc/systemd/system/pushgit.timer"
|
||||||
|
c.run(f"rm {pushgit_timer_path} || true")
|
||||||
|
c.put("./files/pushgit.timer", pushgit_timer_path)
|
||||||
|
c.run(f"chmod +x {pushgit_timer_path}")
|
||||||
|
|
||||||
|
|
||||||
|
c.run("systemctl disable pushgit.timer || true")
|
||||||
|
c.run("systemctl disable pushgit_inotify.service || true")
|
||||||
c.run("systemctl daemon-reload")
|
c.run("systemctl daemon-reload")
|
||||||
c.run("systemctl enable pushgit.timer")
|
c.run("systemctl enable pushgit.timer")
|
||||||
c.run("systemctl start pushgit.timer")
|
c.run("systemctl start pushgit.timer")
|
||||||
@ -192,10 +214,14 @@ def save_mac_in_cfg(c):
|
|||||||
mac_address = interface["address"]
|
mac_address = interface["address"]
|
||||||
c.run(f"echo {mac_address} > /mnt/data/etc/vestasync/macs/{ifname}")
|
c.run(f"echo {mac_address} > /mnt/data/etc/vestasync/macs/{ifname}")
|
||||||
|
|
||||||
|
def check_vestasync_installed(c):
|
||||||
|
vestasync_path = "/mnt/data/etc/vestasync"
|
||||||
|
result = c.run(f"test -d {vestasync_path}", warn=True)
|
||||||
|
return result.ok
|
||||||
|
|
||||||
def device_install():
|
def device_install():
|
||||||
with Connection(host=args.device_ip, user=device_user, connect_kwargs={"password": "wirenboard"}) as c:
|
with Connection(host=args.device_ip, user=device_user, connect_kwargs={"password": "wirenboard"}) as c:
|
||||||
|
if not check_vestasync_installed(c):
|
||||||
prepare_packages_wb(c)
|
prepare_packages_wb(c)
|
||||||
configure_git(c)
|
configure_git(c)
|
||||||
get_short_sn(c)
|
get_short_sn(c)
|
||||||
@ -211,6 +237,12 @@ def device_install():
|
|||||||
create_autogit_systemd(c)
|
create_autogit_systemd(c)
|
||||||
run_user_cmd(c)
|
run_user_cmd(c)
|
||||||
reboot(c)
|
reboot(c)
|
||||||
|
else:
|
||||||
|
print("Found vestasync! Update...")
|
||||||
|
copy_wb_rule(c)
|
||||||
|
create_automac_systemd(c)
|
||||||
|
create_autogit_systemd(c)
|
||||||
|
|
||||||
|
|
||||||
def device_restore():
|
def device_restore():
|
||||||
with Connection(host=args.device_ip, user=device_user) as c:
|
with Connection(host=args.device_ip, user=device_user) as c:
|
||||||
|
Loading…
Reference in New Issue
Block a user