--- # 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 ...