all working i think

This commit is contained in:
2025-07-28 06:21:45 -07:00
parent b740ba9991
commit 211930cde3
30 changed files with 900 additions and 117 deletions

35
tasks/chrome.yaml Normal file
View File

@ -0,0 +1,35 @@
---
###############################################
# Install Chrome
- name: Chrome - Chrome - Check if installed
command: dpkg -l google-chrome-stable
register: chrome_installed
ignore_errors: true
- name: Chrome - Chrome - Set chrome_present variable
set_fact:
chrome_present: "{{ chrome_installed.rc == 0 }}"
- name: Chrome - Install Chrome
include_tasks: /var/jenkins_home/ansible/roles/install_apps/tasks/chrome.yaml
when: not chrome_present | bool
- name: Chrome - Create User Service Folder
file:
path: /home/cosmos/.config/systemd/user
state: directory
owner: cosmos
group: cosmos
mode: '0700'
- name: Chrome - clear user cache
shell: "rm -R /home/cosmos/.config/google-chrome"
###############################################
# Configure Kiosks
- name: Set up Chrome Kiosk Services
include_tasks: kiosk.yaml
loop: "{{ kiosk_service_templates }}"
...

View File

@ -8,7 +8,7 @@
apt:
name: "{{ item }}"
state: present
loop: "{{ packages }}"
loop: "{{ autologin_packages }}"
# Set sddm as def
- name: prereqs - enable sddm in xdm
@ -32,21 +32,6 @@
dest: /etc/sddm.conf
mode: 0644
###############################################
# Install Chrome
- name: prereqs - Chrome - Check if installed
command: dpkg -l google-chrome-stable
register: chrome_installed
ignore_errors: true
- name: prereqs - Chrome - Set chrome_present variable
set_fact:
chrome_present: "{{ chrome_installed.rc == 0 }}"
- name: prereqs - Install Chrome
include_tasks: /var/jenkins_home/ansible/roles/install_apps/tasks/chrome.yaml
when: not chrome_present | bool
###############################################
# Apply Profile
# Create Cosmos user folder
@ -61,7 +46,7 @@
# Extract profile
- name: prereqs - extract cosmos user profile
unarchive:
src: /var/jenkins_home/ansible-files/lldp_scan/cosmos.tar.gz
src: /var/jenkins_home/ansible-files/profile/cosmos.tar.gz
dest: /home
owner: cosmos
group: cosmos

View File

@ -9,16 +9,6 @@
owner: root
group: root
# install packages
- name: gps_service - Install Packages
apt:
name:
- gpsd
- gpsd-clients
state: present
register: apt_result
ignore_errors: true
- name: gps_service - Enable and start gpsd system service
become: true
systemd:

View File

@ -6,45 +6,48 @@
# so i can make a list of variables again
###############################################
- name: Chrome Kiosk - Create User Service Folder
- name: Chrome Kiosk - display info
debug:
msg:
- "Chrome Kiosk Configuring"
- "Kiosk Service Name: {{ item.service_name }}"
- "Chrome Website: {{ item.chrome_website }}"
- "Chrome App Resolution: {{ item.chrome_resolution }}"
# Create user data dir Folder
- name: timelapse - create working folder
when: create_data_dir | bool
file:
path: /home/cosmos/.config/systemd/user
path: "{{ item.user_data_dir }}"
state: directory
mode: '0755'
owner: cosmos
group: cosmos
mode: '0700'
- name: configure kiosks
block:
- name: Chrome Kiosk - user stop service
command: "systemctl --user -M cosmos@ stop {{ item.service_name }}.service"
ignore_errors: true
- name: Chrome Kiosk - user stop service
command: "systemctl --user -M cosmos@ stop {{ service_name }}.service"
ignore_errors: true
# - name: Chrome Kiosk - Kill chrome if running otherwise
# command: pkill chrome
# ignore_errors: true
- name: Chrome Kiosk - Kill chrome if running otherwise
command: pkill chrome
ignore_errors: true
- name: Chrome Kiosk - Copy chrome service file
template:
src: chrome-app.service.j2
dest: "/home/cosmos/.config/systemd/user/{{ item.service_name }}.service"
owner: cosmos
group: cosmos
mode: 0600
- name: Chrome Kiosk - Copy chrome service file
template:
src: chrome-app.service.j2
dest: "/home/cosmos/.config/systemd/user/{{ service_name }}.service"
owner: cosmos
group: cosmos
mode: 0600
- name: Chrome Kiosk - user daemon reload
command: "systemctl --user -M cosmos@ daemon-reload"
register: user_daemon_reload
- name: Chrome Kiosk - user daemon reload
command: "systemctl --user -M cosmos@ daemon-reload"
register: user_daemon_reload
- name: Chrome Kiosk - user enable service
command: "systemctl --user -M cosmos@ enable {{ service_name }}.service"
- name: Chrome Kiosk - user start service
command: "systemctl --user -M cosmos@ start {{ service_name }}.service"
loop: "{{ timelapse_script_templates }}"
- name: Chrome Kiosk - user enable service
command: "systemctl --user -M cosmos@ enable {{ item.service_name }}.service"
- name: Chrome Kiosk - user start service
command: "systemctl --user -M cosmos@ start {{ item.service_name }}.service"
...

View File

