+ set -u + set -e ++ mktemp -d + cd /tmp/tmp.sLvnnSMwfb + git clone https://dev.azure.com/tinypilot/tinypilot-pro/_git/tinypilot-pro . Cloning into '.'... + ./quick-install + readonly DEFAULT_TINYPILOT_SETTINGS_FILE=/home/tinypilot/settings.yml + DEFAULT_TINYPILOT_SETTINGS_FILE=/home/tinypilot/settings.yml + [[ -n '' ]] + set -u ++ uname -m + [[ armv7l == \a\a\r\c\h\6\4 ]] ++ mktemp --tmpdir=/var/tmp --suffix .yml + readonly TINYPILOT_SETTINGS_FILE=/var/tmp/tmp.E7tOJPSfyx.yml + TINYPILOT_SETTINGS_FILE=/var/tmp/tmp.E7tOJPSfyx.yml + [[ -f /home/tinypilot/settings.yml ]] + echo 'Using settings file at: /home/tinypilot/settings.yml' Using settings file at: /home/tinypilot/settings.yml + sudo cp /home/tinypilot/settings.yml /var/tmp/tmp.E7tOJPSfyx.yml + readonly EXTRA_VARS_PATH=@/var/tmp/tmp.E7tOJPSfyx.yml + EXTRA_VARS_PATH=@/var/tmp/tmp.E7tOJPSfyx.yml + add_setting_if_undefined ustreamer_port 8001 + local key=ustreamer_port + local value=8001 + grep --silent '^ustreamer_port:' /var/tmp/tmp.E7tOJPSfyx.yml + add_setting_if_undefined ustreamer_persistent true + local key=ustreamer_persistent + local value=true + grep --silent '^ustreamer_persistent:' /var/tmp/tmp.E7tOJPSfyx.yml + USE_TC358743_DEFAULTS= + grep --silent '^ustreamer_capture_device:' /var/tmp/tmp.E7tOJPSfyx.yml + '[' -f /home/ustreamer/config.yml ']' + grep --silent 'capture_device: "tc358743"' /home/ustreamer/config.yml + USE_TC358743_DEFAULTS=y + [[ y == \y ]] + add_setting_if_undefined ustreamer_encoder omx + local key=ustreamer_encoder + local value=omx + grep --silent '^ustreamer_encoder:' /var/tmp/tmp.E7tOJPSfyx.yml + add_setting_if_undefined ustreamer_format uyvy + local key=ustreamer_format + local value=uyvy + grep --silent '^ustreamer_format:' /var/tmp/tmp.E7tOJPSfyx.yml + add_setting_if_undefined ustreamer_workers 3 + local key=ustreamer_workers + local value=3 + grep --silent '^ustreamer_workers:' /var/tmp/tmp.E7tOJPSfyx.yml + add_setting_if_undefined ustreamer_use_dv_timings true + local key=ustreamer_use_dv_timings + local value=true + grep --silent '^ustreamer_use_dv_timings:' /var/tmp/tmp.E7tOJPSfyx.yml + add_setting_if_undefined ustreamer_drop_same_frames 30 + local key=ustreamer_drop_same_frames + local value=30 + grep --silent '^ustreamer_drop_same_frames:' /var/tmp/tmp.E7tOJPSfyx.yml + echo 'Final install settings:' Final install settings: + cat /var/tmp/tmp.E7tOJPSfyx.yml tinypilot_repo_branch: 2.3.2 ustreamer_port: 8001 ustreamer_persistent: true ustreamer_encoder: omx ustreamer_format: uyvy ustreamer_workers: 3 ustreamer_use_dv_timings: true ustreamer_drop_same_frames: 30 + sudo apt-get update --allow-releaseinfo-change-suite Hit:1 http://archive.raspberrypi.org/debian buster InRelease Get:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB] Get:3 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB] Fetched 13.0 MB in 8s (1,680 kB/s) Reading package lists... + sudo apt-get install -y git libffi-dev libssl-dev python3-dev python3-venv python3-openssl Reading package lists... Building dependency tree... Reading state information... git is already the newest version (1:2.20.1-2+deb10u3). libffi-dev is already the newest version (3.2.1-9). libssl-dev is already the newest version (1.1.1n-0+deb10u1). python3-dev is already the newest version (3.7.3-1). python3-openssl is already the newest version (19.0.0-1). python3-venv is already the newest version (3.7.3-1). 0 upgraded, 0 newly installed, 0 to remove and 46 not upgraded. + INSTALLER_DIR=/opt/tinypilot-updater + sudo mkdir -p /opt/tinypilot-updater ++ whoami ++ whoami + sudo chown root:root --recursive /opt/tinypilot-updater + pushd /opt/tinypilot-updater /opt/tinypilot-updater /tmp/tmp.sLvnnSMwfb + python3 -m venv venv + . venv/bin/activate ++ deactivate nondestructive ++ '[' -n '' ']' ++ '[' -n '' ']' ++ '[' -n /bin/bash -o -n '' ']' ++ hash -r ++ '[' -n '' ']' ++ unset VIRTUAL_ENV ++ '[' '!' nondestructive = nondestructive ']' ++ VIRTUAL_ENV=/opt/tinypilot-updater/venv ++ export VIRTUAL_ENV ++ _OLD_VIRTUAL_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ++ PATH=/opt/tinypilot-updater/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ++ export PATH ++ '[' -n '' ']' ++ '[' -z '' ']' ++ _OLD_VIRTUAL_PS1= ++ '[' 'x(venv) ' '!=' x ']' ++ PS1='(venv) ' ++ export PS1 ++ '[' -n /bin/bash -o -n '' ']' ++ hash -r + pip install pip==21.3.1 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: pip==21.3.1 in ./venv/lib/python3.7/site-packages (21.3.1) WARNING: You are using pip version 21.3.1; however, version 22.1 is available. You should consider upgrading via the '/opt/tinypilot-updater/venv/bin/python3 -m pip install --upgrade pip' command. + echo 'ansible==2.9.10 cffi==1.14.4 cryptography==35.0.0 Jinja2==2.11.2 MarkupSafe==1.1.1 pkg-resources==0.0.0 pycparser==2.20 pyOpenSSL==20.0.1 PyYAML==5.3.1 six==1.15.0' + pip install -r requirements.txt Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: ansible==2.9.10 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (2.9.10) Requirement already satisfied: cffi==1.14.4 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (1.14.4) Collecting cryptography==35.0.0 Using cached https://www.piwheels.org/simple/cryptography/cryptography-35.0.0-cp37-cp37m-linux_armv7l.whl (2.1 MB) Requirement already satisfied: Jinja2==2.11.2 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (2.11.2) Requirement already satisfied: MarkupSafe==1.1.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 5)) (1.1.1) Requirement already satisfied: pkg-resources==0.0.0 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 6)) (0.0.0) Requirement already satisfied: pycparser==2.20 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 7)) (2.20) Requirement already satisfied: pyOpenSSL==20.0.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 8)) (20.0.1) Requirement already satisfied: PyYAML==5.3.1 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 9)) (5.3.1) Requirement already satisfied: six==1.15.0 in ./venv/lib/python3.7/site-packages (from -r requirements.txt (line 10)) (1.15.0) Installing collected packages: cryptography Attempting uninstall: cryptography Found existing installation: cryptography 3.3.2 Uninstalling cryptography-3.3.2: Successfully uninstalled cryptography-3.3.2 Successfully installed cryptography-35.0.0 WARNING: You are using pip version 21.3.1; however, version 22.1 is available. You should consider upgrading via the '/opt/tinypilot-updater/venv/bin/python3 -m pip install --upgrade pip' command. + echo '[defaults] roles_path = /opt/tinypilot-updater interpreter_python = /usr/bin/python3 ' + readonly TINYPILOT_ROLE_NAME=tinypilot.tinypilot-pro + TINYPILOT_ROLE_NAME=tinypilot.tinypilot-pro + readonly TINYPILOT_ROLE_VERSION=1.2.5 + TINYPILOT_ROLE_VERSION=1.2.5 + [[ ! -d tinypilot.tinypilot-pro ]] + pushd tinypilot.tinypilot-pro /opt/tinypilot-updater/tinypilot.tinypilot-pro /opt/tinypilot-updater /tmp/tmp.sLvnnSMwfb + git fetch --tags --force + git checkout 1.2.5 Previous HEAD position was 40f1ec4 Update ansible-role-ustreamer requirement to 1.1.0 (#96) HEAD is now at de57c3f Require uStreamer role 1.1.1 (#107) + popd /opt/tinypilot-updater /tmp/tmp.sLvnnSMwfb + ansible-galaxy install --force --role-file tinypilot.tinypilot-pro/requirements.yml - changing role ansible-role-ustreamer from 1.1.0 to 1.1.1 - extracting ansible-role-ustreamer to /opt/tinypilot-updater/ansible-role-ustreamer - ansible-role-ustreamer (1.1.1) was installed successfully - changing role ansible-role-nginx from 2.8.3 to 2.8.3 - extracting ansible-role-nginx to /opt/tinypilot-updater/ansible-role-nginx - ansible-role-nginx (2.8.3) was installed successfully - extracting ansible-role-janus-gateway to /opt/tinypilot-updater/ansible-role-janus-gateway - ansible-role-janus-gateway (0.1.2) was installed successfully + echo '- hosts: localhost connection: local become: true become_method: sudo roles: - role: tinypilot.tinypilot-pro' + ansible-playbook -i localhost, install.yml --extra-vars @/var/tmp/tmp.E7tOJPSfyx.yml PLAY [localhost] ******************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************* ok: [localhost] TASK [ansible-role-janus-gateway : Generate api secrets] *************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Create janus user] ****************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Install required platform dependencies] ********************************************* skipping: [localhost] TASK [ansible-role-janus-gateway : Install rabbitmq dependencies] ****************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Install mqtt dependencies] ********************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Install Nanomsg dependencies] ******************************************************* skipping: [localhost] TASK [ansible-role-janus-gateway : Install libwebsockets dependencies] ************************************************* skipping: [localhost] TASK [ansible-role-janus-gateway : Register gcc machine arch] ********************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Create workspace] ******************************************************************* skipping: [localhost] TASK [ansible-role-janus-gateway : Install meson and ninja build systems] ********************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Clone libnice] ********************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Run libnice meson build] ************************************************************ skipping: [localhost] TASK [ansible-role-janus-gateway : Configure libnice ninja build] ****************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Install libnice] ******************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Clone libwebsockets] **************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Make websockets build configs] ****************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Make websockets library] ************************************************************ skipping: [localhost] TASK [ansible-role-janus-gateway : Install websockets library] ********************************************************* skipping: [localhost] TASK [ansible-role-janus-gateway : Create libsrtp workspace] *********************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Download and unarchive libsrtp] ***************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Configure libsrtp] ****************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Build libsrtp] ********************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Install libsrtp] ******************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Clone janus-gateway] **************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Run janus-gateway config autogen] *************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Configure janus-gateway build] ****************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Build janus-gateway] **************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Install janus-gateway] ************************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Symlink Janus C header files to the C include path] ********************************* skipping: [localhost] TASK [ansible-role-janus-gateway : Set installed version facts] ******************************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Render janus-gateway config templates] ********************************************** skipping: [localhost] => (item={'key': 'janus.eventhandler.gelfevh.jcfg', 'value': 'janus.eventhandler.gelfevh.jcfg'}) skipping: [localhost] => (item={'key': 'janus.eventhandler.sampleevh.jcfg', 'value': 'janus.eventhandler.sampleevh.jcfg'}) skipping: [localhost] => (item={'key': 'janus.eventhandler.wsevh.jcfg', 'value': 'janus.eventhandler.wsevh.jcfg'}) skipping: [localhost] => (item={'key': 'janus.jcfg', 'value': 'janus.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.audiobridge.jcfg', 'value': 'janus.plugin.audiobridge.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.echotest.jcfg', 'value': 'janus.plugin.echotest.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.nosip.jcfg', 'value': 'janus.plugin.nosip.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.recordplay.jcfg', 'value': 'janus.plugin.recordplay.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.sip.jcfg', 'value': 'janus.plugin.sip.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.streaming.jcfg', 'value': 'janus.plugin.streaming.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.textroom.jcfg', 'value': 'janus.plugin.textroom.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.videocall.jcfg', 'value': 'janus.plugin.videocall.jcfg'}) skipping: [localhost] => (item={'key': 'janus.plugin.voicemail.jcfg', 'value': 'janus.plugin.voicemail.jcfg'}) skipping: [localhost] => (item={'key': 'janus.transport.http.jcfg', 'value': 'janus.transport.http.jcfg'}) skipping: [localhost] => (item={'key': 'janus.transport.pfunix.jcfg', 'value': 'janus.transport.pfunix.jcfg'}) skipping: [localhost] => (item={'key': 'janus.transport.websockets.jcfg', 'value': 'janus.transport.websockets.jcfg'}) TASK [ansible-role-janus-gateway : Render janus-gateway config templates] ********************************************** skipping: [localhost] TASK [ansible-role-janus-gateway : Enable service janus] *************************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : patch Janus plugin.h file to successfully include refcount.h file] ********************* skipping: [localhost] TASK [ansible-role-ustreamer : check that the H264 variables are in a consistent state] ******************************** skipping: [localhost] TASK [ansible-role-ustreamer : create ustreamer group] ***************************************************************** ok: [localhost] TASK [ansible-role-ustreamer : create ustreamer user] ****************************************************************** ok: [localhost] TASK [ansible-role-ustreamer : check for a boot config file] *********************************************************** ok: [localhost] TASK [ansible-role-ustreamer : save whether boot config file exists] *************************************************** ok: [localhost] TASK [ansible-role-ustreamer : check whether this machine has a uStreamer settings file] ******************************* ok: [localhost] TASK [ansible-role-ustreamer : read uStreamer settings file] *********************************************************** ok: [localhost] TASK [ansible-role-ustreamer : decode settings file] ******************************************************************* ok: [localhost] TASK [ansible-role-ustreamer : read ustreamer_capture_device from config file if it's not already defined] ************* ok: [localhost] TASK [ansible-role-ustreamer : enable TC358743 overlay in /boot/config.txt] ******************************************** ok: [localhost] TASK [ansible-role-ustreamer : set GPU memory to 256MB in /boot/config.txt] ******************************************** ok: [localhost] TASK [ansible-role-ustreamer : check for a boot cmdline file] ********************************************************** ok: [localhost] TASK [ansible-role-ustreamer : read /boot/cmdline.txt] ***************************************************************** ok: [localhost] TASK [ansible-role-ustreamer : decode command-line string] ************************************************************* ok: [localhost] TASK [ansible-role-ustreamer : change cma to 128M if it's set to a different value] ************************************ skipping: [localhost] TASK [ansible-role-ustreamer : add cma=128M to cmdline.txt if it's missing] ******************************************** skipping: [localhost] TASK [ansible-role-ustreamer : create EDIDs folder] ******************************************************************** ok: [localhost] TASK [ansible-role-ustreamer : copy TC358743 EDID file] **************************************************************** ok: [localhost] TASK [ansible-role-ustreamer : install TC358743 initializer service] *************************************************** ok: [localhost] TASK [ansible-role-ustreamer : use custom settings for TC358743 chip for any facts not already defined] **************** ok: [localhost] TASK [ansible-role-ustreamer : remove TC358743 initializer service file] *********************************************** skipping: [localhost] TASK [ansible-role-ustreamer : disable TC358743 overlay in /boot/config.txt] ******************************************* skipping: [localhost] TASK [ansible-role-ustreamer : check if OS is Raspberry Pi OS] ********************************************************* ok: [localhost] TASK [ansible-role-ustreamer : enable OpenMax IL acceleration] ********************************************************* ok: [localhost] TASK [ansible-role-ustreamer : check that OpenMax IL acceleration is only compiled on Raspberry Pi OS] ***************** skipping: [localhost] TASK [ansible-role-ustreamer : collect universal required apt packages] ************************************************ ok: [localhost] TASK [ansible-role-ustreamer : collect Raspberry Pi OS specific required apt packages] ********************************* ok: [localhost] TASK [ansible-role-ustreamer : install libraspberrypi-dev if we're using OpenMax IL acceleration] ********************** ok: [localhost] TASK [ansible-role-ustreamer : collect Debian-specific required apt packages] ****************************************** skipping: [localhost] TASK [ansible-role-ustreamer : collect Ubuntu-specific required apt packages] ****************************************** skipping: [localhost] TASK [ansible-role-ustreamer : collect Janus WebRTC plugin specific required apt packages] ***************************** skipping: [localhost] TASK [ansible-role-ustreamer : install uStreamer pre-requisite packages] *********************************************** ok: [localhost] TASK [ansible-role-ustreamer : create uStreamer folder] **************************************************************** changed: [localhost] TASK [ansible-role-ustreamer : get uStreamer repo] ********************************************************************* changed: [localhost] TASK [ansible-role-ustreamer : clean uStreamer repository] ************************************************************* changed: [localhost] TASK [ansible-role-ustreamer : build uStreamer] ************************************************************************ changed: [localhost] TASK [ansible-role-ustreamer : fix uStreamer folder permissions] ******************************************************* changed: [localhost] TASK [ansible-role-ustreamer : install uStreamer as a service] ********************************************************* ok: [localhost] TASK [ansible-role-ustreamer : enable systemd uStreamer service file] ************************************************** ok: [localhost] TASK [ansible-role-ustreamer : save uStreamer settings file] *********************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create uStreamer Janus plugin config] ************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : install uStreamer Janus plugin] ******************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : (legacy cleanup) check for broken cycle-tls-keys script] ******************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : (legacy cleanup) disable cycle-tls-keys systemd task] ********************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : (legacy cleanup) remove cycle-tls-keys systemd task] *********************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : (legacy cleanup) remove stale key material] ******************************************** skipping: [localhost] => (item=/etc/ssl/certs/tinypilot-ca.crt) skipping: [localhost] => (item=/etc/ssl/private/tinypilot-ca.key) skipping: [localhost] => (item=/etc/ssl/csr/tinypilot-ca.csr) skipping: [localhost] => (item=/etc/ssl/certs/tinypilot-nginx.crt) skipping: [localhost] => (item=/etc/ssl/private/tinypilot-nginx.key) skipping: [localhost] => (item=/etc/ssl/csr/tinypilot-nginx.csr) TASK [tinypilot.tinypilot-pro : (legacy cleanup) remove broken cycle-tls-keys script] ********************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : install pip3] ************************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : install PyOpenSSL] ********************************************************************* changed: [localhost] TASK [tinypilot.tinypilot-pro : ensure CSR directory exists] *********************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create CA private key] ***************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : check for a CA CSR file] *************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create the CA CSR] ********************************************************************* skipping: [localhost] TASK [tinypilot.tinypilot-pro : check for a CA certificate file] ******************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : sign the CA CSR] *********************************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : create host CSR signing key] *********************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create CSR for nginx] ****************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : generate a CA-signed TLS certificate] ************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : install update-tls-cert-common-name as a service] ************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : Remove legacy config file.] ************************************************************ ok: [localhost] TASK [ansible-role-nginx : Include OS-specific variables.] ************************************************************* ok: [localhost] TASK [ansible-role-nginx : Define nginx_user.] ************************************************************************* ok: [localhost] TASK [ansible-role-nginx : include_tasks] ****************************************************************************** skipping: [localhost] TASK [ansible-role-nginx : include_tasks] ****************************************************************************** skipping: [localhost] TASK [ansible-role-nginx : include_tasks] ****************************************************************************** included: /opt/tinypilot-updater/ansible-role-nginx/tasks/setup-Debian.yml for localhost TASK [ansible-role-nginx : Update apt cache.] ************************************************************************** ok: [localhost] TASK [ansible-role-nginx : Ensure nginx is installed.] ***************************************************************** ok: [localhost] TASK [ansible-role-nginx : include_tasks] ****************************************************************************** skipping: [localhost] TASK [ansible-role-nginx : include_tasks] ****************************************************************************** skipping: [localhost] TASK [ansible-role-nginx : include_tasks] ****************************************************************************** skipping: [localhost] TASK [ansible-role-nginx : Remove default nginx vhost config file (if configured).] ************************************ ok: [localhost] TASK [ansible-role-nginx : Ensure nginx_vhost_path exists.] ************************************************************ ok: [localhost] TASK [ansible-role-nginx : Add managed vhost config files.] ************************************************************ changed: [localhost] => (item={'listen': [80, '443 ssl http2'], 'server_name': 'tinypilot', 'filename': 'tinypilot.conf', 'root': '/opt/tinypilot', 'index': 'index.html', 'error_page': '497 =307 https://$http_host$request_uri', 'extra_parameters': 'ssl_certificate "/etc/ssl/certs/tinypilot-nginx.crt";\nssl_certificate_key "/etc/ssl/private/tinypilot-nginx.key";\nssl_protocols TLSv1.2;\nssl_prefer_server_ciphers on;\nssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;\nssl_ecdh_curve secp384r1;\nssl_session_timeout 10m;\nssl_session_cache shared:SSL:10m;\nssl_session_tickets off;\nproxy_buffers 16 16k;\nproxy_buffer_size 16k;\nproxy_set_header Host $http_host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_http_version 1.1;\nlocation /socket.io {\n proxy_pass http://tinypilot;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "Upgrade";\n # Since this is a connection upgrade, we don\'t inherit the settings from\n # above. We need these so that nginx forwards requests properly to\n # Flask-SocketIO.\n # See: https://github.com/miguelgrinberg/Flask-SocketIO/issues/1501#issuecomment-802082048\n proxy_set_header Host $http_host;\n proxy_set_header X-Forwarded-Host $http_host;\n proxy_set_header X-Forwarded-Proto $scheme;\n}\nlocation /state {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n proxy_pass http://ustreamer;\n}\nlocation /stream {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n postpone_output 0;\n proxy_buffering off;\n proxy_ignore_headers X-Accel-Buffering;\n proxy_pass http://ustreamer;\n}\nlocation /snapshot {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n proxy_pass http://ustreamer;\n}\nlocation /janus/ws {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n proxy_pass http://janus-ws;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "Upgrade";\n proxy_set_header Host $http_host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Scheme $scheme;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Port $server_port;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\nlocation /ca.crt {\n alias "/etc/ssl/certs/tinypilot-ca.crt";\n}\nlocation / {\n proxy_pass http://tinypilot;\n}\nlocation /api/massStorage/backingFiles {\n # Allow large file transfers without buffering them.\n client_max_body_size 0;\n proxy_request_buffering off;\n proxy_read_timeout 1d;\n proxy_pass http://tinypilot;\n}\nlocation ~* ^/.+\\.(html|js|js.map|css|woff|woff2)$ {\n root "/opt/tinypilot/app/static";\n\n # We cache assets to prevent the browser from making redundant\n # requests to the same files while loading the page. (Observed on\n # Chrome 91.) We don’t want caching otherwise, though, in order to\n # avoid stale files after users update their device. Note, that in\n # addition to `max-age`, the browser’s caching behaviour is relative\n # to the `Last-Modified` header, so we make that seem recent.\n add_header Last-Modified $date_gmt;\n add_header Cache-Control \'public, max-age=10s\';\n}\nlocation ~* ^/.+\\.(jpg|jpeg|png|ico)$ {\n root "/opt/tinypilot/app/static";\n}\n# Authenticate any protected routes that are outside of the core\n# TinyPilot web app.\nlocation = /auth {\n internal;\n proxy_pass http://tinypilot/api/auth;\n proxy_pass_request_body off;\n proxy_set_header Content-Length "";\n proxy_set_header X-Original-URI $request_uri;\n\n # Redefine header directives, as they are not inherited here:\n # See http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header\n proxy_set_header X-Forwarded-Proto $scheme;\n}\n'}) TASK [ansible-role-nginx : Remove managed vhost config files.] ********************************************************* skipping: [localhost] => (item={'listen': [80, '443 ssl http2'], 'server_name': 'tinypilot', 'filename': 'tinypilot.conf', 'root': '/opt/tinypilot', 'index': 'index.html', 'error_page': '497 =307 https://$http_host$request_uri', 'extra_parameters': 'ssl_certificate "/etc/ssl/certs/tinypilot-nginx.crt";\nssl_certificate_key "/etc/ssl/private/tinypilot-nginx.key";\nssl_protocols TLSv1.2;\nssl_prefer_server_ciphers on;\nssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;\nssl_ecdh_curve secp384r1;\nssl_session_timeout 10m;\nssl_session_cache shared:SSL:10m;\nssl_session_tickets off;\nproxy_buffers 16 16k;\nproxy_buffer_size 16k;\nproxy_set_header Host $http_host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_http_version 1.1;\nlocation /socket.io {\n proxy_pass http://tinypilot;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "Upgrade";\n # Since this is a connection upgrade, we don\'t inherit the settings from\n # above. We need these so that nginx forwards requests properly to\n # Flask-SocketIO.\n # See: https://github.com/miguelgrinberg/Flask-SocketIO/issues/1501#issuecomment-802082048\n proxy_set_header Host $http_host;\n proxy_set_header X-Forwarded-Host $http_host;\n proxy_set_header X-Forwarded-Proto $scheme;\n}\nlocation /state {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n proxy_pass http://ustreamer;\n}\nlocation /stream {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n postpone_output 0;\n proxy_buffering off;\n proxy_ignore_headers X-Accel-Buffering;\n proxy_pass http://ustreamer;\n}\nlocation /snapshot {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n proxy_pass http://ustreamer;\n}\nlocation /janus/ws {\n auth_request /auth;\n auth_request_set $auth_status $upstream_status;\n proxy_pass http://janus-ws;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection "Upgrade";\n proxy_set_header Host $http_host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Scheme $scheme;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_set_header X-Forwarded-Port $server_port;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\nlocation /ca.crt {\n alias "/etc/ssl/certs/tinypilot-ca.crt";\n}\nlocation / {\n proxy_pass http://tinypilot;\n}\nlocation /api/massStorage/backingFiles {\n # Allow large file transfers without buffering them.\n client_max_body_size 0;\n proxy_request_buffering off;\n proxy_read_timeout 1d;\n proxy_pass http://tinypilot;\n}\nlocation ~* ^/.+\\.(html|js|js.map|css|woff|woff2)$ {\n root "/opt/tinypilot/app/static";\n\n # We cache assets to prevent the browser from making redundant\n # requests to the same files while loading the page. (Observed on\n # Chrome 91.) We don’t want caching otherwise, though, in order to\n # avoid stale files after users update their device. Note, that in\n # addition to `max-age`, the browser’s caching behaviour is relative\n # to the `Last-Modified` header, so we make that seem recent.\n add_header Last-Modified $date_gmt;\n add_header Cache-Control \'public, max-age=10s\';\n}\nlocation ~* ^/.+\\.(jpg|jpeg|png|ico)$ {\n root "/opt/tinypilot/app/static";\n}\n# Authenticate any protected routes that are outside of the core\n# TinyPilot web app.\nlocation = /auth {\n internal;\n proxy_pass http://tinypilot/api/auth;\n proxy_pass_request_body off;\n proxy_set_header Content-Length "";\n proxy_set_header X-Original-URI $request_uri;\n\n # Redefine header directives, as they are not inherited here:\n # See http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header\n proxy_set_header X-Forwarded-Proto $scheme;\n}\n'}) TASK [ansible-role-nginx : Remove legacy vhosts.conf file.] ************************************************************ ok: [localhost] TASK [ansible-role-nginx : Copy nginx configuration in place.] ********************************************************* changed: [localhost] TASK [ansible-role-nginx : Ensure nginx service is running as configured.] ********************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : create the `lib` directory if it does not exist] *************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : copy `lib` scripts] ******************************************************************** ok: [localhost] => (item=/opt/tinypilot-updater/tinypilot.tinypilot-pro/files/lib/usb-gadget.sh) TASK [tinypilot.tinypilot-pro : set the path to config.txt on non-Ubuntu systems] ************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : set the path to config.txt for Ubuntu] ************************************************* skipping: [localhost] TASK [tinypilot.tinypilot-pro : check for a boot config file] ********************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : enable dwc2 driver in boot config] ***************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : check for an /etc/modules file] ******************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : enable dwc2 driver in modules] ********************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : determine if a reboot is required] ***************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create TinyPilot privileged folder] **************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : copy usb-gadget initializer] *********************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : copy usb-gadget de-initializer] ******************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : install usb-gadget initializer as a service] ******************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : enable systemd usb-gadget initializer service file] ************************************ ok: [localhost] TASK [tinypilot.tinypilot-pro : check the HID module file] ************************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : save whether the HID module should be patched] ***************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : ensure HID module is not in use] ******************************************************* skipping: [localhost] TASK [tinypilot.tinypilot-pro : unload HID module] ********************************************************************* skipping: [localhost] TASK [tinypilot.tinypilot-pro : patch HID module] ********************************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : load HID module] *********************************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : collect TinyPilot required apt packages on all systems] ******************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : add pip to required apt packages] ****************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : add pip3 to required apt packages] ***************************************************** skipping: [localhost] TASK [tinypilot.tinypilot-pro : install TinyPilot pre-requisite packages] ********************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create tinypilot group] **************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create tinypilot user] ***************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : copy admin scripts] ******************************************************************** ok: [localhost] => (item=change-hostname) ok: [localhost] => (item=check-default-credentials) changed: [localhost] => (item=collect-debug-logs) ok: [localhost] => (item=eject-mass-storage) ok: [localhost] => (item=mount-mass-storage) changed: [localhost] => (item=read-update-log) ok: [localhost] => (item=toggle-ssh-service) ok: [localhost] => (item=update) ok: [localhost] => (item=update-tls-cert-common-name) ok: [localhost] => (item=update-video-settings) TASK [tinypilot.tinypilot-pro : store passwordless sudo paths] ********************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : enable tinypilot to execute a whitelist of commands as sudo] *************************** changed: [localhost] TASK [tinypilot.tinypilot-pro : create TinyPilot folder] *************************************************************** changed: [localhost] TASK [tinypilot.tinypilot-pro : get TinyPilot repo] ******************************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : find absolute path to python3] ********************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : save absolute path to python3] ********************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : create TinyPilot virtualenv] *********************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : create TinyPilot app settings] ********************************************************* changed: [localhost] TASK [tinypilot.tinypilot-pro : fix TinyPilot folder permissions] ****************************************************** changed: [localhost] TASK [tinypilot.tinypilot-pro : install TinyPilot as a service] ******************************************************** ok: [localhost] TASK [tinypilot.tinypilot-pro : enable systemd TinyPilot service file] ************************************************* ok: [localhost] TASK [tinypilot.tinypilot-pro : install tinypilot-updater as a service] ************************************************ ok: [localhost] RUNNING HANDLER [tinypilot.tinypilot-pro : restart TinyPilot service] ************************************************** changed: [localhost] RUNNING HANDLER [ansible-role-ustreamer : restart uStreamer] *********************************************************** changed: [localhost] RUNNING HANDLER [ansible-role-nginx : reload nginx] ******************************************************************** changed: [localhost] PLAY RECAP ************************************************************************************************************* localhost : ok=91 changed=16 unreachable=0 failed=0 skipped=63 rescued=0 ignored=0 + chmod +r /var/tmp/tmp.E7tOJPSfyx.yml + sudo cp /var/tmp/tmp.E7tOJPSfyx.yml /home/tinypilot/settings.yml + sudo chown tinypilot:tinypilot /home/tinypilot/settings.yml