--- - name: API Service - file and folder handler block: - name: API Service - create python service folder file: path: "{{ api_service_folder }}" state: directory owner: "{{ service_user }}" group: "{{ service_user }}" mode: '0755' - name: API Service - template app.py template: src: app.py dest: "{{ api_service_folder }}/app.py" owner: "{{ service_user }}" group: "{{ service_user }}" mode: 0755 # Create python service venv - name: API Service - Python venv handler block: - name: API Service - create python venv requirement file copy: dest: "{{ api_service_folder }}/requirements.txt" content: | flask pytz requests opencv-python pyyaml owner: "{{ service_user }}" group: "{{ service_user }}" mode: 0644 - name: API Service - build python venv pip: virtualenv: "{{ api_service_folder }}/venv" requirements: "{{ api_service_folder }}/requirements.txt" virtualenv_command: python3 -m venv state: present - name: API Service - api service handler block: - name: "API Service - {{ api_service_name }} - stop service if running" ignore_errors: yes systemd: name: "{{ api_service_name }}.service" state: stopped - name: "API Service - template {{ api_service_name }}.service" vars: service_name: "{{ api_service_name }}" service_working_folder: "{{ api_service_folder }}" service_exe: "{{ api_service_folder }}/venv/bin/python -u {{ api_service_folder }}/app.py" template: src: "service_template.service" dest: "/etc/systemd/system/{{ api_service_name }}.service" mode: 0644 - name: "API Service - {{ api_service_name }} - enable and start service" systemd: name: "{{ api_service_name }}.service" state: started enabled: yes daemon_reload: yes ...