{ "info": { "author": "Gavin M. Roy", "author_email": "gavinr@aweber.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Communications", "Topic :: Internet", "Topic :: System :: Boot :: Init", "Topic :: System :: Clustering", "Topic :: System :: Operating System", "Topic :: System :: Software Distribution" ], "description": "Houston\n=======\nEasy docker stack deployment to `CoreOS `_ clusters using\n`Fleet `_ and `Consul `_.\n\nHouston installs as a command-line application and is meant to be used for automated\ndeployment of Dockerized application stacks.\n\nHouston deployments allow for files to be placed onto the host OS, the deployment\nof dependency containers, confirmed startup of a container using Consul, and\nteardown of previous container versions in a single run.\n\n\n|Version| |Downloads| |Status| |Coverage| |License|\n\nInstallation\n------------\n\nHouston may be installed via the `Python package index `_\nwith the tool of your choice:\n\n.. code:: bash\n\n pip install houston\n\nDocumentation\n-------------\n\nDocumentation is available on `ReadTheDocs `_.\n\nThere is also an `example configuration directory `_.\n\nDeployment Types\n----------------\nHouston has 3 deployment types: global, standalone stacks, and services. All three types allow for file archive deployments [1]_ using a `cloud-init style `_ ``write_files`` section.\n\n- Global deployments place a single list of units intended to be shared across all or a majority of CoreOS instances.\n- Standalone deployments are like the global deployment but allows for more targeted deployments with file archives deployed first.\n- Service deployments allow for the deployment of a single unit and the shared units that it is dependent upon\n\nUsage Example\n-------------\nExample of deploying a full stack application:\n\n.. code::\n\n $ houston -c config -e test-us-east-1 example 7b7d061b\n INFO Deploying example-file-deploy@11bede3c.service\n INFO Deploying example-memcached@1.4.24.service\n INFO Deploying example-nginx@35f9e1f3.service\n INFO Deploying example-consul-template-nginx@d3bac01d.service\n INFO Deploying example-pgbouncer@f20fb494.service\n INFO Deploying example-consul-template-pgbouncer@d3bac01d.service\n INFO Deploying example-datadog@ff444e66.service\n INFO Deploying example@7b7d061b.service\n INFO example@7b7d061b.service has started\n INFO Validated service is running with Consul\n INFO Destroying example@b67b4317.service\n INFO Deployment of example 7b7d061b and its dependencies successful.\n INFO Eagle, looking great. You're Go.\n\nWhen executed, houston creates a tarball of files from the `service's file manifest `_\nand uploads it to Consul's KV database. It then deploys a dynamically created systemd unit to fleet,\nwhich pulls the tarball from Consul and extracts the files to the CoreOS filesystem.\n\nIn the next step, it iterates through the dependency containers specified in the\n`manifest `_, submitting and starting each unit, waiting\nuntil a unit is listed as ``active`` in systemd for all nodes, and then\nmoves on to the next.\n\nOne the dependency containers have started, it starts the example service,\nwaiting for systemd to report it as active. It then queries Consul for the version\nof the service that has started, ensuring that it is running on all the expected\nnodes that fleet says it has deployed it to.\n\nOnce a deployment has been confirmed, it looks at all units submitted to fleet,\nchecking to see if there are other versions of containers running than what it deployed.\nIf so, it will destroy those other containers with fleet.\n\nFinally it will check to see if any other file archive versions exist in Consul's for the\nservice, removing them if so.\n\nOne of the more interesting parts for managing stack deployment is the namespacing\nof the shared stack elements in fleet, so that updating one stack does not impact\nanother. For example, in the configuration, a service may be referred to as only\n``pgbouncer:f20fb494``, but when deployed it will be prefixed and versioned\nappropriately as ``example-pgbouncer@f20fb494`` if the service name is ``example``.\n\nVersion History\n---------------\n\nAvailable at https://houston.readthedocs.org/en/latest/history.html\n\n.. |Version| image:: https://img.shields.io/pypi/v/houston.svg?\n :target: https://pypi.python.org/pypi/houston\n\n.. |Status| image:: https://img.shields.io/travis/aweber/houston.svg?\n :target: https://travis-ci.org/aweber/houston\n\n.. |Coverage| image:: https://img.shields.io/codecov/c/github/aweber/houston.svg?\n :target: https://codecov.io/github/aweber/houston?branch=master\n\n.. |Downloads| image:: https://img.shields.io/pypi/dm/houston.svg?\n :target: https://pypi.python.org/pypi/houston\n\n.. |License| image:: https://img.shields.io/pypi/l/houston.svg?\n :target: https://houston.readthedocs.org\n\n.. [1] Global file deployments happen after the unit files are deployed so that Consul can be up and running prior to the placement of the global files.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://houston.readthedocs.org", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "houston", "package_url": "https://pypi.org/project/houston/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/houston/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://houston.readthedocs.org" }, "release_url": "https://pypi.org/project/houston/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "Application deployment on CoreOS clusters using fleetd and Consul", "version": "0.3.0" }, "last_serial": 1671848, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "15f11bee06a28a6db6c672069b5f3abc", "sha256": "ea7596198f7669ddfe0a7efe4a116bfffca612210b5c686668e1db7b8860f7ed" }, "downloads": -1, "filename": "houston-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "15f11bee06a28a6db6c672069b5f3abc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12962, "upload_time": "2015-07-22T17:51:22", "url": "https://files.pythonhosted.org/packages/34/a6/8e7a0d312e2baf15f4685fe9547977f1f80cce2299d9356242eec12e7cff/houston-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2586b145a2092e047229e83d9cf6c06c", "sha256": "832c75e507f8448e8c3c6d5fbd68215ce16835c0397d650071d2b125989a119a" }, "downloads": -1, "filename": "houston-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2586b145a2092e047229e83d9cf6c06c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9592, "upload_time": "2015-07-22T17:51:19", "url": "https://files.pythonhosted.org/packages/47/a0/2815e2e46e49d292c124c837cdd01cfce31ab3ad63cfaa8b8a6943a7fbc9/houston-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5d8eb4f15c6d6ad00da295a82ae55ee9", "sha256": "566f2d44f6e62eb86a7a166b42becb9051426dba2b8c6011329e186ea677ff0e" }, "downloads": -1, "filename": "houston-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5d8eb4f15c6d6ad00da295a82ae55ee9", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12964, "upload_time": "2015-07-22T18:53:41", "url": "https://files.pythonhosted.org/packages/cb/8f/8e92b042ca5713f1d90660655306e73238f4006511ae0a7f368ca20a6af2/houston-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0b88d6dd03fe25db706f96516b583bc", "sha256": "d6b5b064fd18b5062f8ebb07ef361de81f39c677d9ebb40943ee3fa33503a68b" }, "downloads": -1, "filename": "houston-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f0b88d6dd03fe25db706f96516b583bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9589, "upload_time": "2015-07-22T18:53:38", "url": "https://files.pythonhosted.org/packages/8f/60/cc40ab476a7b046d4940c427f0b9ff147b9148ae35b9303ca84f4f9a2d1f/houston-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "98a2448bfe57fbecbe77e314560e07d4", "sha256": "c785ecbfca42a3759f4ecfa255e85756e07c3cb2d2c3d1abf8165823dcc5f2e9" }, "downloads": -1, "filename": "houston-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "98a2448bfe57fbecbe77e314560e07d4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13349, "upload_time": "2015-07-22T21:33:41", "url": "https://files.pythonhosted.org/packages/e4/19/ddf431b9b14e11ebc9fa9ca5148d87a49c8e5d5a3e514269ea37f53d1fab/houston-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24f413c1613ef354ba30c128e0746b77", "sha256": "84d8c5f6ba5c387b0280cf62a53d8135b8be8183718903ecb572a6d4b9816baf" }, "downloads": -1, "filename": "houston-0.1.2.tar.gz", "has_sig": false, "md5_digest": "24f413c1613ef354ba30c128e0746b77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9998, "upload_time": "2015-07-22T21:33:38", "url": "https://files.pythonhosted.org/packages/5f/2f/2e85b859df16cd6f66308818c4ed2445cc3242c75477f83f5633ad382b8a/houston-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "daa60c8ca3298134da6f03d4fcb794ea", "sha256": "ae202c1a017585ed77ae743ba515478e1de697a29e9c0c4d2c7b56340a3f62ac" }, "downloads": -1, "filename": "houston-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "daa60c8ca3298134da6f03d4fcb794ea", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14123, "upload_time": "2015-07-23T15:30:43", "url": "https://files.pythonhosted.org/packages/d1/56/ed98924c704241f05cff8aeefeb22a63d6e018c7665b98e47854859118e5/houston-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb6a6322248791a8ef3865795d0bb33c", "sha256": "466be1c6a9a0ef5e5395eddda86d5579a37a5c0213ac29539ed50cc838d95cde" }, "downloads": -1, "filename": "houston-0.1.3.tar.gz", "has_sig": false, "md5_digest": "eb6a6322248791a8ef3865795d0bb33c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10493, "upload_time": "2015-07-23T15:30:40", "url": "https://files.pythonhosted.org/packages/60/e5/af6aa22b8a25a21c23d0bee9a6bc64ffda43719106957e79dec27bac2cfd/houston-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "760b9949af89b51b8c15e7e55e68e9fe", "sha256": "3a12f1736c08e22f68aaa4b269118f0af14ef1b241929ade035a477f5b262515" }, "downloads": -1, "filename": "houston-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "760b9949af89b51b8c15e7e55e68e9fe", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14764, "upload_time": "2015-07-24T18:33:32", "url": "https://files.pythonhosted.org/packages/a9/8d/77b2889ed795dd2800bd165198fd913a645da7949e492776c28075cf7133/houston-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "45b75f18ec39bffa91d2df61f839beeb", "sha256": "9670fd757d43c566eeeb2bba36ebf6b3a88e65fa576f1623bfab5b4ce88dc86f" }, "downloads": -1, "filename": "houston-0.2.0.tar.gz", "has_sig": false, "md5_digest": "45b75f18ec39bffa91d2df61f839beeb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11021, "upload_time": "2015-07-24T18:33:29", "url": "https://files.pythonhosted.org/packages/d9/7b/637f2c3bd4cdd991d6ac98de7a79b8f9f4a90e42c93e0520bddad95bf251/houston-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "14491101089de28bb423522a7674ddc4", "sha256": "45f5e5cd1aa74c5d2c530f5f6091fb1c2a590d77d50cb8c22d23d79043fba194" }, "downloads": -1, "filename": "houston-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "14491101089de28bb423522a7674ddc4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14783, "upload_time": "2015-07-30T19:10:47", "url": "https://files.pythonhosted.org/packages/ee/03/15d4c1343da332b39bcb02dadfe2ad2291d9aecd56e141c2de5b47862894/houston-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f9c180ff6084c8917c69ba8060783e4", "sha256": "030eedae95a7a0d1be612165d510e923e5b82decfe1e78bc61c63f229c46863a" }, "downloads": -1, "filename": "houston-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9f9c180ff6084c8917c69ba8060783e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11038, "upload_time": "2015-07-30T19:10:45", "url": "https://files.pythonhosted.org/packages/d5/64/3bc579ac4cb97429e66d61352ebb5f503232b9158220e95c1fd9ac0424e0/houston-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "7eb973667318ee70f7368ad2d9b5f7ff", "sha256": "48457875750bcce41d0ba33f5d0197fa6cb3659ea4183e4452c415a71bea7623" }, "downloads": -1, "filename": "houston-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7eb973667318ee70f7368ad2d9b5f7ff", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14950, "upload_time": "2015-07-30T19:36:30", "url": "https://files.pythonhosted.org/packages/8d/63/d28f642fcaf7d2ec9b518733d70d936ef7d448b1ff713630417532e9e58b/houston-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7dd0144c8bcd993ecbbbfb3da9a34e4", "sha256": "b70cfc1a4debc2cc09fd8b7964226e5d5d7d5624e5b65bda45a14ffb10f23fa7" }, "downloads": -1, "filename": "houston-0.2.2.tar.gz", "has_sig": false, "md5_digest": "f7dd0144c8bcd993ecbbbfb3da9a34e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11168, "upload_time": "2015-07-30T19:36:26", "url": "https://files.pythonhosted.org/packages/cf/a6/7e230eaa62b1dd5976af94d7f02f5a1c667bfc9e9492caddfc4db0100d9d/houston-0.2.2.tar.gz" } ], "0.2.3": [], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3a197ac0d70be42f19d7387afc4aa600", "sha256": "771146f8a2eac47a1f854f466229f9be0ea3c1c5283be3be3e7b0a99a15ed572" }, "downloads": -1, "filename": "houston-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a197ac0d70be42f19d7387afc4aa600", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15278, "upload_time": "2015-08-10T19:49:37", "url": "https://files.pythonhosted.org/packages/b0/2f/367889120a2c3d95d4984388b41886c31946908aeceb0a2f16dcc83177ca/houston-0.3.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3a197ac0d70be42f19d7387afc4aa600", "sha256": "771146f8a2eac47a1f854f466229f9be0ea3c1c5283be3be3e7b0a99a15ed572" }, "downloads": -1, "filename": "houston-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a197ac0d70be42f19d7387afc4aa600", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15278, "upload_time": "2015-08-10T19:49:37", "url": "https://files.pythonhosted.org/packages/b0/2f/367889120a2c3d95d4984388b41886c31946908aeceb0a2f16dcc83177ca/houston-0.3.0-py2.py3-none-any.whl" } ] }