added gunicorn and updated to the last version of server monitorizare
This commit is contained in:
@@ -97,13 +97,39 @@
|
||||
debug:
|
||||
msg: "work_place will be set to: '{{ work_place_value }}'"
|
||||
|
||||
# ── 5. Replace work_place value in WMT/data/config.txt ───────────────
|
||||
- name: Replace work_place in WMT config.txt
|
||||
lineinfile:
|
||||
path: /home/pi/Desktop/WMT/data/config.txt
|
||||
regexp: '^work_place\s*=.*'
|
||||
line: "work_place={{ work_place_value }}"
|
||||
backup: true
|
||||
# ── 5. Write work_place into WMT/data/config.txt ──────────────────────
|
||||
# Uses Python (always available on Raspberry Pi) to correctly
|
||||
# read/write the INI file and set work_place inside [device].
|
||||
# Also resets last_synced to epoch so first startup does NOT
|
||||
# overwrite work_place with a potentially empty server value.
|
||||
- name: Set work_place in WMT config.txt via Python
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
python3 - <<'PYEOF'
|
||||
import configparser, os
|
||||
path = '/home/pi/Desktop/WMT/data/config.txt'
|
||||
p = configparser.ConfigParser()
|
||||
p.read(path)
|
||||
if not p.has_section('chrome'):
|
||||
p.add_section('chrome')
|
||||
if not p.has_section('card_api'):
|
||||
p.add_section('card_api')
|
||||
if not p.has_section('server'):
|
||||
p.add_section('server')
|
||||
if not p.has_section('device'):
|
||||
p.add_section('device')
|
||||
if not p.has_section('meta'):
|
||||
p.add_section('meta')
|
||||
p.set('device', 'work_place', '{{ work_place_value }}')
|
||||
# Reset last_synced so first startup pull from server does not
|
||||
# overwrite the work_place we just set (server will return the
|
||||
# correct device_name once this device checks in).
|
||||
p.set('meta', 'last_synced', '1970-01-01T00:00:00')
|
||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||
with open(path, 'w') as f:
|
||||
p.write(f)
|
||||
print('work_place set to: {{ work_place_value }}')
|
||||
PYEOF
|
||||
|
||||
- name: Confirm work_place change
|
||||
command: grep 'work_place' /home/pi/Desktop/WMT/data/config.txt
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
# Update WMT client code from the controller's WMT_project folder
|
||||
# ──────────────────────────────────────────────────────────────────────────
|
||||
# Use this for devices that have not yet received the HTTP auto-update,
|
||||
# or whenever you need to force a code push from the server.
|
||||
#
|
||||
# What this playbook does:
|
||||
# 1. Ensure WMT directory exists on the target
|
||||
# 2. Back up the current app.py as app.py.bak.<version>
|
||||
# 3. Copy everything from /home/pi/Desktop/WMT_project/ on the CONTROLLER
|
||||
# → /home/pi/Desktop/WMT/ on the TARGET
|
||||
# The data/ directory on the target is fully preserved (never touched)
|
||||
# 4. Fix file ownership
|
||||
# 5. Restart the wmt systemd service
|
||||
#
|
||||
# The data/ directory (config.txt, idmasa.txt, tag.txt, log.txt, device_info.txt)
|
||||
# is intentionally excluded — device-specific settings stay intact.
|
||||
#
|
||||
# Run via: Ansible > Playbooks > "Update WMT Code"
|
||||
# ──────────────────────────────────────────────────────────────────────────
|
||||
|
||||
- name: Update WMT client code from WMT_project folder
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
become: false
|
||||
|
||||
vars:
|
||||
controller_src: /home/pi/Desktop/WMT_project/
|
||||
wmt_dir: /home/pi/Desktop/WMT
|
||||
|
||||
tasks:
|
||||
|
||||
# ── 1. Ensure WMT directory exists ────────────────────────────────────
|
||||
- name: Ensure WMT directory exists on target
|
||||
file:
|
||||
path: "{{ wmt_dir }}"
|
||||
state: directory
|
||||
owner: pi
|
||||
group: pi
|
||||
mode: '0755'
|
||||
|
||||
# ── 2. Back up current app.py ─────────────────────────────────────────
|
||||
- name: Read first line of current app.py (for backup filename)
|
||||
shell: head -1 {{ wmt_dir }}/app.py 2>/dev/null || echo "unknown"
|
||||
register: local_first_line
|
||||
changed_when: false
|
||||
ignore_errors: true
|
||||
|
||||
- name: Extract local version number
|
||||
set_fact:
|
||||
local_version: >-
|
||||
{{ local_first_line.stdout
|
||||
| regex_search('version\s+([\d.]+)', '\1')
|
||||
| first | default('old') }}
|
||||
|
||||
- name: Back up current app.py
|
||||
copy:
|
||||
src: "{{ wmt_dir }}/app.py"
|
||||
dest: "{{ wmt_dir }}/app.py.bak.{{ local_version }}"
|
||||
remote_src: true
|
||||
owner: pi
|
||||
group: pi
|
||||
mode: preserve
|
||||
ignore_errors: true
|
||||
|
||||
- name: Show backup info
|
||||
debug:
|
||||
msg: "Backed up app.py v{{ local_version }} → app.py.bak.{{ local_version }}"
|
||||
|
||||
# ── 3. Snapshot data/ before copy (audit) ────────────────────────────
|
||||
- name: List current data/ files (audit)
|
||||
shell: ls -1 {{ wmt_dir }}/data/ 2>/dev/null || echo "(empty or missing)"
|
||||
register: data_files_before
|
||||
changed_when: false
|
||||
|
||||
- name: Show data/ files that will be preserved
|
||||
debug:
|
||||
msg: "data/ contents (will NOT be changed): {{ data_files_before.stdout_lines }}"
|
||||
|
||||
# ── 4. Sync WMT_project → WMT on target, excluding data/ ─────────────
|
||||
# synchronize uses rsync under the hood; delegate_to pushes
|
||||
# from the controller to the target.
|
||||
- name: Sync WMT_project to target (exclude data/ and junk files)
|
||||
synchronize:
|
||||
src: "{{ controller_src }}"
|
||||
dest: "{{ wmt_dir }}/"
|
||||
recursive: true
|
||||
delete: false
|
||||
checksum: true
|
||||
rsync_opts:
|
||||
- "--exclude=data/"
|
||||
- "--exclude=.git/"
|
||||
- "--exclude=.gitignore"
|
||||
- "--exclude=__pycache__/"
|
||||
- "--exclude=*.pyc"
|
||||
- "--exclude=*.pyo"
|
||||
- "--exclude=*.log"
|
||||
- "--exclude=*.bak"
|
||||
- "--exclude=venv/"
|
||||
- "--exclude=.venv/"
|
||||
- "--exclude=node_modules/"
|
||||
- "--exclude=.*"
|
||||
register: sync_result
|
||||
|
||||
- name: Show sync summary
|
||||
debug:
|
||||
msg: "Sync completed. Changed: {{ sync_result.changed }}"
|
||||
|
||||
# ── 5. Fix ownership ──────────────────────────────────────────────────
|
||||
- name: Set correct ownership on WMT directory
|
||||
become: true
|
||||
file:
|
||||
path: "{{ wmt_dir }}"
|
||||
owner: pi
|
||||
group: pi
|
||||
recurse: true
|
||||
|
||||
# ── 6. Verify data/ is still intact ──────────────────────────────────
|
||||
- name: List data/ files after update (verification)
|
||||
shell: ls -1 {{ wmt_dir }}/data/ 2>/dev/null || echo "(empty)"
|
||||
register: data_files_after
|
||||
changed_when: false
|
||||
|
||||
- name: Show data/ contents after update (should match before)
|
||||
debug:
|
||||
msg: "{{ data_files_after.stdout_lines }}"
|
||||
|
||||
# ── 9. Reboot ─────────────────────────────────────────────────────────
|
||||
- name: Reboot host to apply all changes
|
||||
become: true
|
||||
reboot:
|
||||
msg: "Rebooting after WMT code update "
|
||||
reboot_timeout: 180
|
||||
pre_reboot_delay: 3
|
||||
post_reboot_delay: 15
|
||||
Reference in New Issue
Block a user