{ "info": { "author": "Gabe Levasseur", "author_email": "gabriel.m.levasseur@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Comet\nComet is a CLI to manage multiple Terraform configurations in parallel.\n\n### Features\n* Supports use of workspaces\n* Filter executions based on job name, region or workspace\n* Runs Terraform in parallel\n* DRY backend configuration\n* Maps workspaces to different accounts\n\n### Limitations\n* Cannot initialize new workspace\n* Need to run `comet init` anytime changes to Terraform files are made\n* Limited debug logging\n* Does NOT prompt user to approve apply or destroy\n* Only supports local Terraform configurations\n\n## Getting Started\n```shell\npip install pycomet\n\ncomet --help\n\nUsage: comet [OPTIONS] COMMAND [ARGS]...\n\n A program to manage and run multiple terraform configurations.\n\nOptions:\n -c, --config-file TEXT Name of comet config file [default: comet.yml]\n -d, --depends-on TEXT Run all jobs that have a depency matching a\n regex.\n --debug TEXT Enable debug output.\n -j, --jobs TEXT Filter jobs using a regular expression.\n -m, --max-parallel INTEGER Maximum number of jobs to run in parallel\n (cannot be more than number of cores).\n -r, --region TEXT Filter regions using regex.\n -w, --workspace TEXT Filter workspaces using regex.\n -v Enable debug logging\n --help Show this message and exit.\n\nCommands:\n apply Run terraform apply.\n destroy Run terraform destroy.\n init Run terraform init.\n plan Run terraform plan.\n```\n\n### Configuration\n\nThe following configuration is found in the examples directory:\n\n```yaml\n---\nworkspaces:\n - name: prod\n account_id: 12345678\n regions:\n - us-east-1\n - us-west-2\n - name: staging\n account_id: 12345678\n regions:\n - us-west-2\n - name: default\n account_id: 12345678\n regions:\n - us-west-2\n\n\n# TODO: Add support for creating provider and remote state\nbackend:\n bucket: cs-comet-test-state\n key: \"{{job_name}}/{{region}}\"\n region: \"us-west-2\"\n role_arn: \"arn:aws:iam::{{account_id}}:role/terraform\"\n\njobs:\n - name: app\n # TODO: Add ability to include other directories as dependencies\n source: app\n # Depends on can be any value you decide, it is a way to identify jobs have a common dependency. \n # If you have a job that depends on an external module you can give it a name such as modules-null-label\n # running comet -d modules-null-label will trigger every job that has the value in it's depends on list.\n depends_on:\n - users\n - modules-null-label\n - name: users\n source: users\n depends_on:\n - app\n - name: website\n source: website\n depends_on:\n - modules-null-label\n```\n#### Workspaces\nA list of workspaces used by your Terraform configurations. It is recommended to use a different\nAWS account for each workspace to isolate your environments.\n\n#### Backend\nSpecifies backend parameters to be used during terraform init. Comet using pystache to render variable values\nfrom job and workspace configurations.\n\n#### Jobs\nEach job must specify a name and source. The field depends_on is used to to filter jobs based on dependencies. However,\ndepends_on does not make a dependency graph between jobs. From our experience it is not often you want to run through\nan entire dependency graph of Terraform configurations, rather you want to run one set that depends on a common value. \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/CodeSherpas/comet", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pycomet", "package_url": "https://pypi.org/project/pycomet/", "platform": "", "project_url": "https://pypi.org/project/pycomet/", "project_urls": { "Homepage": "https://github.com/CodeSherpas/comet" }, "release_url": "https://pypi.org/project/pycomet/0.0.6/", "requires_dist": [ "Click", "pyyaml", "pystache", "jsonschema", "python-terraform" ], "requires_python": "", "summary": "A CLI tool to manage Terraform Components", "version": "0.0.6" }, "last_serial": 5162921, "releases": { "0.0.6": [ { "comment_text": "", "digests": { "md5": "b897ea7703d49ecb2836dc0cd7d29cab", "sha256": "ef42ea5cf0ade5eaca6d543f06bc4105191f7bead3542259295c5a57d7e34c89" }, "downloads": -1, "filename": "pycomet-0.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "b897ea7703d49ecb2836dc0cd7d29cab", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8743, "upload_time": "2019-04-19T01:57:41", "url": "https://files.pythonhosted.org/packages/06/e2/edfdcbedf8ddbb8a214051f3d2d615059c3a1ebf0c00ca54af8372173437/pycomet-0.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d32cec495dc5d6281caf749c69d9fc58", "sha256": "b8175afece3c385ebcb622a180786e7eb4935c3b187b04a832197dc9dbcf986e" }, "downloads": -1, "filename": "pycomet-0.0.6.tar.gz", "has_sig": false, "md5_digest": "d32cec495dc5d6281caf749c69d9fc58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6244, "upload_time": "2019-04-19T01:57:42", "url": "https://files.pythonhosted.org/packages/3e/29/94a7424f9b2276187a3f40c3b843af9be1ab33a49e6892fcc55defbbaf19/pycomet-0.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b897ea7703d49ecb2836dc0cd7d29cab", "sha256": "ef42ea5cf0ade5eaca6d543f06bc4105191f7bead3542259295c5a57d7e34c89" }, "downloads": -1, "filename": "pycomet-0.0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "b897ea7703d49ecb2836dc0cd7d29cab", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8743, "upload_time": "2019-04-19T01:57:41", "url": "https://files.pythonhosted.org/packages/06/e2/edfdcbedf8ddbb8a214051f3d2d615059c3a1ebf0c00ca54af8372173437/pycomet-0.0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d32cec495dc5d6281caf749c69d9fc58", "sha256": "b8175afece3c385ebcb622a180786e7eb4935c3b187b04a832197dc9dbcf986e" }, "downloads": -1, "filename": "pycomet-0.0.6.tar.gz", "has_sig": false, "md5_digest": "d32cec495dc5d6281caf749c69d9fc58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6244, "upload_time": "2019-04-19T01:57:42", "url": "https://files.pythonhosted.org/packages/3e/29/94a7424f9b2276187a3f40c3b843af9be1ab33a49e6892fcc55defbbaf19/pycomet-0.0.6.tar.gz" } ] }