112 lines
3.0 KiB
YAML
112 lines
3.0 KiB
YAML
---
|
|
|
|
- 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"
|
|
|
|
... |