--- ############################################### # lifted directly from my carputer playbook ############################################### ############################################### # This part sets up python serice control api ############################################### - name: service control api block: # Stop service - name: video_capture - service_control api - stop service api systemd: name: service_control.service state: stopped ignore_errors: yes # Create API Folder - name: video_capture - service_control api - create api folder file: path: "{{ service_control_folder }}" state: directory mode: '0755' # Copy API Code - name: video_capture - service_control api - copy api code template: src: app-service.py.j2 dest: "{{ service_control_folder }}/app.py" mode: 0644 # Create service_control api service - name: video_capture - service_control api - create requirement file copy: dest: "{{ service_control_folder }}/requirements.txt" content: | Flask==2.1.0 pytz requests lxml Werkzeug==2.0 mode: 0644 # build venv - name: video_capture - service_control api - build venv pip: virtualenv: "{{ service_control_folder }}/venv" requirements: "{{ service_control_folder }}/requirements.txt" virtualenv_command: python3 -m venv state: present # Create service_control api service - name: video_capture - service_control api - create service file # vars: template: src: service_control.service.j2 dest: /etc/systemd/system/service_control.service mode: 0644 - name: video_capture - service timeout helper files block: - name: video_capture - create service_timeout.sh template: src: service_timeout.sh.j2 dest: "{{ service_control_folder }}/service_timeout.sh" mode: 0755 - name: video_capture - create service_timeout.service template: src: service_timeout.service.j2 dest: /etc/systemd/system/service_timeout.service mode: 0644 # daemon reload - name: video_capture - service_control api - daemon reload systemd: daemon_reload: yes # Enable and start - name: video_capture - service_control api - enable and start service api systemd: name: service_control.service state: started enabled: yes - name: video_capture - service_control api - enable and start service timeoue api systemd: name: service_timeout.service state: started enabled: yes ############################################### # This part sets up serice control website ############################################### - name: service control web interface block: - name: set docker folder variable set_fact: service_control_web_folder: "{{ service_control_folder }}/web" # Create docker Folder - name: service_control_website - create service_control_web_folder folder file: path: "{{ service_control_web_folder }}" state: directory mode: '0755' owner: root group: root - name: service_control_website - copy files for docker container copy: src: "service_control_api/website/" dest: "{{ service_control_web_folder }}/html" mode: 0755 owner: root group: root #- name: service_control_website - template index.php # template: # src: index-service_control.php.j2 # dest: "{{ service_control_web_folder }}/html/index.php" # mode: 0644 ############################################### # Start service_control_website ############################################### # https://unix.stackexchange.com/questions/265704/start-stop-a-systemd-service-at-specific-times # i can create several conflicting services with various timeouts - name: start service_control_website when: not refresh_special | bool block: - name: set container variables set_fact: container_name: "service_control_website" container_http_port: "8081" extra_volumes: "" - name: service_control_website - template config template: src: docker-compose-php.yaml.j2 dest: "{{ service_control_web_folder }}/docker-compose.yaml" mode: 0644 - name: "service_control_website - Start container at 0.0.0.0:{{ container_http_port }}" shell: "docker-compose -f {{ service_control_web_folder }}/docker-compose.yaml up -d" register: docker_output - debug: | msg="{{ docker_output.stdout_lines }}" msg="{{ docker_output.stderr_lines }}" ...