Files
cosmoserver/tasks/init.yaml
2026-03-21 21:20:00 -07:00

134 lines
3.7 KiB
YAML

---
# get arch
- name: Cosmostat - Init - Check CPU Arch
shell: "dpkg --print-architecture"
register: cpu_architecture_output
- name: Cosmostat - Init - Set x64_arch variable
when: "'arm64' in cpu_architecture_output.stdout"
set_fact:
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
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
shell: "ip -o -4 ad | grep {{ docker_gateway }} | wc -l"
register: docker_network_register
- name: Cosmostat - Init - Run Network Handlers
when: docker_network_register.stdout | int == 0
block:
- name: Cosmostat - Init - Set Up docker network x64
when: x64_arch | bool
community.docker.docker_network:
name: "cosmostat_net"
driver: bridge
ipam_config:
- subnet: "{{ docker_subnet }}"
- name: Cosmostat - Init - Set Up docker network arm64
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"
# allow user services to "linger"
- name: Cosmostat - Init - cosmos user enable linger
shell: "loginctl enable-linger {{ service_user }}"
# 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 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
when: false
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:
name: ws_node
tag: latest
source: local
build:
path: "{{ service_control_web_folder }}/node_server"
dockerfile: Dockerfile
force_tag: true
state: present
force_source: true
...