cosmostat has working drive health dashboard

This commit is contained in:
2026-04-19 14:23:32 -07:00
parent c6007d9c33
commit 46d9f86d55
48 changed files with 4295 additions and 257 deletions

View File

@ -5,22 +5,10 @@
api_bind_ip: "{{ cosmostat_server_ip }}"
- name: Cosmostat - API - Stop Service
become: true
become_user: "{{ service_user }}"
ignore_errors: yes
systemd:
name: "{{ api_service_name }}.service"
state: stopped
scope: user
# create service working folder
- name: Cosmostat - API - create cosmos user systemd folder
file:
path: "{{ user_service_folder }}"
state: directory
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: '0755'
- name: Cosmostat - API - copy api files
copy:
@ -30,7 +18,9 @@
group: "{{ service_user }}"
mode: 0755
# skip this when updating to keep any settings
- name: "Cosmostat - API - template cosmostat_settings.yaml"
when: not update_pipeline | bool
template:
src: cosmostat_settings.yaml
dest: "{{ api_service_folder }}/cosmostat_settings.yaml"
@ -43,24 +33,18 @@
service_name: "{{ api_service_name }}"
service_working_folder: "{{ api_service_folder }}"
service_exe: "{{ api_service_exe }}"
service_group: "{{ service_user }}"
extra_options: ""
extra_service_options: "RestartSec=5"
template:
src: "service_template.service"
dest: "{{ user_service_folder }}/{{ api_service_name }}.service"
owner: "{{ service_user }}"
group: "{{ service_user }}"
dest: "/etc/systemd/system/{{ api_service_name }}.service"
mode: 0644
- name: Cosmostat - API - Daemon Reload, Start, Enable
become: true
become_user: "{{ service_user }}"
systemd:
daemon_reload: yes
name: "{{ api_service_name }}.service"
state: started
enabled: yes
scope: user
...

View File

@ -15,6 +15,7 @@
name: "cosmostat-dash"
tag: latest
state: absent
ignore_errors: yes
# Create web Folder
- name: "Cosmostat - Web - create {{ service_control_docker_folder }}"
@ -39,42 +40,17 @@
dest: "{{ service_control_docker_folder }}/docker-compose.yaml"
mode: 0644
# skip this when updating to keep any settings
- name: "Cosmostat - Web - template cosmostat_settings.yaml"
when: not update_pipeline | bool
template:
src: cosmostat_settings.yaml
dest: "{{ service_control_docker_folder }}/cosmostat_settings.yaml"
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: 0644
#######################
# configure as server
- name: Cosmostat - Web - Configure Server Dashboard
when: cosmostat_server | bool
block:
- name: Cosmostat - Server Dashboard - replace index.php
copy:
src: server/server.php
dest: "{{ service_control_docker_folder }}/web/html/index.php"
mode: 0755
owner: "{{ service_user }}"
group: "{{ service_user }}"
- name: Cosmostat - Server Dashboard - delete redis.js
ansible.builtin.file:
path: "{{ service_control_docker_folder }}/web/html/src/redis.js"
state: absent
- name: Cosmostat - Server Dashboard - copy system_metrics.js
copy:
src: server/system_metrics.js
dest: "{{ service_control_docker_folder }}/web/html/src/system_metrics.js"
mode: 0755
owner: "{{ service_user }}"
group: "{{ service_user }}"
- name: Cosmostat - Web - Start containers
- name: Cosmostat - Web - Start container
community.docker.docker_compose_v2:
project_src: "{{ service_control_docker_folder }}"
state: present

View File

