Install Resoto with pip
pip is the package installer for Python and allows for easy installation of Python packages in Linux environments.
Prerequisites​
- Python 3.9+ (3.10 is recommended)
- ArangoDB 3.8.4+
- Prometheus 2.35.0+
- At least 2 CPU cores and 8 GB of RAM
Resoto performs CPU-intensive graph operations. In a production setup, we recommend running resotocore
using the PyPy Python interpreter. On average, PyPy is 4.5 times faster than CPython (the reference Python implementation). When using Resoto in Docker we are already shipping it with PyPy by default.
Installing Resoto​
Resoto consists of multiple components that are published as individual Python packages:
- 📦
resotocore
maintains the infrastructure graph. - 📦
resotoworker
collects infrastructure data from the cloud provider APIs. - 📦
resotometrics
exports metrics in Prometheus format. - 📦
resotoshell
is the command-line interface (CLI) used to interact with Resoto. - 📦
resoto-plugins
a collection of worker plugins.
$ mkdir -p ~/resoto
$ cd ~/resoto
$ python3 -m venv resoto-venv # Create a virtual Python environment.
$ source resoto-venv/bin/activate # Activate the virtual Python environment.
$ python -m ensurepip --upgrade # Ensure pip is available.
$ pip install -U resotocore==2.4.7 resotoworker==2.4.7 resotometrics==2.4.7 resotoshell==2.4.7 resoto-plugins==2.4.7
# Generate two random passphrases. One to secure the graph database and one to secure resotocore with.
$ echo $(LC_ALL=C tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c 20) > .graphdb-password
$ echo $(LC_ALL=C tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c 20) > .pre-shared-key
$ chmod 600 .graphdb-password .pre-shared-key
Installing ArangoDB​
Follow the ArangoDB installation instructions for your Linux distribution. Also read the Linux Operating System Configuration guide for optimal database performance.
A copy'paste ready snippet that worked at the time of writing this documentation:
$ mkdir -p ~/resoto/arangodb ~/resoto/data
$ cd ~/resoto
$ curl -L -o arangodb3.tar.gz https://download.arangodb.com/arangodb39/Community/Linux/arangodb3-linux-3.9.1.tar.gz
$ tar xzf arangodb3.tar.gz --strip-components=1 -C arangodb
$ rm -f arangodb3.tar.gz
$ arangodb/bin/arangod --database.directory ~/resoto/data
This will start ArangoDB on the current shell which is useful for testing. Once Resoto Core starts it will automatically secure the ArangoDB installation using the password provided in the .graphdb-password
file (unless explicitly turned off using the --graphdb-bootstrap-do-not-secure
flag).
Read the section Securing ArangoDB for details on how to generate certificates and encrypt the connection between Resoto Core and the graph database.
Running Resoto​
Create multiple shells/tabs and run each component in a separate shell:
- resotocore
- resotoworker
- resotometrics
$ graphdb_password=$(< ~/resoto/.graphdb-password)
$ pre_shared_key=$(< ~/resoto/.pre-shared-key)
$ source ~/resoto/resoto-venv/bin/activate
$ resotocore --graphdb-password "$graphdb_password" --graphdb-server http://localhost:8529 --psk "$pre_shared_key"
Resoto Core only listens on localhost:8900
by default. Resoto Core can be configured to listen on all interfaces if desired.
$ pre_shared_key=$(< ~/resoto/.pre-shared-key)
$ source ~/resoto/resoto-venv/bin/activate
$ resotoworker --resotocore-uri https://localhost:8900 --psk "$pre_shared_key"
$ pre_shared_key=$(< ~/resoto/.pre-shared-key)
$ source ~/resoto/resoto-venv/bin/activate
$ resotometrics --resotocore-uri https://localhost:8900 --psk "$pre_shared_key"
Resoto now exposes Prometheus metrics at https://localhost:9955/metrics
. Follow the Prometheus Getting Started guide to install and configure a Prometheus server.
Launching the Command-Line Interface​
The resh
command is used to interact with resotocore
.
Simply execute the following to access the Resoto Shell interface:
$ pre_shared_key=$(< ~/resoto/.pre-shared-key)
$ source ~/resoto/resoto-venv/bin/activate
$ resh --resotocore-uri https://localhost:8900 --psk "$pre_shared_key"