-
Notifications
You must be signed in to change notification settings - Fork 164
Prepare Databases for Manager
Prepare the values of the following variables before working with this page and replace their occurrences with the values when you follow the guide.
{NS} |
The etcd namespace |
{ETCDADDR} |
The etcd address ({ETCDHOST}:{ETCDPORT}) |
{DBADDR} |
The etcd address ({DBHOST}:{DBPORT}) |
{DBUSER} |
The database username (postgres for development setup) |
{DBPASS} |
The database password (develove for development setup) |
{STRGMOUNT} |
The path to the mounted shared storage |
Edit image-metadata.sample.yml and image-aliases.sample.yml according to your setup.
By default you can pull the images listed in the sample via docker pull lablup/kernel-xxxx:tag as they are hosted on the public Docker registry.
$ python -m ai.backend.manager.cli etcd update-kernels \
> --namespace={NS} --etcd-addr={ETCDADDR} \
> -f image-metadata.sample.yml$ python -m ai.backend.manager.cli etcd update-aliases \
> --namespace={NS} --etcd-addr={ETCDADDR} \
> -f image-aliases.sample.ymlYou need to install a local etcdctl client.
Unfortunately, the client is always distributed with the server (which we don't need because we already installed our etcd cluster separately). To get the client executable only, grab it from a decompressed release binary tar downloaded from here. Ensure that the binary version matches with your cluster version. Since the client executable is self-contained, you don't need to install or configure anything else.
$ ETCDCTL_API=3 etcdctl --endpoints http://{ETCDADDR} \
> put /sorna/{NS}/volumes/_vfroot {STRGMOUNT}$ psql -h {DBHOST} -U {DBPASS}postgres=# CREATE DATABASE backend;
postgres=# \q
Backend.AI uses alembic to manage database schema and its migration during version upgrades. First, localize the sample config:
$ cp alembic.ini.sample alembic.iniModify the line where sqlalchemy.url is set.
You may use the following shell command:
(ensure that special characters in your password are properly escaped)
$ sed -i'' -e 's!^sqlalchemy.url = .*$!sqlalchemy.url = postgresql://{DBUSER}:{DBPASS}@{DBHOST}/backend!' alembic.ini$ python -m ai.backend.manager.cli schema oneshot headNOTE: All sub-commands under "schema" uses alembic.ini to establish database connections.
Edit ai/backend/manager/models/fixtures.py so that you have a randomized admin keypair.
(TODO: automate here!)
Then pour it to the database:
$ python -m ai.backend.manager.cli \
> --db-addr={DBHOST}:{DBPORT} --db-user={DBUSER} --db-password={DBPASS} --db-name=backend \
> fixture populate example_keypair