Skip to main content

Application deployment on CoreOS clusters using fleetd and Consul

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

Easy docker stack deployment to CoreOS clusters using Fleet and Consul.

Houston installs as a command-line application and is meant to be used for automated deployment of Dockerized application stacks.

Houston deployments allow for files to be placed onto the host OS, the deployment of dependency containers, confirmed startup of a container using Consul, and teardown of previous container versions in a single run.

Version Downloads Status Coverage License

Installation

Houston may be installed via the Python package index with the tool of your choice:

pip install houston

Documentation

Documentation is available on ReadTheDocs.

There is also an example configuration directory.

Usage Example

Example of deploying a full stack application:

houston -c config -e test-us-east-1 example 7b7d061b
INFO     Deploying example-file-deploy@11bede3c.service
INFO     Deploying example-memcached@1.4.24.service
INFO     Deploying example-nginx@35f9e1f3.service
INFO     Deploying example-consul-template-nginx@d3bac01d.service
INFO     Deploying example-pgbouncer@f20fb494.service
INFO     Deploying example-consul-template-pgbouncer@d3bac01d.service
INFO     Deploying example-datadog@ff444e66.service
INFO     Deploying example@7b7d061b.service
INFO     example@7b7d061b.service has started
INFO     Validated service is running with Consul
INFO     Destroying example@b67b4317.service
INFO     Deployment of example 7b7d061b and its dependencies successful.
INFO     Eagle, looking great. You're Go.

When executed, houston creates a tarball of files from the service’s file manifest and uploads it to Consul’s KV database. It then deploys a dynamically created systemd unit to fleet, which pulls the tarball from Consul and extracts the files to the CoreOS filesystem.

In thge next step, it iterates through the dependency containers specified in the manifest, submitting and starting each unit, waiting until a unit is listed as active in systemd for all nodes, and then moves on to the next.

One the dependency containers have started, it starts the example service, waiting for systemd to report it as active. It then queries Consul for the version of the service that has started, ensuring that it is running on all the expected nodes that fleet says it has deployed it to.

Once a deployment has been confirmed, it looks at all units submitted to fleet, checking to see if there are other versions of containers running than what it deployed. If so, it will destroy those other containers with fleet.

Finally it will check to see if any other file archive versions exist in Consul’s for the service, removing them if so.

One of the more interesting parts for managing stack deployment is the namespacing of the shared stack elements in fleet, so that updating one stack does not impact another. For example, in the configuration, a service may be referred to as only pgbouncer:f20fb494, but when deployed it will be prefixed and versioned appropriately as example-pgbouncer@f20fb494 if the service name is example.

Version History

Available at https://houston.readthedocs.org/en/latest/history.html

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

houston-0.1.2.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

houston-0.1.2-py2.py3-none-any.whl (13.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file houston-0.1.2.tar.gz.

File metadata

  • Download URL: houston-0.1.2.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for houston-0.1.2.tar.gz
Algorithm Hash digest
SHA256 84d8c5f6ba5c387b0280cf62a53d8135b8be8183718903ecb572a6d4b9816baf
MD5 24f413c1613ef354ba30c128e0746b77
BLAKE2b-256 5f2f2e85b859df16cd6f66308818c4ed2445cc3242c75477f83f5633ad382b8a

See more details on using hashes here.

File details

Details for the file houston-0.1.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for houston-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c785ecbfca42a3759f4ecfa255e85756e07c3cb2d2c3d1abf8165823dcc5f2e9
MD5 98a2448bfe57fbecbe77e314560e07d4
BLAKE2b-256 e419ddf431b9b14e11ebc9fa9ca5148d87a49c8e5d5a3e514269ea37f53d1fab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page