all working i think
This commit is contained in:
35
tasks/chrome.yaml
Normal file
35
tasks/chrome.yaml
Normal 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 }}"
|
||||
...
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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"
|
||||
|
||||
...
|
||||
@ -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
|
||||
|
||||
...
|
||||
@ -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 }}"
|
||||
|
||||
|
||||
...
|
||||
@ -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
135
tasks/service_control.yaml
Normal 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 }}"
|
||||
|
||||
|
||||
|
||||
...
|
||||
@ -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 }}"
|
||||
|
||||
@ -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"
|
||||
|
||||
Reference in New Issue
Block a user