Fixed Ansible for controller

This commit is contained in:
Miha Frangež 2025-09-11 17:11:02 +02:00
parent c2d277663f
commit 64a10b0512
10 changed files with 1096 additions and 216 deletions

View file

@ -1,24 +1,29 @@
- name: Test playbook
vars:
# TODO: maybe don't hardcode this?
PROJECT_BASE: "/home/kat/Documents/polzp/fri_multimedia_rework"
hosts: P01
PROJECT_BASE: "../"
INSTALL_BASE: "/home/pi/pyServices"
# vars_files:
# - secret
# addr: "192.168.122.245"
hosts:
- P01
- P22
handlers:
- name: restart NM
- name: restart NetworkManager
ansible.builtin.service:
name: NetworkManager
state: restarted
- name: Restart mosquitto
become: true
ansible.builtin.systemd_service:
name: mosquitto.service
state: restarted
tasks:
- name: Ping hosts
ansible.builtin.ping:
#
# NETWORK CONFIGURATION
#
- name: set eth0 static IP
become: true
@ -26,12 +31,25 @@
conn_name: "Multimedia network"
ifname: eth0
type: ethernet
ip4: "{{ static_ip }}/{{ static_mask }}"
gw4: "{{ static_routers }}"
ip4: "{{ static_ip }}/{{ static_ip_cidr }}"
# Sorry timi
method6: disabled
# Multimedia net doesn't have Internet access, so this iface shouldn't be used for Internet access
never_default4: true
routes4_extended:
- ip: 192.168.0.0/16
next_hop: "{{ static_ip_gateway }}"
metric: 9999
- ip: 10.0.0.0/8
next_hop: "{{ static_ip_gateway }}"
metric: 9999
# gw4: "{{ static_ip_gateway }}"
state: present
#notify: restart NM
#
# SYSTEM DEPENDENCIES
#
- name: Install pkgs
become: true
apt:
@ -40,171 +58,177 @@
- mosquitto
- nginx
state: latest
- name: pip install
- name: Install Poetry
pip:
break_system_packages: true
name:
- poetry
#
# MOSQUITTO
#
- name: mosquitto enable
become: true
ansible.builtin.systemd_service:
name: mosquitto.service
enabled: true
- name: check for script directory
file:
path: "/home/pi/pyServices"
state: directory
- name: Copy poetry conf
#become: true
- name: Copy mosqitconfig
become: true
ansible.builtin.copy:
#seuser: root
src: "../{{ item }}"
dest: "/home/pi/pyServices/{{ item }}"
owner: pi
group: pi
src: mosquitto.conf
dest: /etc/mosquitto/mosquitto.conf
owner: root
group: root
mode: '0644'
backup: yes
loop:
- poetry.lock
- pyproject.toml
- README.md
notify: Restart mosquitto
#
# INSTALL CONTROLLER
#
- name: Create installation directory
file:
path: "{{INSTALL_BASE}}"
state: directory
- name: Install controller scripts
ansible.posix.synchronize:
src: "../controller/"
dest: "{{INSTALL_BASE}}/"
delete: true
archive: false
recursive: true
- name: template config.toml
ansible.builtin.template:
src: ./conf.j2
dest: /home/pi/pyServices/malinaConfig.toml
src: ./malinaConfig.toml.j2
dest: "{{INSTALL_BASE}}/malinaConfig.toml"
- name: copy python scripts
#become: true
ansible.builtin.copy:
src: "../{{ item }}"
dest: "/home/pi/pyServices"
#
# INSTALL FRONTEND
#
- name: Build frontend (localhost)
delegate_to: localhost
ansible.builtin.shell:
cmd: "npm install --dev && npm run build"
chdir: "{{PROJECT_BASE}}/frontend/vju_display" # TODO: remove vju_display
- name: Install frontend
become: true
ansible.posix.synchronize:
src: "../frontend/vju_display/dist/" # TODO: remove vju_display
dest: "/var/www/html/"
delete: true
archive: false
recursive: true
- name: Fix www root permission
become: true
ansible.builtin.file:
path: "/var/www/html/"
owner: pi
group: pi
recurse: true
mode: '0644'
backup: yes
loop:
- barco_telnet/barco_G62_control.py
- extron_audio_matrix/extron_audio_matrix_telnet_control.py
- extron_audio_matrix/extron_audio_matrix_telnet_interpreter.py
- projector_motors/projector_motors.py
- tse_serial/tse_serial_controler.py
- tse_serial/tse_serial_interpreter.py
- lucke/luckeControl.py
# - config.toml # bruh
- name: poetry installation
ansible.builtin.shell:
- name: Install python libraries
ansible.builtin.shell:
cmd: "poetry install"
chdir: "/home/pi/pyServices"
chdir: "{{INSTALL_BASE}}/controller"
- name: mosquitto service and reload
#
# SERVICES
#
- name: template target
become: true
ansible.builtin.systemd_service:
name: mosquitto.service
state: restarted
daemon_reload: true
ansible.builtin.template:
src: ./mm-controller.target.j2
dest: /etc/systemd/system/mm-controller.target
- name: generate systemd services
- name: Generate systemd services
become: true
block:
- name: barco services
# Barco G62 (novi projektor)
- name: Barco G62 services
when: barco_G62 is defined
block:
- name: template service
vars:
script_file: "/home/pi/pyServices/barco_G62_control.py %i"
become: true
vars:
script_file: "{{INSTALL_BASE}}/barco_telnet/barco_G62_control.py %i"
ansible.builtin.template:
src: ./service.j2
dest: /lib/systemd/system/barco@.service
src: ./controller_script.service.j2
dest: /etc/systemd/system/barco@.service
- name: enable service
ansible.builtin.systemd_service:
name: "{{item}}"
enabled: true
state: restarted
daemon_reload: true
loop:
- barco@main.service
- barco@side.service
# Lifti za projektorje (naši releji)
- name: template projector motors service
when: projector_motors is defined
block:
- name: template service
become: true
vars:
script_file: "/home/pi/pyServices/projector_motors.py"
script_file: "{{INSTALL_BASE}}/projector_motors/projector_motors.py"
ansible.builtin.template:
src: ./service.j2
dest: /lib/systemd/system/projector_motors.service
src: ./controller_script.service.j2
dest: /etc/systemd/system/projector_motors.service
- name: enable service
ansible.builtin.systemd_service:
name: projector_motors.service
enabled: true
state: restarted
daemon_reload: true
# Power, platna, etc. (TSE relay box)
- name: template tse serial box service
when: tse_box is defined
block:
- name: template service
- name: template service
become: true
vars:
script_file: "/home/pi/pyServices/tse_serial_controler.py"
script_file: "{{INSTALL_BASE}}/tse_serial/tse_serial_controler.py"
ansible.builtin.template:
src: ./service.j2
dest: /lib/systemd/system/tse_box.service
src: ./controller_script.service.j2
dest: /etc/systemd/system/tse_box.service
- name: enable service
ansible.builtin.systemd_service:
name: tse_box.service
enabled: true
state: restarted
daemon_reload: true
# a-rosso lučke kontroler
- name: template lucke service
when: lucke is defined
block:
- name: tmeplate service
become: true
vars:
script_file: "/home/pi/pyServices/luckeControl.py"
script_file: "{{INSTALL_BASE}}/lucke/luckeControl.py"
ansible.builtin.template:
src: ./service.j2
dest: /lib/systemd/system/lucke.service
src: ./controller_script.service.j2
dest: /etc/systemd/system/lucke.service
- name: enable service
ansible.builtin.systemd_service:
name: lucke.service
enabled: true
state: restarted
daemon_reload: true
- name: Copy mosqitconfig
become: true
ansible.builtin.copy:
#seuser: root
src: ../mosquitto.conf
dest: /etc/mosquitto/conf.d
owner: root
group: root
mode: '0644'
backup: yes
- name: Build frontend
delegate_to: localhost
command:
chdir: "{{PROJECT_BASE}}/frontend/vju_display/"
cmd: "npm run build"
- name: copy frontend to webroot
become: true
ansible.builtin.copy:
src: "{{PROJECT_BASE}}/frontend/vju_display/dist/"
dest: /var/www/html/
owner: root
group: www-data
mode: '0755'
backup: yes
- name: daemon reload
become: true
ansible.builtin.systemd_service: