{ "info": { "author": "Mike Ryan", "author_email": "mike@fadedink.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "Generic clustering package for EC2, suitable for redis/postgresql etc.\n\nThis package makes it easier to deploy clustered applications such as PostgreSQL and Redis on EC2 by handling generic logic, including::\n \n * Deciding which role the instance should assume\n * Creating and updating DNS records\n * Preparing the instance for its role (e.g. writing a recovery.conf file for postgres)\n\nBasic Usage:\n \nThe default ec2cluster classes assume your EC2 instances have JSON-encoded user data containing some specific attributes. The following attributes are required::\n \n * cluster - the name of the cluster, e.g. maindb\n\nInstall ec2cluster with pip::\n \n pip install ec2cluster\n\nCreate a configuration file::\n \n MASTER_CNAME = 'master.%(cluster)s.example.com'\n SLAVE_CNAME = 'slave.%(cluster)s.example.com'\n INIT_MASTER_SCRIPT = '/path/to/some_script.py'\n INIT_SLAVE_SCRIPT = '/path/to/another_script.py'\n\nRun ec2cluster, specifying the path to the config file::\n \n ec2cluster init # initialise the cluster service\n ec2cluster promote # promote a slave to the master role\n\n\nPostgreSQL cluster:\n-------------------\n\nWhen starting a postgres read-slave, a file named recovery.conf must be written to the postgres configuration directory. A template file is used to make it easy to customise your recovery options.\n\nConfig file::\n \n MASTER_CNAME = 'master.%(cluster)s.example.com'\n SLAVE_CNAME = 'slave.%(cluster)s.example.com'\n RECOVERY_TEMPLATE = '/path/to/template.conf'\n RECOVERY_FILENAME = '/var/lib/postgresql/9.1/main/recovery.conf'\n\nIn the recovery template file, specify the options required for your read-slaves. Instance metadata and userdata can be used for string replacement. For example::\n \n standby_mode = on\n recovery_target_timeline = latest\n pause_at_recovery_target = false\n restore_command = '/usr/bin/s3cmd --config=/var/lib/postgresql/.s3cfg get s3://%(cluster)s/archive/wal/%%f %%p'\n primary_conninfo = 'host=%(master_cname) port=5432 user=postgres password=secret sslmode=disable\n\nNote the use of \"%%f\" - because we are using string formatting we need to escape the percentage sign in order to end up with \"%f\" as required by postgres.\n\n", "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/mikery/ec2cluster", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "ec2cluster", "package_url": "https://pypi.org/project/ec2cluster/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ec2cluster/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/mikery/ec2cluster" }, "release_url": "https://pypi.org/project/ec2cluster/0.28/", "requires_dist": null, "requires_python": null, "summary": "Tools to work with clustered applications (PostgreSQL, Redis) on EC2", "version": "0.28" }, "last_serial": 791533, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "d0b745f4d5f3b9efad656c86b40e3f61", "sha256": "f3038c31e9c9ca9eb8bc766af80a80762a266dc936547bcd7dbbd7adb897230f" }, "downloads": -1, "filename": "ec2cluster-0.1.tar.gz", "has_sig": false, "md5_digest": "d0b745f4d5f3b9efad656c86b40e3f61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8910, "upload_time": "2012-11-06T15:35:51", "url": "https://files.pythonhosted.org/packages/87/76/72740a19d0192ef665c5ee811d99ff70ce707592a3b94c27fdcb12db7b20/ec2cluster-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "c77f8b547fd82a28db577f8fdd1bb2d3", "sha256": "71cb4af6051960be91a2a4da58040560995e04c6b78afab7e50b081d8cab6876" }, "downloads": -1, "filename": "ec2cluster-0.10.tar.gz", "has_sig": false, "md5_digest": "c77f8b547fd82a28db577f8fdd1bb2d3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8023, "upload_time": "2012-11-07T11:28:39", "url": "https://files.pythonhosted.org/packages/aa/a8/f821c4de459b4bbab17d8d1a61c77b1d2adc6f08d2615082d7ee9958d1aa/ec2cluster-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "1dcec1798276cbb76bb941a2a9fc7af3", "sha256": "47ae24cf93bff79305dcf3686e8d59c927d52a2f149e2b69b331cf095d76116a" }, "downloads": -1, "filename": "ec2cluster-0.11.tar.gz", "has_sig": false, "md5_digest": "1dcec1798276cbb76bb941a2a9fc7af3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8057, "upload_time": "2012-11-12T08:52:36", "url": "https://files.pythonhosted.org/packages/a4/16/f7f2d972f5859811bd479de2ca0f2dd8e0fb10c1bcb756e071f0220fef69/ec2cluster-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "bf20b74682f36c645d3d69cb388ff083", "sha256": "e481fddc29bda23678a448c95cc53ca9df8e6761b2ce71552ccc14ee04b97510" }, "downloads": -1, "filename": "ec2cluster-0.12.tar.gz", "has_sig": false, "md5_digest": "bf20b74682f36c645d3d69cb388ff083", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8181, "upload_time": "2012-11-12T15:35:01", "url": "https://files.pythonhosted.org/packages/8f/e8/71d38695354d3e70c01168ab1c6c99bd11705ad7caef2cdad0b453736597/ec2cluster-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "c90ea56299256c83ac8bf3c1cdaa948a", "sha256": "2a6b9af63643b3a1cd762ebf902208a282c7340afa81e28cb09896b4d42702b8" }, "downloads": -1, "filename": "ec2cluster-0.13.tar.gz", "has_sig": false, "md5_digest": "c90ea56299256c83ac8bf3c1cdaa948a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8144, "upload_time": "2012-11-12T17:37:55", "url": "https://files.pythonhosted.org/packages/d1/d3/2cb488023227fc7a8a96f68fbbab6e470f9819b177cb2f03994e43bcf9c4/ec2cluster-0.13.tar.gz" } ], "0.14": [ { "comment_text": "", "digests": { "md5": "af273377928ad716819ace372d9bfcb1", "sha256": "3918758f22f05318070c7f3b778fff5e62a78c59fc786bc71eef37d2272a6cba" }, "downloads": -1, "filename": "ec2cluster-0.14.tar.gz", "has_sig": false, "md5_digest": "af273377928ad716819ace372d9bfcb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8019, "upload_time": "2012-11-13T17:24:25", "url": "https://files.pythonhosted.org/packages/28/f4/d232244618660bb7a7910d7aacf4fc8f3f751f181b8c251127613fa87332/ec2cluster-0.14.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "f570b16612c6b4007991baa2eb2421ae", "sha256": "d0e76bedf0fdabc12b564dc82262226a367b50d4c6ee38a59b317a2fceda1010" }, "downloads": -1, "filename": "ec2cluster-0.15.tar.gz", "has_sig": false, "md5_digest": "f570b16612c6b4007991baa2eb2421ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8012, "upload_time": "2012-11-13T17:37:14", "url": "https://files.pythonhosted.org/packages/e6/33/13bf12f9a082217a54894626bc6cd984b75c4ecdb30d598e8fba727679f3/ec2cluster-0.15.tar.gz" } ], "0.16": [ { "comment_text": "", "digests": { "md5": "2cf271e56a6c813f6a1fb30f32816ea5", "sha256": "2084ae5a1b5ba5200f46279d28b3ae5c5bebe6b9aa39441b84569f1a376d1c7f" }, "downloads": -1, "filename": "ec2cluster-0.16.tar.gz", "has_sig": false, "md5_digest": "2cf271e56a6c813f6a1fb30f32816ea5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8333, "upload_time": "2012-11-13T19:10:20", "url": "https://files.pythonhosted.org/packages/ac/0c/ffc35fc4f1e06934ec8856310e3b6b4023ff66e223289c8d116b8eed2c11/ec2cluster-0.16.tar.gz" } ], "0.17": [ { "comment_text": "", "digests": { "md5": "532337499ff5c7bbb7a14d85c61269a3", "sha256": "e3457480b5bb210f81b710e4878b68fe69412e3001775a05d98b22778964b9df" }, "downloads": -1, "filename": "ec2cluster-0.17.tar.gz", "has_sig": false, "md5_digest": "532337499ff5c7bbb7a14d85c61269a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8381, "upload_time": "2012-11-13T19:28:10", "url": "https://files.pythonhosted.org/packages/12/e5/e40c8bce763b6f83fb5eaeb13fce632e6b26ca5bcb12c9ca09bf5682e316/ec2cluster-0.17.tar.gz" } ], "0.18": [ { "comment_text": "", "digests": { "md5": "44c98b60b0f3ca0427f0a331017b0fd2", "sha256": "757f0df943af4c4c71465e5889fe8c76f018cfaa9084c4e7abe5ebbf040b300b" }, "downloads": -1, "filename": "ec2cluster-0.18.tar.gz", "has_sig": false, "md5_digest": "44c98b60b0f3ca0427f0a331017b0fd2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8394, "upload_time": "2012-11-13T19:37:55", "url": "https://files.pythonhosted.org/packages/77/a2/0c6cf98acc3c41ab538c728483d3edb21fa86b67913fef588e6ec87f9a7c/ec2cluster-0.18.tar.gz" } ], "0.19": [ { "comment_text": "", "digests": { "md5": "97d600e550a61b360ed7cffd7a2247c4", "sha256": "2e7e6a6cff37f9b0c05c3103693d4640104b96f2cb64850058e8648f209b3db2" }, "downloads": -1, "filename": "ec2cluster-0.19.tar.gz", "has_sig": false, "md5_digest": "97d600e550a61b360ed7cffd7a2247c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8394, "upload_time": "2012-11-13T19:55:54", "url": "https://files.pythonhosted.org/packages/79/bb/80951e61db0bf5c2cb1297faabdc42a48bb6d6249f2f79c5a7278ac1ab27/ec2cluster-0.19.tar.gz" } ], "0.20": [ { "comment_text": "", "digests": { "md5": "d24cf06cdb2935492395ba9b5b77ccc6", "sha256": "64415c872f4bf994ad31a98b6c58a8c97fa23f01959c5c0b34390b3c0fb2aa35" }, "downloads": -1, "filename": "ec2cluster-0.20.tar.gz", "has_sig": false, "md5_digest": "d24cf06cdb2935492395ba9b5b77ccc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8402, "upload_time": "2012-11-13T20:26:42", "url": "https://files.pythonhosted.org/packages/40/b4/6ca2e8bf362d5c422058b633eaae69d66d67d2789a5b488b624c954a9e38/ec2cluster-0.20.tar.gz" } ], "0.21": [ { "comment_text": "", "digests": { "md5": "f02381ac512cefb0d18f23736a7bd4d7", "sha256": "16d0cf4a98acf238e2860c4a2b9fc048a3333ea379dc679e174e826c1bcd30f1" }, "downloads": -1, "filename": "ec2cluster-0.21.tar.gz", "has_sig": false, "md5_digest": "f02381ac512cefb0d18f23736a7bd4d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8441, "upload_time": "2012-11-14T11:04:48", "url": "https://files.pythonhosted.org/packages/d4/33/19aed1fb8df3bf7d890c180a87e86cc4e929e0edf51ee3fefcc3442dc86a/ec2cluster-0.21.tar.gz" } ], "0.22": [ { "comment_text": "", "digests": { "md5": "0e2f1fec842c4be1dbfe69cf657c8a6a", "sha256": "0c3cd59038af55f1a39b4dd9a450c57462d05af1d71277937611de6e143d7a9f" }, "downloads": -1, "filename": "ec2cluster-0.22.tar.gz", "has_sig": false, "md5_digest": "0e2f1fec842c4be1dbfe69cf657c8a6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8417, "upload_time": "2012-11-14T11:43:15", "url": "https://files.pythonhosted.org/packages/3f/06/487bc9cd8ccf2e25e47190c6a46ac602bcdb96683ecaf5a4548fc94c0d73/ec2cluster-0.22.tar.gz" } ], "0.23": [ { "comment_text": "", "digests": { "md5": "daf94fd2b9223194a306172a3858c705", "sha256": "8c6a2ee7b59726e1beaa77b8ae80d2149933bcaf29e26daecdba067b16d0198f" }, "downloads": -1, "filename": "ec2cluster-0.23.tar.gz", "has_sig": false, "md5_digest": "daf94fd2b9223194a306172a3858c705", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8430, "upload_time": "2012-11-15T12:16:20", "url": "https://files.pythonhosted.org/packages/f3/4b/e7980acd80634ef5cf844f3a830d6be0735de00d2d6a48e99efd13e455c8/ec2cluster-0.23.tar.gz" } ], "0.24": [ { "comment_text": "", "digests": { "md5": "922e19813ad2437b122dc34c494cc9cf", "sha256": "e21ee83ec1060f076e68034bfe59071b2649c50d675f04ceadfabccf29333ff5" }, "downloads": -1, "filename": "ec2cluster-0.24.tar.gz", "has_sig": false, "md5_digest": "922e19813ad2437b122dc34c494cc9cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8467, "upload_time": "2013-04-09T17:57:23", "url": "https://files.pythonhosted.org/packages/64/f0/8591e840f23014d6739efe97935764dff53f242952eaca7f394ce0461f0d/ec2cluster-0.24.tar.gz" } ], "0.25": [ { "comment_text": "", "digests": { "md5": "7789194d768e071da033f97481c10271", "sha256": "ab1d27f31a2182c22e40d8b6d4331c8af72bd1bab051fc6f7f99045629c87329" }, "downloads": -1, "filename": "ec2cluster-0.25.tar.gz", "has_sig": false, "md5_digest": "7789194d768e071da033f97481c10271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8460, "upload_time": "2013-04-10T08:24:09", "url": "https://files.pythonhosted.org/packages/d8/c5/4c8e4fc3796b8d80d22f70e18d9e85bfc10f0d2482ea778fbda6c222ebb9/ec2cluster-0.25.tar.gz" } ], "0.26": [ { "comment_text": "", "digests": { "md5": "0132c6bc1e6ce186eed319f7aec7feec", "sha256": "1334e7b7b7bd906864f433ade1e31291ccb994a29be9aa9dc5ccd1c1488c47c1" }, "downloads": -1, "filename": "ec2cluster-0.26.tar.gz", "has_sig": false, "md5_digest": "0132c6bc1e6ce186eed319f7aec7feec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8452, "upload_time": "2013-04-17T10:43:33", "url": "https://files.pythonhosted.org/packages/0b/29/db28c272707d41bc13ce2f216aaac412bdefda5850a508de8ab2d9f98fda/ec2cluster-0.26.tar.gz" } ], "0.27": [ { "comment_text": "", "digests": { "md5": "d6b699a665265bdc332efe1741dca0ec", "sha256": "4ccc090e4cc715699c9089967032c7a0e45cf355c27f1426221e83acceac190c" }, "downloads": -1, "filename": "ec2cluster-0.27.tar.gz", "has_sig": false, "md5_digest": "d6b699a665265bdc332efe1741dca0ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8469, "upload_time": "2013-04-17T11:58:55", "url": "https://files.pythonhosted.org/packages/fe/d8/f0bf418763f6396113936bd523e780417e09fbf4039e9663faf7ea449a09/ec2cluster-0.27.tar.gz" } ], "0.28": [ { "comment_text": "", "digests": { "md5": "dba296ce1c361b433b90ea04a8f779d4", "sha256": "896ad3d1578b796c7a1eae9cb0d0e0b709fd9ca93c9cf1479722f9605a5bb947" }, "downloads": -1, "filename": "ec2cluster-0.28.tar.gz", "has_sig": false, "md5_digest": "dba296ce1c361b433b90ea04a8f779d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8534, "upload_time": "2013-04-17T17:01:05", "url": "https://files.pythonhosted.org/packages/3c/2e/6371928bc5abecc57a188b59aa91a33db70f47e49a3cf0afe41f71c30924/ec2cluster-0.28.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "51a4840d4c3019394d2220ab6957db9f", "sha256": "ddcd8ba4f8e870a72f1270bc41597b2b48576f8734907bd31bd2288efdec1bc5" }, "downloads": -1, "filename": "ec2cluster-0.3.tar.gz", "has_sig": false, "md5_digest": "51a4840d4c3019394d2220ab6957db9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8912, "upload_time": "2012-11-06T15:37:47", "url": "https://files.pythonhosted.org/packages/c6/6d/c1217326a170d384f4aaff425516b846b88b696043133511ec7479b346bf/ec2cluster-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "bcae25b403d28fcf866e0fea5cd09d40", "sha256": "1df44e19eb2a5719b377ec78b74bb0b65a46bb7da6a5fa1c464d2987f6c8f9d1" }, "downloads": -1, "filename": "ec2cluster-0.4.tar.gz", "has_sig": false, "md5_digest": "bcae25b403d28fcf866e0fea5cd09d40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8906, "upload_time": "2012-11-06T15:38:19", "url": "https://files.pythonhosted.org/packages/21/a9/5b10cf2e873197a3b3497158a17f918aab6f69a229ca4fbff3b23b37c421/ec2cluster-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "96da53d81dae8878c818ec67db7086bb", "sha256": "4b487a103756a0ace93a9b584fba83a90b1d0dc3934f28ebe53cb44d3763e3f1" }, "downloads": -1, "filename": "ec2cluster-0.5.tar.gz", "has_sig": false, "md5_digest": "96da53d81dae8878c818ec67db7086bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8053, "upload_time": "2012-11-06T15:53:35", "url": "https://files.pythonhosted.org/packages/2f/ef/62eee5390242de5bcd15b2d6f675be73c2b80dd3a5f7ac9edefbdfea085b/ec2cluster-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "948327c02f7f964bb5e8810d23558b9b", "sha256": "a192f1e1a85c992bef81975189b131d758f8c2ab58cc64de1cc2b1a7fb4667fc" }, "downloads": -1, "filename": "ec2cluster-0.6.tar.gz", "has_sig": false, "md5_digest": "948327c02f7f964bb5e8810d23558b9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8038, "upload_time": "2012-11-06T16:06:04", "url": "https://files.pythonhosted.org/packages/88/f3/50887c98d1e83e7c117c93bc74a805c35574cd27d5afbe0b30f0a04318dd/ec2cluster-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "626c26193fe95ae7331ccce6b3463bf2", "sha256": "40d83e451dae36b3c97a0d2e78cc01e8343bb963a477114657bb009f1aedcb81" }, "downloads": -1, "filename": "ec2cluster-0.7.tar.gz", "has_sig": false, "md5_digest": "626c26193fe95ae7331ccce6b3463bf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8013, "upload_time": "2012-11-06T16:30:11", "url": "https://files.pythonhosted.org/packages/d4/46/c573d0adc10b6a674c79d9d7d8a37205a7a5be332483644c3f85edd33305/ec2cluster-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "41cb3a33986b878ba0171a04e05e3994", "sha256": "6088ad071270eedf3898318a311c31d1598479322fb76ba60c1a1eb3d49a9078" }, "downloads": -1, "filename": "ec2cluster-0.8.tar.gz", "has_sig": false, "md5_digest": "41cb3a33986b878ba0171a04e05e3994", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8019, "upload_time": "2012-11-07T08:57:53", "url": "https://files.pythonhosted.org/packages/92/9e/713cc70cd9a51c66dfa1935bd9655bdf1524e5a90edc0270e9cf3acc84d7/ec2cluster-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "449c81d8f622ea1e858c64d08a99d481", "sha256": "0aa6a2c641b9617b1def884eee3e1ad610c0b838e8abc0bd10754d603bbd69d1" }, "downloads": -1, "filename": "ec2cluster-0.9.tar.gz", "has_sig": false, "md5_digest": "449c81d8f622ea1e858c64d08a99d481", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8017, "upload_time": "2012-11-07T10:55:10", "url": "https://files.pythonhosted.org/packages/5f/77/a628eb63583fd9e2527efa3eeccfd68b4fab5292e997ccdfdd0694fca7af/ec2cluster-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dba296ce1c361b433b90ea04a8f779d4", "sha256": "896ad3d1578b796c7a1eae9cb0d0e0b709fd9ca93c9cf1479722f9605a5bb947" }, "downloads": -1, "filename": "ec2cluster-0.28.tar.gz", "has_sig": false, "md5_digest": "dba296ce1c361b433b90ea04a8f779d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8534, "upload_time": "2013-04-17T17:01:05", "url": "https://files.pythonhosted.org/packages/3c/2e/6371928bc5abecc57a188b59aa91a33db70f47e49a3cf0afe41f71c30924/ec2cluster-0.28.tar.gz" } ] }