{ "info": { "author": "Randy May", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "# Cloudlab Overview\n\nCloudlab allows you to quickly provision a lab environment on AWS. It attempts to strike a good balance between\nconfigurability and ease of use.\n\nCloudlab provisions a single /24 subnet in its own VPC on AWS and supports deploying up to 60 hosts into that subnet.\n\nNotes:\n- Only EBS instance types are supported\n- All instances (hosts) will have an Amazon assigned public IP address and DNS name.\n- Private ip addresses must be in the range 10.0.0.101 - 10.0.0.254 \n- All hosts will run Amazon Linux 2, which is a yum based distribution derived from Ubuntu.\n- All hosts can initiate connections to any server either in or outside of the private network\n- All hosts accept inbound connections on port 22\n- Other than port 22, hosts will only accept inbound connections on specific ports which can be configured per host\n- Each environment provisioned with cloudlab will have its own ssh key which will be shared by all the hosts.\n\n\nHosts can be accessed via ssh using the provided key and \"ec2-user\"\n(e.g. `ssh -i my-lab-key.pem ec2-user@123.45.67.89`).\n\n\nAfter provisioning is complete, Cloudlab will write an Ansible inventory file which can be used for further provisioning.\nCloudlab supports the idea of roles, which will be propagated to the Ansible inventory file.\n\n# Setup\n\nCloudlab requires python 3. It can be installed using pip.\n\n```\npip install cloudlab\n```\n\nInstalling cloudlab will install the aws cli if it is not already there.\n\nNext you will need to configure the aws cli with your AWS access key and\nsecret access key so that it can access your account. Cloudlab uses the\nthe aws cli and will have whatever privileges your cli has. You can either\nconfigure it with your root credentials or create a new IAM user and provide\nthose credentials. If you create a new IAM user, it will need the following\npermissions.\n\n```json\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": [\n \"ec2:*\",\n \"cloudformation:*\",\n \"elasticloudbalancing:*\"\n ],\n \"Effect\": \"Allow\",\n \"Resource\": \"*\"\n }\n ]\n}\n```\n\nIf your aws cli is not already configured, provide your credentials using the\ncommand below. They will be stored under the \".aws\" folder in your home\ndirectory. Note that you will be prompted to provide a region but this is\nonly a default. You can use cloudlab to deploy into any region.\n\n```\naws configure # follow the prompts ...\n```\n# Usage\n\nCreate a file called \"cloudlab_config.yaml\" in the current directory and edit it to describe the environment(s) you\nwould like to provision. An example is given below.\n\n```yaml\n\n---\n region: us-east-1\n servers:\n - instance_type: m5.xlarge\n private_ip_addresses: [101,102,103] # 3 servers like this - private IPs will be 10.0.0.101,102,103\n roles:\n - ClusterMember\n - instance_type: m5.xlarge\n private_ip_addresses: [111] # 1 server like this - private IP will be 10.0.0.111\n roles:\n - ManCenter # Servers may have one or more roles\n - RawTransactionSource # Roles must be alphanumeric - no underscores or hyphens\n - ReportRunner\n - instance_type: m5.xlarge\n private_ip_addresses: [112] \n roles:\n - TransactionClient\n open_ports: # Open ports are specified by role\n ClusterMember:\n - 5701\n - 5702\n - 5703\n ManCenter:\n - 8080\n RawTransactionSource: [] # configure no open ports like this\n ReportRunner: [] # all servers will still listen on port 22 for SSH connections\n TransactionClient: []\n```\n\nCreate an environment ...\n\n```\ncloudlab mkenv envdir\n```\n\n\"envdir\" should be an absolute or relative path. The `basename(envdir)` will be used as the name of the environment\nand must be unique.\n\nThe \"envdir\" directory will be created. The process will fail if the directory already exists.\n\nAn Ansible inventory file containing both the public and private ip addresses will be written into\n\"envdir\" to faciliate managing the environment with Ansible playbooks\n\n```\ncloudlab rmenv envdir\n```\n\nWill destroy a previously created environment.\n\n```\ncloudlab update envdir\n\n```\n\nWill cause the environment to be updated based on changes to \"cloudlab_config.yaml\"\n\n# Release Notes\n\n## v1.1.8\n\n- tplate updates broke cloudlab. The tplate version is now pinned to 1.0.3.\n\n## v1.1.7\n\n- Due to a limitation of 60 outputs in an AWS CloudFormation template, it was\n not possible to provision more than 20 servers using cloudlab. With this\n update, the limit has been raised to 60 servers.\n\n## v1.1.6\n\n- fix for failing \"update\" command\n\n## v1.1.5\n\n- fixed a bug that caused mkenv to fail\n\n## v1.1.4\n\n- added the \"update\" command", "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/wrmay/cloudlab", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "cloudlab", "package_url": "https://pypi.org/project/cloudlab/", "platform": "", "project_url": "https://pypi.org/project/cloudlab/", "project_urls": { "Homepage": "https://github.com/wrmay/cloudlab" }, "release_url": "https://pypi.org/project/cloudlab/1.1.8/", "requires_dist": null, "requires_python": "", "summary": "A tool for quickly provisioning environments on AWS for use with classes and performance labs.", "version": "1.1.8" }, "last_serial": 5698206, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "a51556479b2916f95868a2072a1a7ca6", "sha256": "424b27f5a8b6bbf3cc0cc0db85eef1e4f8b90bf1d6d009b84e4ffac76a293aad" }, "downloads": -1, "filename": "cloudlab-1.0.tar.gz", "has_sig": false, "md5_digest": "a51556479b2916f95868a2072a1a7ca6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6674, "upload_time": "2019-05-14T13:25:16", "url": "https://files.pythonhosted.org/packages/95/9d/45c114c9ff1fecfd2ffc650064ed4d773b10d6d631b065ccc83aad0a782e/cloudlab-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b23321ff28597c84ca1b57c994f197c7", "sha256": "d8362059e531a8e7fa6d7d29d7b907064c1ed4446153e291b80a507737297925" }, "downloads": -1, "filename": "cloudlab-1.0.1.tar.gz", "has_sig": false, "md5_digest": "b23321ff28597c84ca1b57c994f197c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6692, "upload_time": "2019-05-14T13:46:13", "url": "https://files.pythonhosted.org/packages/e9/d2/2a8655f2fe73efa0ed6b185a484df1841a8901bcf0526ae23a7dc2db0e88/cloudlab-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "27d25d0f1dc4210d818eacdb44b7a3ad", "sha256": "63d4ed2f0ee4ad004c044985a125dd01f506a7833074f1e4553bc3b14f540a4c" }, "downloads": -1, "filename": "cloudlab-1.1.0.tar.gz", "has_sig": false, "md5_digest": "27d25d0f1dc4210d818eacdb44b7a3ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7406, "upload_time": "2019-05-15T15:47:34", "url": "https://files.pythonhosted.org/packages/f1/18/bee24ef4716691be5c75f7e793ee5faf4b0c3b8a64330c667b5b8e9a3460/cloudlab-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "0153d72c5ae54c24683b37f11a5efbe4", "sha256": "34d5273a72991a522e5e12b53dcbe3fe33d39f5b64b7c7527bdcdb6e5eb4690d" }, "downloads": -1, "filename": "cloudlab-1.1.1.tar.gz", "has_sig": false, "md5_digest": "0153d72c5ae54c24683b37f11a5efbe4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8018, "upload_time": "2019-05-20T13:00:30", "url": "https://files.pythonhosted.org/packages/dc/04/6ee54862756860416be9c72196c9c6c71ecc76022a9f7052697f8a209d65/cloudlab-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "f7c65ebbc47ec291422557ee7caf94b5", "sha256": "dfceaf81e88d5965db79b7baabf19f167f87d734b67db3fb3f6f164bba168f8c" }, "downloads": -1, "filename": "cloudlab-1.1.2.tar.gz", "has_sig": false, "md5_digest": "f7c65ebbc47ec291422557ee7caf94b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8075, "upload_time": "2019-05-22T14:51:00", "url": "https://files.pythonhosted.org/packages/32/91/051d2d3e45e73bbe17952b9c97bc434cd4dcfeaf363cd3d7fcef3779dbd0/cloudlab-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "c6c3a592eb1408bfb75a67417c564ec1", "sha256": "40c669f7efe7a945eb33e8ec3123b32949555bcfe0c643b8b2498d484d9a9c44" }, "downloads": -1, "filename": "cloudlab-1.1.3.tar.gz", "has_sig": false, "md5_digest": "c6c3a592eb1408bfb75a67417c564ec1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8073, "upload_time": "2019-05-22T15:26:55", "url": "https://files.pythonhosted.org/packages/e1/b2/1b12ca95f1d135a006a5690ce1538ea32df4432d24527316e407bafe81ab/cloudlab-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "68155e7c1b10210c709ae0f02d712402", "sha256": "c6196bd6eec3a8f5bb2ac32e7a3d49a8d1c67271ce20a4268b8cbbc87a9ebdce" }, "downloads": -1, "filename": "cloudlab-1.1.4.tar.gz", "has_sig": false, "md5_digest": "68155e7c1b10210c709ae0f02d712402", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8603, "upload_time": "2019-06-05T21:49:02", "url": "https://files.pythonhosted.org/packages/07/13/b30c6c6c4d77bd2a9bf1b42fefb0d646fc52e2f1daf25b591c055debb310/cloudlab-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "0498056e2c98b09d4847e5b16bddaf57", "sha256": "c4919cd7c6ebf9dbfa6cc2bc04195c0214b3d5b0afe49ff46db2c7775c07ed5b" }, "downloads": -1, "filename": "cloudlab-1.1.5.tar.gz", "has_sig": false, "md5_digest": "0498056e2c98b09d4847e5b16bddaf57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8640, "upload_time": "2019-06-06T01:12:23", "url": "https://files.pythonhosted.org/packages/71/1b/9a26395c12c9ff4c7571d67fe84611ad011e6711bd12d40233bb78c85fe4/cloudlab-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "b9b79c57ebda730c65aac8ab35f7044c", "sha256": "ece6ddf97496315ae191dfffc42fe0890e5af653bb17c3c362063507294ae5bd" }, "downloads": -1, "filename": "cloudlab-1.1.6.tar.gz", "has_sig": false, "md5_digest": "b9b79c57ebda730c65aac8ab35f7044c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8678, "upload_time": "2019-07-15T17:49:39", "url": "https://files.pythonhosted.org/packages/29/a7/8a42a3b14eb127a0e4719e54268144f42909dc56e4f84dfb1c5101911a67/cloudlab-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "7a7d9381c456e0ad6710aee5b436484b", "sha256": "be29690b09e57acc287b7883edb078e33cee7eef65655b0fd57704f3ae717128" }, "downloads": -1, "filename": "cloudlab-1.1.7.tar.gz", "has_sig": false, "md5_digest": "7a7d9381c456e0ad6710aee5b436484b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8809, "upload_time": "2019-08-03T16:24:47", "url": "https://files.pythonhosted.org/packages/8a/f8/346c36782f8554078c5409808d21b2aa94c7b20535a09010dad0278773c4/cloudlab-1.1.7.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "f1d7276fa46d3d3e6a219ea59f5c70b0", "sha256": "91c0dee8e25a3d555f9abbde8d636e66443af1cc02976ca3263abafb06cc6330" }, "downloads": -1, "filename": "cloudlab-1.1.8.tar.gz", "has_sig": false, "md5_digest": "f1d7276fa46d3d3e6a219ea59f5c70b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8864, "upload_time": "2019-08-19T13:00:16", "url": "https://files.pythonhosted.org/packages/13/fb/84df6b60bfac6061b0b1229aa8bc2be08c4f3c0e1e924b7c9668449cfce0/cloudlab-1.1.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f1d7276fa46d3d3e6a219ea59f5c70b0", "sha256": "91c0dee8e25a3d555f9abbde8d636e66443af1cc02976ca3263abafb06cc6330" }, "downloads": -1, "filename": "cloudlab-1.1.8.tar.gz", "has_sig": false, "md5_digest": "f1d7276fa46d3d3e6a219ea59f5c70b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8864, "upload_time": "2019-08-19T13:00:16", "url": "https://files.pythonhosted.org/packages/13/fb/84df6b60bfac6061b0b1229aa8bc2be08c4f3c0e1e924b7c9668449cfce0/cloudlab-1.1.8.tar.gz" } ] }