@ -10,21 +10,24 @@
x64_arch: false
# package handler
- name: Cosmostat - Init - Get installed package list
shell: "dpkg --list | grep ii | awk '{print $2}'"
register: dpkg_output
- name: Cosmostat - Init - Install Prereq Packages
when:
- cosmostat_packages_item not in dpkg_output.stdout_lines
- cosmostat_packages_item | length > 0
apt:
name:
- "{{ cosmostat_packages_item }}"
state: present
loop: "{{ cosmostat_packages }}"
loop_control:
loop_var: cosmostat_packages_item
- name: server user and folder handlers
when: not quick_refresh | bool
block:
- name: Cosmostat - Init - Get installed package list
shell: "dpkg --list | grep ii | awk '{print $2}'"
register: dpkg_output
- name: Cosmostat - Init - Install Prereq Packages
when:
- cosmostat_packages_item not in dpkg_output.stdout_lines
- cosmostat_packages_item | length > 0
apt:
name:
- "{{ cosmostat_packages_item }}"
state: present
loop: "{{ cosmostat_packages }}"
loop_control:
loop_var: cosmostat_packages_item
# docker network for cosmostat service
- name: Cosmostat - Init - Check for docker network
@ -32,7 +35,9 @@
register: docker_network_register
- name: Cosmostat - Init - Run Network Handlers
when: docker_network_register.stdout | int == 0
when:
- docker_network_register.stdout | int == 0
- not quick_refresh | bool
block:
- name: Cosmostat - Init - Set Up docker network x64
@ -47,40 +52,44 @@
when: not x64_arch | bool
shell: "docker network create --driver bridge --subnet {{ docker_subnet }} cosmostat_net"
# allow service_user to sudo lshw without a password
- name: Cosmostat - Init - cosmos user sudoers file creation
copy:
dest: "/etc/sudoers.d/cosmostat"
content: "{{ cosmostat_sudoers_content }}"
owner: root
group: root
mode: "0600"
- name: server user and folder handlers
when: not quick_refresh | bool
block:
# allow service_user to sudo lshw without a password
- name: Cosmostat - Init - cosmos user sudoers file creation
copy:
dest: "/etc/sudoers.d/cosmostat"
content: "{{ cosmostat_sudoers_content }}"
owner: root
group: root
mode: "0600"
# allow user services to "linger"
- name: Cosmostat - Init - cosmos user enable linger
shell: "loginctl enable-linger {{ service_user }}"
register: user_linger
# allow user services to "linger"
- name: Cosmostat - Init - cosmos user enable linger
shell: "loginctl enable-linger {{ service_user }}"
register: user_linger
# create service working folder
- name: Cosmostat - Init - create cosmostat service folder
file:
path: "{{ service_folder }}"
state: directory
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: '0755'
# create service working folder
- name: Cosmostat - Init - create cosmostat service folder
file:
path: "{{ service_folder }}"
state: directory
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: '0755'
# create user service folder
- name: Cosmostat - Init - create cosmostat user service folder
file:
path: "{{ user_service_folder }}"
state: directory
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: '0755'
# create user service folder
- name: Cosmostat - Init - create cosmostat user service folder
file:
path: "{{ user_service_folder }}"
state: directory
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: '0755'
# Create python service venv
- name: Cosmostat - Init - Build Python Environment
when: not quick_refresh | bool
block:
- name: "Cosmostat - Init - create python venv folder at {{ venv_folder }}"
@ -108,4 +117,23 @@
virtualenv_command: python3 -m venv
state: present
# remove web containers if disable_local_dashboard
- name: Cosmostat - Init - container handler
when: disable_local_dashboard | bool
block:
- name: Cosmostat - Init - stop containers
community.docker.docker_compose_v2:
project_src: "{{ service_control_docker_folder }}"
state: stopped
ignore_errors: true
- name: Cosmostat - Init - Remove Cosmostat Image
community.docker.docker_image:
name: "cosmostat-dash"
tag: latest
state: absent
ignore_errors: true
...

View File

@ -1,15 +1,15 @@
---
# refresh when refresh
#- name: Quick refresh
# when: refresh_special | bool
# set_fact:
# quick_refresh: true
# new big dashboard test
#- name: MC Vizz
# include_tasks: vizz.yaml
# initializa environment
- name: Initialize Environment
when: not quick_refresh | bool
include_tasks: init.yaml
- name: disable
when: false
block:
# initialize environment
- name: Initialize Environment
include_tasks: init.yaml
# set up API
- name: Build API
@ -17,7 +17,9 @@
# set up web stack
- name: Build Web Dashboard
when: not disable_local_dashboard | bool
when:
- not disable_local_dashboard | bool
- not update_pipeline | bool
include_tasks: docker.yaml
...

View File

@ -1,25 +0,0 @@
---
# this will be ran to install the server dashboard at root
- name: Cosmostat - Server Dashboard - replace index.php
copy:
src: server/server.php
dest: "{{ service_control_web_folder }}/html/index.php"
mode: 0755
owner: "{{ service_user }}"
group: "{{ service_user }}"
- name: Cosmostat - Server Dashboard - delete redis.js
ansible.builtin.file:
path: "{{ service_control_web_folder }}/html/src/redis.js"
state: absent
- name: Cosmostat - Server Dashboard - copy system_metrics.js
copy:
src: server/system_metrics.js
dest: "{{ service_control_web_folder }}/html/src/system_metrics.js"
mode: 0755
owner: "{{ service_user }}"
group: "{{ service_user }}"
...

55
tasks/vizz.yaml Normal file
View File

@ -0,0 +1,55 @@
---
###############################################
# Full MC-Vizz Dashboard
###############################################
- name: Cosmostat - Web - stop containers
community.docker.docker_compose_v2:
project_src: "{{ service_control_vizz_folder }}"
state: "{{ 'stopped' if quick_refresh | bool else 'absent' }}"
ignore_errors: yes
# Create web Folder
- name: "Cosmostat - Web - create {{ service_control_vizz_folder }}"
file:
path: "{{ service_control_vizz_folder }}"
state: directory
mode: '0755'
owner: "{{ service_user }}"
group: "{{ service_user }}"
- name: Cosmostat - Web - copy web files
copy:
src: "vizz/docker/"
dest: "{{ service_control_vizz_folder }}/"
mode: 0755
owner: "{{ service_user }}"
group: "{{ service_user }}"
- name: Cosmostat - Web - template docker-compose.yaml
template:
src: docker-compose-vizz.yaml
dest: "{{ service_control_vizz_folder }}/docker-compose.yaml"
mode: 0644
# skip this when updating to keep any settings
- name: "Cosmostat - Web - template cosmostat_settings.yaml"
when: not update_pipeline | bool
template:
src: cosmostat_settings.yaml
dest: "{{ service_control_vizz_folder }}/cosmostat_settings.yaml"
owner: "{{ service_user }}"
group: "{{ service_user }}"
mode: 0644
- name: Cosmostat - Web - Start container
community.docker.docker_compose_v2:
project_src: "{{ service_control_vizz_folder }}"
state: present
build: "{{ 'always' if not quick_refresh | bool else 'never' }}"
register: docker_output
- debug: |
msg="{{ docker_output.actions }}"
...