A configuration management service with support for secrets.
Go to file
Mark Burnett e54c3871c9 Test: add real-world functional schema validation
Change-Id: I1d49ff459da3e64ee3e32247e66a56e5160b9882
2017-12-21 14:48:42 -06:00
charts/deckhand Images: Remove Kolla-Toolbox image as not required 2017-11-16 12:05:17 -05:00
deckhand Test: add real-world functional schema validation 2017-12-21 14:48:42 -06:00
doc/source Merge "DECKHAND-89: Integrate layering with rendered documents" 2017-12-20 11:04:29 -05:00
etc/deckhand Rename Deckhand bucket endpoint to buckets for consistency 2017-10-27 19:21:03 +01:00
releasenotes Only allow one LayeringPolicy to exist in the system. 2017-10-26 17:38:24 -04:00
tools Test fix: remove conflicting docker run option 2017-12-14 09:16:22 -06:00
.coveragerc Add Deckhand coverage job 2017-08-15 16:11:35 -04:00
.gitignore Deckhand Negative RBAC test scenarios 2017-10-31 17:37:39 +00:00
.gitreview Add gitreview file 2017-08-11 01:22:26 -05:00
.testr.conf [feat] DECKHAND-28: Document pre-validation logic and API integration 2017-08-08 18:52:44 +01:00
AUTHORS [docs] Document schemas used for document validation 2017-11-30 16:36:27 -04:00
Dockerfile DeckHand Dockerfile 2017-09-14 16:50:06 +00:00
HACKING.rst Add sphinx job for auto-generating docs 2017-09-21 16:16:23 +01:00
LICENSE Initial commit 2017-06-16 08:29:03 -07:00
Makefile Fix initial 'make charts' failure 2017-11-09 16:23:32 -07:00
README.rst Update Deckhand README and testing documentation 2017-10-26 09:52:38 -04:00
entrypoint.sh DeckHand Dockerfile 2017-09-14 16:50:06 +00:00
requirements.txt DECKHAND-87: Deckhand API client library 2017-12-13 20:56:23 +00:00
setup.cfg Integrate Deckhand with keystone auth 2017-10-16 19:54:46 +01:00
setup.py Oslo config integration (#1) 2017-06-26 16:57:50 -07:00
test-requirements.txt Fix readthedocs document build job for Deckhand 2017-12-02 16:40:04 +00:00
tox.ini Functional tests via Deckhand container and Docker 2017-12-12 18:52:54 -04:00
uwsgi.ini Add health resource for ucp-integration API convention 2017-10-23 17:34:03 +01:00

README.rst

Deckhand

Deckhand is a document-based configuration storage service built with auditability and validation in mind.

Core Responsibilities

  • layering - helps reduce duplication in configuration while maintaining auditability across many sites
  • substitution - provides separation between secret data and other configuration data, while allowing a simple interface for clients
  • revision history - improves auditability and enables services to provide functional validation of a well-defined collection of documents that are meant to operate together
  • validation - allows services to implement and register different kinds of validations and report errors

Getting Started

To generate a configuration file automatically:

$ tox -e genconfig

Resulting deckhand.conf.sample file is output to :path:etc/deckhand/deckhand.conf.sample

Copy the config file to a directory discoverably by oslo.conf:

$ cp etc/deckhand/deckhand.conf.sample ~/deckhand.conf

To setup an in-memory database for testing:

[database]

#
# From oslo.db
#

# The SQLAlchemy connection string to use to connect to the database.
# (string value)
connection = sqlite:///:memory:

To run locally in a development environment:

$ sudo pip install uwsgi
$ virtualenv -p python3 /var/tmp/deckhand
$ . /var/tmp/deckhand/bin/activate
$ sudo pip install .
$ sudo python setup.py install
$ uwsgi --ini uwsgi.ini

Testing

Automated Testing

To run unit tests using sqlite, execute:

$ tox -epy27
$ tox -epy35

against a py27- or py35-backed environment, respectively. To run individual unit tests, run:

$ tox -e py27 -- deckhand.tests.unit.db.test_revisions

for example.

To run unit tests using postgresql, postgresql must be installed in your environment. Then execute:

$ tox -epy27-postgresql
$ tox -epy35-postgresql

To run functional tests:

$ tox -e functional

You can also run a subset of tests via a regex:

$ tox -e functional -- gabbi.suitemaker.test_gabbi_document-crud-success-multi-bucket

Intgration Points

Deckhand has the following integration points:

Though, being a low-level service, has many other UCP services that integrate with it, including:

  • Drydock is orchestrated by Shipyard to perform bare metal node provisioning.
  • Promenade is indirectly orchestrated by Shipyard to configure and join Kubernetes nodes.
  • Armada is orchestrated by Shipyard to deploy and test Kubernetes workloads.

Further Reading

Undercloud Platform (UCP).