- name: Test playbook vars: # TODO: maybe don't hardcode this? PROJECT_BASE: "../" INSTALL_BASE: "/home/pi/pyServices" hosts: - P01 - P22 handlers: - 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: # # NETWORK CONFIGURATION # - name: set eth0 static IP become: true community.general.nmcli: conn_name: "Multimedia network" ifname: eth0 type: ethernet 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 # # SYSTEM DEPENDENCIES # - name: Install pkgs become: true apt: name: - python3-pip - mosquitto - nginx state: latest - 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: Copy mosqitconfig become: true ansible.builtin.copy: src: mosquitto.conf dest: /etc/mosquitto/mosquitto.conf owner: root group: root mode: '0644' backup: yes 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: ./malinaConfig.toml.j2 dest: "{{INSTALL_BASE}}/malinaConfig.toml" - name: Install python libraries ansible.builtin.shell: cmd: "poetry install" chdir: "{{INSTALL_BASE}}" # # 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: 'u=rwX,g=rX,o=rX' # # SERVICES # - name: template target become: true ansible.builtin.template: src: ./mm-controller.target.j2 dest: /etc/systemd/system/mm-controller.target - name: Generate systemd services become: true block: # Barco G62 (novi projektor) - name: Barco G62 services when: barco_G62 is defined block: - name: template service become: true vars: script_file: "{{INSTALL_BASE}}/barco_telnet/barco_G62_control.py %i" ansible.builtin.template: 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: "{{INSTALL_BASE}}/projector_motors/projector_motors.py" ansible.builtin.template: 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 become: true vars: script_file: "{{INSTALL_BASE}}/tse_serial/tse_serial_controler.py" ansible.builtin.template: 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: "{{INSTALL_BASE}}/lucke/luckeControl.py" ansible.builtin.template: 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: daemon reload become: true ansible.builtin.systemd_service: daemon_reload: true