{ "info": { "author": "David Losada Carballo", "author_email": "david@tuxpiper.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: System" ], "description": "CloudCast - Easy and powerful stack templates for AWS CloudFormation\n====================================================================\n\nWhat is it?\n-----------\n\nAWS CloudFormation is pretty powerful, but once your stacks are getting\nsophisticated, it can be hard to work with. You may easily get\nlost in a sea of maps and lists, and it can be hard to keep track of\nreferences across your resources.\n\nAlso, this may be my personal pet peeve, but JSON has no syntax for comments!\nThis makes templates written for CFN hard to document and maintain.\n\nWith CloudCast you can easily create any template you would write for CFN, but\nusing plain Python syntax.\n\nResources, Mappings, Parameters and Outputs are defined as Python objects. It\nlooks cleaner and you can do smarter stuff with them!\n\nFor instance:\n\n from cloudcast.template import Resource\n\n\tLoadBalancer = Resource(\n\t \"AWS::ElasticLoadBalancing::LoadBalancer\",\n\t AvailabilityZones=[ 'us-east-1c', 'us-east-1d' ],\n\t HealthCheck={\n\t \"HealthyThreshold\" : \"2\",\n\t \"Interval\" : \"30\",\n\t \"Target\" : \"HTTP:80/status\",\n\t \"Timeout\" : \"5\",\n\t \"UnhealthyThreshold\" : \"3\"\n\t },\n\t Listeners=[{\n\t \"InstancePort\" : \"80\",\n\t \"InstanceProtocol\" : 'HTTP',\n\t \"LoadBalancerPort\" : \"80\",\n\t \"Protocol\" : 'HTTP',\n\t }]\n\t ),\n\t)\n\nIf you are familiar with AWS and CFN, this structure shouldn't be strange to you.\nWe have just declared an ELB resource with some properties.\n\nLater on, the load balancer may be referenced from a security group, in order to\nbe allowed to access the service ports in the balanced instances:\n\n\tAppSG = Resource(\n\t \"AWS::EC2::SecurityGroup\",\n\t GroupDescription = \"Allow access app from LB only\",\n\t SecurityGroupIngress = [ {\n\t \"IpProtocol\" : \"tcp\",\n\t \"FromPort\" : 80,\n\t \"ToPort\" : 80,\n\t \"SourceSecurityGroupOwnerId\" : LoadBalancer['SourceSecurityGroup.OwnerAlias'],\n\t \"SourceSecurityGroupName\": LoadBalancer['SourceSecurityGroup.GroupName'],\n\t }]\n\t)\n\nSince you are dealing with Python objects, nothing is stopping you from\nbundling them in your own libraries and reusing them as necessary. We have\nan example of that around here (look at the cloudcast.library.stack_user module).\n\nIn fact, you can create any Python code that may help you making your\ntemplates simpler and more expressive!\n\nHow do you get the JSON templates?\n----------------------------------\n\nOnce you've got your template python file (let's call it template.py), you would:\n\n\tfrom cloudcast import Stack\n\tstack = Stack(\n\t\tdescription = \"Sample stack that doesn't do much\",\n\t\tenv = { ... define environment vars here ... },\n\t\tresources_file = \"template.py\"\n\t)\n\tprint stack.dump_json()\n\nThe following will happen:\n\n1. The Stack class will load, examine your code module and find\nthe relevant objects to be included in the CloudFormation template (resources,\noutputs, parameters..). It shouldn't get confused with any other code you\nmay have there.\n2. The template will be printed out for you to feed into CloudFormation.\n\nDeploying software on the instances\n-----------------------------------\n\nCloudcast helps you embed your instance software configuration into your\nCloudFormation templates. In order to do that, it allows you to leverage\nsome technologies that are usually applied for this purpose:\n\n - [cfn-init](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html)\n - shell scripts\n - [ansible](http://www.ansible.com)\n \nThe support for this is fairly extensible, so it wouldn't be too far fetched to add support for other SCMs like Chef or Puppet.\n\nSpecial thanks\n--------------\n\n[Bright & Shiny](http://brightandshiny.com/) - their support and fine\nunderstanding of well managed infrastructure, made it possible for me to\ndevote the necessary efforts to evolve this concept.\n\nIf you are looking for an awesome software agency make sure to check their\nwebsite!\n\n[Lifestreams Technology](http://lifestreams.com/) - developing for their\nproducts has proved to be an excellent ground to develop and put into\npractice new ideas such as the one that originated this project. Thanks\nfor the chance to bring CloudCast to the point where it is a key technology\nto support mission-critical operations.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/tuxpiper/cloudcast", "keywords": "aws internet cloud cloudformation deployment automation", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "cloudcast", "package_url": "https://pypi.org/project/cloudcast/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cloudcast/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/tuxpiper/cloudcast" }, "release_url": "https://pypi.org/project/cloudcast/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "Easy and powerful stack templates for AWS CloudFormation", "version": "0.1.2" }, "last_serial": 1924761, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "37782d4ecc7cb3c539acfe9b7d6bd09a", "sha256": "8fc9f3cebacc307d233b4b7ffbdfdfbfc1d7f6da443f7c2a025cd7b36da09491" }, "downloads": -1, "filename": "cloudcast-0.0.1.tar.gz", "has_sig": false, "md5_digest": "37782d4ecc7cb3c539acfe9b7d6bd09a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5671, "upload_time": "2013-06-15T16:17:05", "url": "https://files.pythonhosted.org/packages/68/b2/1cdd24fe88ab8341402638b5d692fc7d8d461ff4161fe8be9fb689bd8331/cloudcast-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "677bbba7bb2fa7c7c1b540b5b83f26c0", "sha256": "8268bf5a3b0a21b00d685010d5660b0c27422c0e2bbe22d6f44d5d9379bacca2" }, "downloads": -1, "filename": "cloudcast-0.0.2.tar.gz", "has_sig": false, "md5_digest": "677bbba7bb2fa7c7c1b540b5b83f26c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7699, "upload_time": "2014-03-16T03:38:15", "url": "https://files.pythonhosted.org/packages/79/59/0a4e4d0d2a90018f452512c27bf6e947c78087e0db3f286a6a4b6a71d0d1/cloudcast-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "94c2630856444ed0d92a7cde448876c2", "sha256": "6fead03fefaf6cbadb50d98871a196bf97d5c09fcc339fd7e85e05c62b0f24fc" }, "downloads": -1, "filename": "cloudcast-0.0.3.tar.gz", "has_sig": false, "md5_digest": "94c2630856444ed0d92a7cde448876c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10738, "upload_time": "2014-03-17T04:30:36", "url": "https://files.pythonhosted.org/packages/83/5d/77092d959dd53823e06d23193e49eebfffa13e5ac9ab548f375dec2cf9d5/cloudcast-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "93be04b1483977c7b46557ae22333a03", "sha256": "5924025e750d897b01cb2c5ee7bb78f8eb8c56d0afa7655eb2cbf7d8e80d2a5a" }, "downloads": -1, "filename": "cloudcast-0.0.4.tar.gz", "has_sig": false, "md5_digest": "93be04b1483977c7b46557ae22333a03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12314, "upload_time": "2014-03-18T21:47:28", "url": "https://files.pythonhosted.org/packages/ab/88/e1987f32835f15c2b3d764638f421088dbf30faa69a87070cf0ed287b8e1/cloudcast-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "48d13d22fc38fb16f6e6de014fb53061", "sha256": "e914284c5985fcfd517e9bbe64dd084a31f4347db9021151b35dfeb7d26aa1e6" }, "downloads": -1, "filename": "cloudcast-0.0.5.tar.gz", "has_sig": false, "md5_digest": "48d13d22fc38fb16f6e6de014fb53061", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13747, "upload_time": "2014-03-23T14:44:17", "url": "https://files.pythonhosted.org/packages/38/0a/0510d29b56f49c88127a89179e27cfaf429fce2251c30c4e1d3083d9381a/cloudcast-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "38b6e317eb2994ea38cc26651bb1158a", "sha256": "a0fa22cfad4231b9ab3b7070abdae2dcfe7978d42771ceea740c059029d65907" }, "downloads": -1, "filename": "cloudcast-0.0.6.tar.gz", "has_sig": false, "md5_digest": "38b6e317eb2994ea38cc26651bb1158a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13809, "upload_time": "2014-03-24T14:10:46", "url": "https://files.pythonhosted.org/packages/2b/d7/9ff03c75d36c7c09322d8830ae77d55c51ee12d5fea6f3206346f097cad8/cloudcast-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c635519fc693cda213c6923d9c6dd423", "sha256": "0b417b1d3f78a2c27bfce7af2049851f438395fab7088cf5c66cbfc0ebdd5af4" }, "downloads": -1, "filename": "cloudcast-0.0.7.tar.gz", "has_sig": false, "md5_digest": "c635519fc693cda213c6923d9c6dd423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18787, "upload_time": "2014-04-09T16:00:23", "url": "https://files.pythonhosted.org/packages/7e/8d/c16036bd6d72276c57c84cf4b7b49c83cfdbbdeeb3175d961140ccdaea5b/cloudcast-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "b2dd2cde2d8fae12a6de66ff698e5129", "sha256": "53c6694d901132a9dded5c1a2700ea5b64b3436c0d3a705411e87e3006e2da56" }, "downloads": -1, "filename": "cloudcast-0.0.8.tar.gz", "has_sig": false, "md5_digest": "b2dd2cde2d8fae12a6de66ff698e5129", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18791, "upload_time": "2014-04-30T14:30:25", "url": "https://files.pythonhosted.org/packages/aa/ab/a1479ab98ce23635a3639d705f36fe76b8a4808dd37fc53ef739560f5a83/cloudcast-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "b3e1d1872cf1ecc325321a36e32f8806", "sha256": "2daea23c12288d603201dcac13136532c192271f6a510445245942517d29934b" }, "downloads": -1, "filename": "cloudcast-0.0.9.tar.gz", "has_sig": false, "md5_digest": "b3e1d1872cf1ecc325321a36e32f8806", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18850, "upload_time": "2015-03-06T22:17:06", "url": "https://files.pythonhosted.org/packages/24/f9/70f49aace1c18b50a021215385310927c2285ae2c09998568c8c2d2c9365/cloudcast-0.0.9.tar.gz" } ], "0.1.0": [], "0.1.1": [ { "comment_text": "", "digests": { "md5": "020f9a4aeb4971bf14d3b1589a8a9289", "sha256": "9445981d3c44cd405fbd466cff48cb7c78ae54093c54e2e5708a6d2554a446c7" }, "downloads": -1, "filename": "cloudcast-0.1.1.tar.gz", "has_sig": false, "md5_digest": "020f9a4aeb4971bf14d3b1589a8a9289", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23732, "upload_time": "2015-08-16T22:44:40", "url": "https://files.pythonhosted.org/packages/46/36/46de83f5c70b8ef1af79f8bbb6b7e56c7ea0373f3e40bacbefd1feca39cf/cloudcast-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f84d23600b92e278871df3f1daa9c9a7", "sha256": "01ae3f7b5a4759571b8b301ed48dae283ef27c587d0a69959d7d90c1e1d04a81" }, "downloads": -1, "filename": "cloudcast-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f84d23600b92e278871df3f1daa9c9a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23710, "upload_time": "2016-01-27T01:47:30", "url": "https://files.pythonhosted.org/packages/b6/e8/df97ed6c6fcb5b402e91e4204de685ac61cb8e8868be3b503ddd4b8ccdd7/cloudcast-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f84d23600b92e278871df3f1daa9c9a7", "sha256": "01ae3f7b5a4759571b8b301ed48dae283ef27c587d0a69959d7d90c1e1d04a81" }, "downloads": -1, "filename": "cloudcast-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f84d23600b92e278871df3f1daa9c9a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23710, "upload_time": "2016-01-27T01:47:30", "url": "https://files.pythonhosted.org/packages/b6/e8/df97ed6c6fcb5b402e91e4204de685ac61cb8e8868be3b503ddd4b8ccdd7/cloudcast-0.1.2.tar.gz" } ] }