This repository started as an attempt to facilitate the work on the Exanest project, by providing an abstract, but executable, description for the provisioning of nodes.
Early in the project we realized that exchanging KVM images with various software (in our case MonetDB) pre-installed, is unpractical mainly because of the size of these images. We decided to attempt to abstract this procedure and provisioning software was a good fit for what we needed. So we chose to use Ansible to abstract and automate the procedure of installing software on exanest nodes.
Ansible has a very definite advantage in the context of Exanest over other automation software (Puppet, Chef, etc): It is agent-less and only needs a working SSH connection.
In order to run this configuration you need the following:
- Have ansible installed on your computer
- Have a working SSH connection on the node(s) you want to configure.
Specific assumptions are recorded in each role.
Make sure that files are downloaded in the host running ansible once, and upload them from here to the nodes. Instead of downloading the MonetDB tarball in every node, download it once at the localhost and upload it to the node when provisioning.
This role prepares a server as an exanest node. Specifically it creates a
user exanest
and adds an ssh public key to the authorized key list of that
user. The key should be placed at roles/exanest_node/files/public_key
.
Assumptions:
- The root password is
centos
. You can change it in the fileroles/exanest_node/vars/main.yml
(the value ofansible_ssh_pass
).
This role downloads and installs MonetDB. It depends on the role Exanest node, i.e. it will run that role, before attempting to proceed.
Assumptions:
- The node is an AArch64 processor running CentOS. (The MonetDB version installed is the precompiled MonetDB for CentOS AArch64).
This role, continues from the Monetdb role. It compiles a generator for
TPC-H data, runs it, and loads the data in MonetDB. By default it will
generate scale factor 0.1 (100 MB), but this is configurable with the
variables scale_factor
and db_name
. For example in order to generate and
load scale factor 1 you need to change both to the value 1
.
The data is loaded in a database with name SF-{{ db_name }}
(eg SF-1
).
Assumptions:
- MonetDB node has been prepared previously.
This project was created in order to facilitate the work in the Exanest project. Every time there was a trade-off between convenience and security, convenience was chosen. Be warned.
A (non complete) list of security concerns follows:
- Ansible is configured so as not to check node SSH keys
- The
root
password is explicitly recorded in the fileroles/exanest_node/vars/main.yml
- The
exanest
user password is recorded in the fileroles/monetdb_node/vars/main.yml
- The
exanest
user password is itselfexanest
All in all, this project is not secure.