Cosmostat Init Commit
This commit is contained in:
46
tasks/api.yaml
Normal file
46
tasks/api.yaml
Normal file
@ -0,0 +1,46 @@
|
||||
---
|
||||
|
||||
- name: Cosmostat - API - Stop Service
|
||||
ignore_errors: yes
|
||||
shell: "systemctl --user -M {{ service_user }}@ stop {{ api_service_name }}"
|
||||
|
||||
- name: Cosmostat - API - copy api files
|
||||
copy:
|
||||
src: api/
|
||||
dest: "{{ api_service_folder }}"
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
mode: 0755
|
||||
|
||||
- name: "Cosmostat - API - template cosmostat_settings.yaml"
|
||||
template:
|
||||
src: cosmostat_settings.yaml
|
||||
dest: "{{ api_service_folder }}/cosmostat_settings.yaml"
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
mode: 0644
|
||||
|
||||
- name: "Cosmostat - API - template {{ api_service_name }}.service"
|
||||
vars:
|
||||
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: ""
|
||||
template:
|
||||
src: "service_template.service"
|
||||
dest: "{{ user_service_folder }}/{{ api_service_name }}.service"
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
mode: 0644
|
||||
|
||||
- name: Cosmostat - API - Daemon Reload
|
||||
shell: "systemctl --user -M {{ service_user }}@ daemon-reload"
|
||||
|
||||
- name: Cosmostat - API - Start Service
|
||||
shell: "systemctl --user -M {{ service_user }}@ start {{ api_service_name }}"
|
||||
|
||||
|
||||
|
||||
...
|
||||
112
tasks/init.yaml
Normal file
112
tasks/init.yaml
Normal file
@ -0,0 +1,112 @@
|
||||
---
|
||||
|
||||
- name: Cosmostat - Init - Get installed package list
|
||||
when: dpkg_output is undefined
|
||||
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
|
||||
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 - Set Up docker network
|
||||
community.docker.docker_network:
|
||||
name: "cosmostat_net"
|
||||
driver: bridge
|
||||
ipam_config:
|
||||
- subnet: "{{ docker_subnet }}"
|
||||
# - gateway: "{{ docker_gateway }}"
|
||||
|
||||
# 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
|
||||
|
||||
# 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 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
|
||||
block:
|
||||
|
||||
- name: "Cosmostat - Init - create python venv folder at {{ venv_folder }}"
|
||||
file:
|
||||
path: "{{ venv_folder }}"
|
||||
state: directory
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Cosmostat - Init - create python venv requirement file
|
||||
copy:
|
||||
dest: "{{ venv_folder }}/requirements.txt"
|
||||
content: "{{ cosmostat_venv_packages }}"
|
||||
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
mode: 0644
|
||||
|
||||
- name: Cosmostat - Init - build python venv
|
||||
become_user: "{{ service_user }}"
|
||||
pip:
|
||||
virtualenv: "{{ venv_folder }}"
|
||||
requirements: "{{ venv_folder }}/requirements.txt"
|
||||
virtualenv_command: python3 -m venv
|
||||
state: present
|
||||
|
||||
# create node.js docker container for web dashboard
|
||||
- name: node.js server container handler
|
||||
block:
|
||||
|
||||
- name: Cosmostat - Init - node.js - copy server files
|
||||
copy:
|
||||
src: "web/node_server"
|
||||
dest: "{{ service_control_web_folder }}/"
|
||||
mode: 0755
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
|
||||
- name: Cosmostat - Init - node.js - build docker container
|
||||
community.docker.docker_image_build:
|
||||
name: ws_node
|
||||
tag: latest
|
||||
rebuild: always
|
||||
path: "{{ service_control_web_folder }}/node_server"
|
||||
dockerfile: Dockerfile
|
||||
labels:
|
||||
ws_node: "true"
|
||||
|
||||
- name: Cosmostat - Init - node.js - Prune old containers
|
||||
community.docker.docker_prune:
|
||||
containers: true
|
||||
containers_filters:
|
||||
label:
|
||||
ws_node: "true"
|
||||
|
||||
...
|
||||
17
tasks/main.yaml
Normal file
17
tasks/main.yaml
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
# initializa environment
|
||||
|
||||
# set up API
|
||||
|
||||
# set up web stack
|
||||
|
||||
- name: Initialize Environment
|
||||
when: not quick_refresh | bool
|
||||
include_tasks: init.yaml
|
||||
|
||||
- name: Build API
|
||||
include_tasks: api.yaml
|
||||
|
||||
- name: Build Web Dashboard
|
||||
include_tasks: web.yaml
|
||||
...
|
||||
56
tasks/web.yaml
Normal file
56
tasks/web.yaml
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
###############################################
|
||||
# This part sets up cosmostat web dashboard
|
||||
###############################################
|
||||
|
||||
# Create web Folder
|
||||
- name: "Cosmostat - Web - create {{ service_control_web_folder }}"
|
||||
file:
|
||||
path: "{{ service_control_web_folder }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
|
||||
- name: Cosmostat - Init - node.js - copy dashboard files
|
||||
copy:
|
||||
src: "web/html"
|
||||
dest: "{{ service_control_web_folder }}/"
|
||||
mode: 0755
|
||||
owner: "{{ service_user }}"
|
||||
group: "{{ service_user }}"
|
||||
|
||||
# These are not needed unless there is a stack
|
||||
#- name: Cosmostat - Web - copy files for history dashboard
|
||||
# copy:
|
||||
# src: "dashboard/"
|
||||
# dest: "{{ service_control_web_folder }}/html"
|
||||
# mode: 0755
|
||||
# owner: "{{ service_user }}"
|
||||
# group: "{{ service_user }}"
|
||||
#
|
||||
#- name: Cosmostat - Web - copy files for proxy container
|
||||
# copy:
|
||||
# src: "proxy/"
|
||||
# dest: "{{ service_control_web_folder }}/proxy"
|
||||
# mode: 0755
|
||||
# owner: "{{ service_user }}"
|
||||
# group: "{{ service_user }}"
|
||||
|
||||
- name: docker container handler
|
||||
block:
|
||||
|
||||
- name: service_control_website - template docker-compose.yaml
|
||||
template:
|
||||
src: docker-compose.yaml
|
||||
dest: "{{ service_control_web_folder }}/docker-compose.yaml"
|
||||
mode: 0644
|
||||
|
||||
- name: "service_control_website - Start containers"
|
||||
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 }}"
|
||||
|
||||
...
|
||||
Reference in New Issue
Block a user