{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only", "Topic :: System :: Systems Administration" ], "description": "# Project Eastern\n\n[![Travis](https://api.travis-ci.org/wongnai/eastern.svg?branch=master)](https://travis-ci.org/wongnai/eastern)\n[![GitHub license](https://img.shields.io/github/license/wongnai/eastern.svg)](https://github.com/wongnai/eastern/blob/master/LICENSE)\n[![Read the Docs](https://img.shields.io/readthedocs/eastern.svg)](https://eastern.rtfd.org)\n[![PyPI](https://img.shields.io/pypi/v/eastern.svg)](https://pypi.python.org/pypi/eastern)\n[![Docker Hub](https://img.shields.io/docker/build/wongnai/eastern.svg)](https://hub.docker.com/r/wongnai/eastern/)\n\nA Kubernetes templating and deployment tool.\n\n## Table of Contents\n\n* [Features](#features)\n* [Installation](#installation)\n * [Installing from PyPI](#installing-from-pypi)\n * [Running from Docker Image](#running-from-docker-image)\n * [Installing from Git](#installing-from-git)\n* [Usage](#usage)\n * [Template language](#template-language)\n * [Deploy](#deploy)\n * [Deploy jobs](#deploy-jobs)\n* [Plugin](#plugin)\n* [License](#license)\n\n## Features\n\n* Simple, logicless template engine designed for YAML\n* Work with multiple environments\n* In use in production at [Wongnai](https://www.wongnai.com)\n* Extensible plugin architecture\n\n## Installation\n\nNote that Eastern requires `kubectl`.\n\n### Installing from PyPI\n\nRun `pip install eastern` to install.\n\n### Running from Docker Image\n\nEastern is available on [Docker Hub](https://hub.docker.com/r/wongnai/eastern/) for continuous delivery users.\n\n```sh\ndocker run -v `pwd`:/projects/ --rm wongnai/eastern eastern generate /projects/kubernetes.yaml\n```\n\n### Installing from Git\n\n1. Clone this repository\n2. Run `python3 setup.py install`. You might to run this as root.\n3. Run `eastern` to verify that it is installed.\n\n## Usage\n### Template language \nAt its core, Eastern is a YAML templating tool. Eastern provides the following commands as YAML comment.\n\n- `load? file_1.yaml, file_2.yaml ...`: Load the first file available\n- `load! file_1.yaml, file_2.yaml ...`: Same as `load?` but throw when no file is loaded.\n\nThe file name and contents may contains variable interpolation. Available variable is\n\n- `${NAMESPACE}`: Name of namespace\n\nAdditional variables can be passed by `-s var=value`.\n\nFor example:\n\n```yaml\nimage: wongnai/eastern:${IMAGE_TAG}\nenv:\n # load! env-${NAMESPACE}.yaml, env.yaml\n```\n\nSee full deployment example in the [example](example/) folder.\n\nOnce you have written a template, test it with `eastern generate path/to/file.yaml namespace -s IMAGE_TAG=2.0`.\n\n### Deploy\n\nTo deploy, run `eastern deploy path/to/file.yaml namespace`.\n\nAvailable options:\n\n- `--set var=value` (`-s`): Set additional template variables\n- `--edit` (`-e`): Edit resulting YAML before deploying\n- `--no-wait`: Exit after running `kubectl` without waiting for rolling deploy\n\n### Deploy jobs\nEastern comes with [Job](https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/) deployment tool.\n\nTo start a job, run `eastern job path/to/file.yaml namespace image_tag`. The file must have the job as its only document. Eastern will add `image_tag` as job suffix, deploy, wait until job's completion and remove the job.\n\nSupplied `image_tag` is available in the template as `${IMAGE_TAG}`.\n\n## Plugin\nEastern is extensible. We use Eastern plugins ourselves. The API docs is available on [Read the Docs](https://eastern.readthedocs.io/en/latest/).\n\n## License\n(C) 2017 Wongnai Media Co, Ltd.\n\nEastern is licensed under [MIT License](LICENSE)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/wongnai/eastern", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "eastern", "package_url": "https://pypi.org/project/eastern/", "platform": "", "project_url": "https://pypi.org/project/eastern/", "project_urls": { "Homepage": "https://github.com/wongnai/eastern" }, "release_url": "https://pypi.org/project/eastern/4.4.1/", "requires_dist": [ "Click (~=6.7)", "click-log (~=0.3.2)", "PyYAML (~=4.2b4)", "stevedore (~=1.29.0)" ], "requires_python": "", "summary": "Simple Kubernetes Deployment", "version": "4.4.1" }, "last_serial": 5848648, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "16245602bf18613454d946a4064c9105", "sha256": "87d81c00c110d91fc51d5475c70f8c6fe99348fa14d59ecce30bf971855e8784" }, "downloads": -1, "filename": "eastern-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "16245602bf18613454d946a4064c9105", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12220, "upload_time": "2017-12-22T07:38:03", "url": "https://files.pythonhosted.org/packages/8f/51/b3a6c91ab431d594a39a27587b91769da5ea7abdcc8695f85a7aa5d077a1/eastern-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e891082c66138e477916d5f8217ac27", "sha256": "f74e965e99fed730090173aa8060bfbff253eaca675a6d73d9a9e74b4bc45a49" }, "downloads": -1, "filename": "eastern-2.0.0.tar.gz", "has_sig": false, "md5_digest": "2e891082c66138e477916d5f8217ac27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7711, "upload_time": "2017-12-22T07:38:06", "url": "https://files.pythonhosted.org/packages/98/72/4416469378d93bb1cad2ce355e0a28c208663b5535cfa08d2a673e2719e7/eastern-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "658ed97c254a05dc2ba55b91b0f75ab7", "sha256": "15a41d8a2112c9efb6b2b10e10a3f5dfc23e4f1139a017a078cf811de35c1543" }, "downloads": -1, "filename": "eastern-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "658ed97c254a05dc2ba55b91b0f75ab7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12478, "upload_time": "2017-12-22T08:37:39", "url": "https://files.pythonhosted.org/packages/87/5d/2a195c70c0602f1ef77408d46ea9a390c22e5f14fb1de2584da514152efc/eastern-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4af70f5125846ffb01d2821b4337c693", "sha256": "011df3e43da25c763a7d044d0242521d50b121953d6c3255ca00d2d37ef74e99" }, "downloads": -1, "filename": "eastern-2.1.0.tar.gz", "has_sig": false, "md5_digest": "4af70f5125846ffb01d2821b4337c693", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8103, "upload_time": "2017-12-22T08:37:43", "url": "https://files.pythonhosted.org/packages/ba/3f/f6bb39f85e4d3631cfa8aaad0370e26fce6f5484f4a8e76c817b4bdcf116/eastern-2.1.0.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "08ff1113d316868775c2599f2f092112", "sha256": "a1e9ca8a60ef6aa6e2acf4a80a6520fa78203820cdfa856d27f0cab89cd8e7cc" }, "downloads": -1, "filename": "eastern-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "08ff1113d316868775c2599f2f092112", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12441, "upload_time": "2018-04-10T07:55:53", "url": "https://files.pythonhosted.org/packages/ae/b4/2aeaaad61ae7d3a0ccf063c30672c17a4c1560ac5735b6efec94e096ab0a/eastern-3.0.0-py3-none-any.whl" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "c3b766f440aca5d75ecb98874eb3342d", "sha256": "bb1176780cc47e3e61b1bebdffc0831bf469445792d4851d5456808d6c36c6b9" }, "downloads": -1, "filename": "eastern-4.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c3b766f440aca5d75ecb98874eb3342d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10762, "upload_time": "2018-06-15T11:00:51", "url": "https://files.pythonhosted.org/packages/85/c7/4f9be00a9d135e5cf2eb052d9a6090646b58a12f2c3b0f94d52b7b22d782/eastern-4.0.0-py3-none-any.whl" } ], "4.1.1": [ { "comment_text": "", "digests": { "md5": "0914a8bf3a28b42c6814a13332d4b108", "sha256": "23de4dc03426b4a8dc03bbd6aa51f94021dc2c26b8994c1261572dc74f487081" }, "downloads": -1, "filename": "eastern-4.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0914a8bf3a28b42c6814a13332d4b108", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17039, "upload_time": "2018-08-06T09:25:53", "url": "https://files.pythonhosted.org/packages/e6/99/b0f08c27ba99796123a43b3b85c581791a65a1ad704c5e72a0bc71387837/eastern-4.1.1-py3-none-any.whl" } ], "4.1.2": [ { "comment_text": "", "digests": { "md5": "17fbd8170a5c094c7fe42cb1f3034996", "sha256": "88d7e312bbc15d0a0ca7d267a4be44fb912bf565495d8aba397cc08f642d458c" }, "downloads": -1, "filename": "eastern-4.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "17fbd8170a5c094c7fe42cb1f3034996", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12450, "upload_time": "2018-08-17T00:59:27", "url": "https://files.pythonhosted.org/packages/ae/2b/4bdae38c52e8a0f7512fb5017a2ebf6d6161824a315198578afaff03cc55/eastern-4.1.2-py3-none-any.whl" } ], "4.2.0": [ { "comment_text": "", "digests": { "md5": "88448664a113c3714eb5c866633b4fb6", "sha256": "04b3fbfaf9c90a1dec8069db2a2212ec160fb297afbc9115f00bcc1a2756fc78" }, "downloads": -1, "filename": "eastern-4.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "88448664a113c3714eb5c866633b4fb6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17119, "upload_time": "2018-09-24T07:17:04", "url": "https://files.pythonhosted.org/packages/3c/bf/59851cf6fe54a7b1a78755111aa9f27632ad527c64f1662bbe4e1baff1f3/eastern-4.2.0-py3-none-any.whl" } ], "4.2.1": [ { "comment_text": "", "digests": { "md5": "d82ed0fe82ac795048573d018cb51cab", "sha256": "12590e5ea7793e200a9c6810029bc829e1a07bb23cd8666ca7176c07924701e3" }, "downloads": -1, "filename": "eastern-4.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d82ed0fe82ac795048573d018cb51cab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14772, "upload_time": "2018-10-01T04:29:50", "url": "https://files.pythonhosted.org/packages/c8/91/3c41584c9a7937168b123a11e88785e59e76190fd98a48be36bcbd6215a8/eastern-4.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5bee119a7d9e85642a2ce2127ec3519", "sha256": "ff743ae8e160927ab74852e586f12943d1a9842d9a6610e3521551153704e3a4" }, "downloads": -1, "filename": "eastern-4.2.1.tar.gz", "has_sig": false, "md5_digest": "c5bee119a7d9e85642a2ce2127ec3519", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10648, "upload_time": "2018-10-01T04:29:51", "url": "https://files.pythonhosted.org/packages/a7/59/f1b1770277c9dfd8ea1892d86570e114e45205b6381db137d4aa538248e4/eastern-4.2.1.tar.gz" } ], "4.3.0": [ { "comment_text": "", "digests": { "md5": "d6d76ac6da6ae9e2eff8ed3723496fa9", "sha256": "c3bebbef7dea8a4f5f7e03994dae702080fe676ad89bfecb427f5e34f98f6544" }, "downloads": -1, "filename": "eastern-4.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d6d76ac6da6ae9e2eff8ed3723496fa9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14825, "upload_time": "2018-11-03T02:49:45", "url": "https://files.pythonhosted.org/packages/c0/7b/15786b36ced6dde59eff6230830564b2762d28185cfc54ef478198c88efd/eastern-4.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d39e35592ac51c2b2159dd45ce9159fd", "sha256": "bc39d2d824b63b520c664dcaf4c48b0af107ce11b0729dcbf7be25c66d1a4579" }, "downloads": -1, "filename": "eastern-4.3.0.tar.gz", "has_sig": false, "md5_digest": "d39e35592ac51c2b2159dd45ce9159fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12357, "upload_time": "2018-11-03T02:49:47", "url": "https://files.pythonhosted.org/packages/c3/c4/e2d3d295005a3398a6c5f1dd88207888da71e9d8bcb915b7b8aeeba6da31/eastern-4.3.0.tar.gz" } ], "4.4.0": [ { "comment_text": "", "digests": { "md5": "7f4abb65e281924e9b9b3b2b4ce20698", "sha256": "d1051caf394292ab78a8e416a2dead473ded78abce6a0625be14c8e17b6b5efe" }, "downloads": -1, "filename": "eastern-4.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7f4abb65e281924e9b9b3b2b4ce20698", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14828, "upload_time": "2019-09-18T08:00:42", "url": "https://files.pythonhosted.org/packages/7e/2e/29bff7700b8f4565ae9a1032bef00c895ea93a775cecea9563c15bddb3b3/eastern-4.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c76414195ec0544849cc43f53b214584", "sha256": "81c25bc61345111240ed135dcf615946576ffcb29e69e4dc1dd51f9be7fee124" }, "downloads": -1, "filename": "eastern-4.4.0.tar.gz", "has_sig": false, "md5_digest": "c76414195ec0544849cc43f53b214584", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12301, "upload_time": "2019-09-18T08:00:44", "url": "https://files.pythonhosted.org/packages/cd/90/e64d24caf05514c34a543e4e6e94c727d891d83307d582be00d9aaa190dd/eastern-4.4.0.tar.gz" } ], "4.4.1": [ { "comment_text": "", "digests": { "md5": "cc2cbe53cfb664723a9d47fd73c890b2", "sha256": "6fa48b9e1bd010bb939d7787b8cd4874251cceef95c7640b823912fbac795d36" }, "downloads": -1, "filename": "eastern-4.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cc2cbe53cfb664723a9d47fd73c890b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14827, "upload_time": "2019-09-18T08:29:23", "url": "https://files.pythonhosted.org/packages/04/d6/61d3e7b615a8ffc5c7cc34973d64301c1ef40c106fde1553b0a958fff5ec/eastern-4.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4c9445a4fe42f6eee7aa5fc9853f016", "sha256": "64ecbc9642dec69d6957ebc0f60885964eb60f110b48c7d0a1b44cffe0d92080" }, "downloads": -1, "filename": "eastern-4.4.1.tar.gz", "has_sig": false, "md5_digest": "c4c9445a4fe42f6eee7aa5fc9853f016", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12296, "upload_time": "2019-09-18T08:29:24", "url": "https://files.pythonhosted.org/packages/1d/4c/d81f5f284d43cf84cff1965052095f569c144653d93e72656a91e2f4ae26/eastern-4.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cc2cbe53cfb664723a9d47fd73c890b2", "sha256": "6fa48b9e1bd010bb939d7787b8cd4874251cceef95c7640b823912fbac795d36" }, "downloads": -1, "filename": "eastern-4.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cc2cbe53cfb664723a9d47fd73c890b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14827, "upload_time": "2019-09-18T08:29:23", "url": "https://files.pythonhosted.org/packages/04/d6/61d3e7b615a8ffc5c7cc34973d64301c1ef40c106fde1553b0a958fff5ec/eastern-4.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4c9445a4fe42f6eee7aa5fc9853f016", "sha256": "64ecbc9642dec69d6957ebc0f60885964eb60f110b48c7d0a1b44cffe0d92080" }, "downloads": -1, "filename": "eastern-4.4.1.tar.gz", "has_sig": false, "md5_digest": "c4c9445a4fe42f6eee7aa5fc9853f016", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12296, "upload_time": "2019-09-18T08:29:24", "url": "https://files.pythonhosted.org/packages/1d/4c/d81f5f284d43cf84cff1965052095f569c144653d93e72656a91e2f4ae26/eastern-4.4.1.tar.gz" } ] }