.. | ||
README-billing.org | ||
README-how-to-configure-remote-uncloud-clients.org | ||
README-identifiers.org | ||
README-object-relations.md | ||
README-postgresql.org | ||
README-products.md | ||
README-vpn.org | ||
README.md |
Install
OS package requirements
Alpine:
apk add openldap-dev postgresql-dev
Debian/Devuan:
apt install postgresql-server-dev-all
Python requirements
If you prefer using a venv, use:
python -m venv venv
. ./venv/bin/activate
Then install the requirements
pip install -r requirements.txt
Database requirements
Due to the use of the JSONField, postgresql is required.
First create a role to be used:
postgres=# create role nico login;
Then create the database owner by the new role:
postgres=# create database uncloud owner nico;
Installing the postgresql service is os dependent, but some hints:
- Alpine:
apk add postgresql-server && rc-update add postgresql && rc-service postgresql start
- Debian/Devuan:
apt install postgresql
After postresql is started, apply the migrations:
python manage.py migrate
Flows / Orders
Creating a VMHost
Creating a VM
- Create a VMHost
- Create a VM on a VMHost
Creating a VM Snapshot
Working Beta APIs
These APIs can be used for internal testing.
URL Overview
http -a nicoschottelius:$(pass ungleich.ch/nico.schottelius@ungleich.ch) http://localhost:8000
Snapshotting
http -a nicoschottelius:$(pass ungleich.ch/nico.schottelius@ungleich.ch) http://localhost:8000/vm/snapshot/ vm_uuid=$(uuidgen)
VPNs
VPNs consist of VPNPools ("networks of networks") which are handled by VPNHosts. Users can requests VPNs with specific sizes.
VPNs support both IPv6 and IPv4. However only IPv6 support has not been
Managing VPNPools
http -a nico:$(pass ldap/nico) https://uncloud.place7.ungleich.ch/v1/admin/vpnpool/ network=2a0a:e5c1:200:: network_size=40 subnetwork_size=48 vpn_hostname=vpn-2a0ae5c1200.ungleich.ch wireguard_private_key=$(wg genkey)
This will create the VPNPool 2a0a:e5c1:200::/40 from which /48 networks will be used for clients.
VPNPools can only be managed by staff.
Managing VPNNetworks
To request a network as a client, use the following call:
http -a nicoschottelius:$(pass ungleich.ch/nico.schottelius@ungleich.ch)https://uncloud.place7.ungleich.ch/v1/net/vpn/ network_size=48 wireguard_public_key=$(wg genkey | tee privatekey | wg pubkey)
VPNNetworks can be managed by all authenticated users.
Proposed (uncoded) flows
Changing the disk size of a VM
- GET on ../vm/vm/ should list uuids of disks
- UPDATE on ../vm/disk/ with size=newsize
- Newsize > oldsize!
- Triggers shutdown of VM
- Resizes disk
- Starts VM
- Maybe confirm flag?
Adding a disk to a VM
(TBD)