Skip to content

Runtime Dependencies

Robert edited this page Apr 2, 2024 · 1 revision

Overview

There are two (mostly) independent parts to the Genisys project: the Python host service configuration tool and the NodeJS client configuration UI. Successful deployment of the Genisys project requires the dependencies for both the be installed on the same machine as parts of the service configuration component expect the NodeJS UI to be operating from the same machine. The dependencies for both are described below.

Quick Start

Assuming you are installing Genisys on Ubuntu 22.04 LTS, you can use the following script to install the dependencies for running the Genisys project. Depending on the state of the existing sytem, dkpg may prompt the user for interaction during parts of this.

# service configuration requirements
sudo apt-get update && sudo apt-get install -y \
  python3 \
  dnsmasq \
  vsftpd \
  iptables \
  iptables-persistent \
  ansible \
  curl # requirement for this script, not the Genisys project

# nodejs requirements
sudo apt-get remove -y nodejs
curl -fsSLO https://nodejs.org/dist/v14.21.3/node-v14.21.3-linux-x64.tar.gz
sudo tar -C /usr/local --strip-components 1 -xzf node-v14.21.3-linux-x64.tar.gz
rm node-v14.21.3-linux-x64.tar.gz

Additionally, a MongoDB server needs to be configured for the two components to communicate. Please refer to the relevant documentation for getting up and running with MongoDB. Also see the Environment Variables article for information on configuring the Genisys project to use the MongoDB instance.

Dependencies

Below is a more in-depth look at the required dependencies.

Python

The majority of the Genisys project is written in Python, specifically targeting version 3.10, the version in the Ubuntu 22.04 LTS repos. Other versions of Python 3 may work (if available), but are not considered a supported configuration.

Dnsmasq

Dnsmasq is used to manage the DNS, DHCP, and TFTP services, as described in the Network Architecture article. The DNS and DHCP services are optional, but disabling them requires secondary DNS and DHCP servers to be setup correctly and is not considered a supported configuration. See the Config File article for instructions on how to disable the DNS and DHCP components if this is required in your environment.

vsftpd

Vsftpd is the FTP service used by the Genisys project, as described in the Network Architecture article. This is used to transfer files to the client machines during the boot process and is a required component.

iptables

iptables and iptables-persistent are used to configure the Genisys host server to work as a Network Address Translation (or NAT) server. This is not a required component if you are running with a different network architecture than described in the Network Architecture article, however, due to the potentially destructive nature of the PXE boot and install process, as well as interference from other DNS or DHCP server, this is not a recommended setup.

Ansible

Ansible is used to provision clients after they have made their first boot. This is not a required component if you are not utilizing the Web UI to provision clients.

NodeJS

The Web UI runs on Node version 14. The latest version in the Ubuntu 22.04 LTS repos is Node version 12. It is recommended you uninstall any other versions of NodeJS and install the binary release from the official NodeJS download page. You can also use nvm if you would rather isolate multiple NodeJS versions on the same machine.

Installing

The runtime dependencies of the Genisys project are described above. However, you still need to somehow install the genisys command to your system in order to make use of it. The recommended (and tested) way is to install the built genisys wheel file as root using pip, but you can also use a virtual environment (which is recommended if you are not using a dedicated machine on which to host the Genisys project). See the Developing article for instructions on dependencies needed to build the wheel.

Clone this wiki locally