
Refactor orchestrator to break large monolithic functions into small functions per action. - Update orchestrator to match new statemgmt API - Pull most code out of __init__.py files - Create action classes for Orchestrator actions - Create action classes for Driver actions - Orchestrator consumes tasks from database queue - Additional encapsulation of task functionality into Task class - Create shared integration test fixtures - Fix Sphinx entrypoint so package install works - Disable bootdata API until BootAction implementation - Bring codebase into PEP8 compliance - Update documentation reflect code changes - Mark SQL #nosec for bandit Change-Id: Id9a7bdedcdd5bbf07aeabbdb52db0f0b71f1e4a4
77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# drydock_provisioner
|
|
|
|
A python REST orchestrator to translate a YAML host topology to a provisioned
|
|
set of hosts and provide a set of post-provisioning instructions.
|
|
|
|
See full documentation in [docs/source/index.rst](docs/source/index.rst).
|
|
|
|
## Required
|
|
|
|
* Python 3.5+
|
|
* A running instance of Postgres v9.5+
|
|
* A running instance of Openstack Keystone w/ the v3 API enabled
|
|
* A running instance of Canonical MaaS v2.2+
|
|
|
|
## Recommended
|
|
|
|
* A running Kubernetes cluster with Helm initialized
|
|
* Familiarity with the AT&T Community Undercloud Platform (UCP) suite of services
|
|
|
|
## Building
|
|
|
|
This service is intended to be built as a Docker container, not as a
|
|
standalone Python package. That being said, instructions are included below
|
|
for building as a package and as an image.
|
|
|
|
### Virtualenv
|
|
|
|
To build and install Drydock locally in a virtualenv first generate configuration
|
|
and policy file templates to be customized
|
|
|
|
$ tox -e genconfig
|
|
$ tox -e genpolicy
|
|
$ virtualenv -p python3.5 /var/tmp/drydock
|
|
$ . /var/tmp/drydock/bin/activate
|
|
$ pip install -r requirements-lock.txt
|
|
$ pip install .
|
|
$ cp -r etc/drydock /etc/drydock
|
|
|
|
### Docker image
|
|
|
|
$ docker build . -t drydock
|
|
|
|
## Running
|
|
|
|
The preferred deployment pattern of Drydock is via a Helm chart
|
|
to deploy Drydock into a Kubernetes cluster. Additionally use of
|
|
the rest of the UCP services provides additional functionality
|
|
for deploying (Armada) and using (Promenade, Deckhand) Drydock.
|
|
|
|
You can see an example of a full UCP deployment in the [UCP Integration](https://github.comatt-comdev/ucp-integration) repository.
|
|
|
|
### Stand up Kubernetes
|
|
|
|
Use the UCP [Promenade](https://github.com/att-comdev/promenade)
|
|
tool for starting a self-hosted Kubernetes cluster with Kubernetes
|
|
Helm deployed.
|
|
|
|
### Deploy Drydock Dependencies
|
|
|
|
There are Helm charts for deploying all the dependencies of Dryodck.
|
|
Use them for preparing your Kuberentes cluster to host Drydock.
|
|
|
|
* [Postgres](https://github.com/openstack/openstack-helm/tree/master/postgresql)
|
|
* [Keystone](https://github.com/openstack/openstack-helm/tree/master/keystone)
|
|
* [MAAS](https://github.com/att-comdev/maas)
|
|
|
|
### Deploy Drydock
|
|
|
|
Ideally you will use the UCP [Armada](https://readthedocs.org/projects/armada-helm/)
|
|
tool for deploying the Drydock chart with proper overrides, but if not you can
|
|
use the `helm` CLI tool. The below are overrides needed during deployment
|
|
|
|
* values.labels.node_selector_key: This is the kubernetes label assigned to the node you expect to host Drydock
|
|
* values.conf.dryodck.maasdriver: This is URL Drydock will use to access the MAAS API (including the URL path)
|
|
* values.images.drydock: The Drydock docker image to use
|
|
* values.images.drydock_db_sync: The Drydock docker image to use
|