@ -4,24 +4,41 @@
# Playbook for configuring GOLE as Road Trip Carputer
###########################################################
# Steps:
### Packages
### uStreamer
### GPS Service
### Timelapse Service
### Sharing Page
### Photo Refresh Page
### Cosmos Autologin
### Top Cam Feed Kiosk
### Bottom Service Control Panel
#- name: Install ustreamer
# include_tasks: ustreamer.yaml
#
#- name: Install gps_service
# include_tasks: gps_service.yaml
#
#- name: install timelapse service
# include_tasks: timelapse.yaml
#
#- name: Install photo refresh site
# include_tasks: photo_refresh.yaml
- name: Install Packages
apt:
name: "{{ item }}"
state: present
loop: "{{ main_packages }}"
- name: Install ustreamer
include_tasks: ustreamer.yaml
- name: Install gps_service
include_tasks: gps_service.yaml
- name: install timelapse service
include_tasks: timelapse.yaml
- name: Install photo refresh site
include_tasks: photo_refresh.yaml
- name: Install cosmos autologin user
include_tasks: cosmos_autologin.yaml
- name: Install timelapse service control
include_tasks: service_control.yaml
- name: Set up Chrome Kiosk Services
include_tasks: chrome.yaml
...

View File

@ -1,59 +0,0 @@
---
- name: photo_refresh - set folder variable
set_fact:
docker_source: "/opt/cosmos/photo_refresh"
# Create docker Folder
- name: photo_refresh - create photo_refresh folder
file:
path: "{{ docker_source }}"
state: directory
mode: '0755'
owner: timelapse
group: timelapse
- name: photo_refresh - copy files for docker container
copy:
src: "image_refresh_php/"
dest: "{{ docker_source }}/"
mode: 0755
owner: root
group: root
- name: photo_refresh - Build image
shell: "docker build -t photo_refresh {{ docker_source }}/."
# docker_image:
# name: photo_refresh # Name of the Docker image
# source: build
# build:
# path: "{{ docker_source }}" # Path to the directory containing your Dockerfile
# state: present
# tag: latest
###############################################
# Start photo_refresh
###############################################
- name: start photo_refresh
block:
- name: photo_refresh - template config
template:
src: docker-compose-node.yaml.j2
dest: "{{ docker_source }}/docker-compose.yaml"
mode: 0644
- name: photo_refresh - Start container at 0.0.0.0:3000
shell: "docker-compose -f {{ docker_source }}/docker-compose.yaml up -d"
register: local_index_output
- debug: |
msg="{{ local_index_output.stdout_lines }}"
msg="{{ local_index_output.stderr_lines }}"
...

View File

@ -36,6 +36,12 @@
- name: start photo_refresh
block:
- name: set container_name
set_fact:
container_name: "photo_refresh"
container_http_port: "8080"
extra_volumes: |
- {{ working_folder }}/small_thumbs:/var/www/html/capture
- name: photo_refresh - template config
template:

135
tasks/service_control.yaml Normal file
View File

@ -0,0 +1,135 @@
---
###############################################
# This will be a big one, gonne need the API
# for service interaction, as well as the
# web server code
###############################################
###############################################
# This part sets up python serice control api
###############################################
- name: service control api
when: false
block:
# Stop service
- name: service_control api - stop service api
systemd:
name: service_control.service
state: stopped
ignore_errors: yes
# Create API Folder
- name: service_control api - create api folder
file:
path: "{{ service_control_folder }}"
state: directory
mode: '0755'
# Copy API Code
- name: service_control api - copy api code
copy:
src: service_control_api/app.py
dest: "{{ service_control_folder }}/app.py"
mode: 0644
# Create service_control api service
- name: 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: 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: service_control api - create service file
# vars:
template:
src: service_control.service.j2
dest: /etc/systemd/system/service_control.service
mode: 0644
# daemon reload
- name: service_control api - daemon reload
systemd:
daemon_reload: yes
# Enable and start
- name: service_control api - enable and start service api
systemd:
name: service_control.service
state: started
enabled: yes
###############################################
# This part sets up serice control website
###############################################
- name: service control web interface
when: true
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
###############################################
# Start photo_refresh
###############################################
- name: start service_control_website
block:
- name: set container_name
set_fact:
container_name: "service_control_website"
container_http_port: "8081"
- 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: local_index_output
- debug: |
msg="{{ local_index_output.stdout_lines }}"
msg="{{ local_index_output.stderr_lines }}"
...

View File

@ -1,16 +1,5 @@
---
# install packages
- name: photo_refresh - Install Packages
apt:
name:
- bc
- ffmpeg
- imagemagick
state: present
register: apt_result
ignore_errors: true
# Create working Folder
- name: timelapse - create working folder
file:
@ -18,17 +7,6 @@
state: directory
mode: '0755'
- name: timelapse - set template vars
set_fact:
# timelapse related scripts
timelapse_script_templates:
- src: timelapse_service.sh.j2
dest: "{{ working_folder }}/timelapse_service.sh"
- src: record_snapshots.sh.j2
dest: "{{ working_folder }}/record_snapshots.sh"
- src: create_timelapse.sh.j2
dest: "{{ working_folder }}/create_timelapse.sh"
- name: timelapse - template scripts
template:
src: "{{ item.src }}"

View File

@ -1,13 +1,5 @@
---
- name: ustreamer - Install Packages
apt:
name:
- ustreamer
state: present
register: apt_result
ignore_errors: true
- name: ustreamer - Create user
user:
name: "ustreamer"