用于在aws上快速配置环境以用于类和性能实验室的工具。
cloudlab的Python项目详细描述
CloudLab概述
CloudLab允许您在AWS上快速提供实验室环境。它试图在 可配置性和易用性。
cloudlab在aws上自己的vpc中提供一个/24子网,并支持将多达60台主机部署到该子网中。
注意:
- 仅支持EBS实例类型
- 所有实例(主机)都将具有amazon分配的公共ip地址和dns名称。
- 专用IP地址必须在10.0.0.101-10.0.0.254范围内
- 所有主机都将运行amazon linux 2,这是一个从ubuntu派生的基于百胜的发行版。
- 所有主机都可以在专用网络内外启动到任何服务器的连接
- 所有主机都接受端口22上的入站连接
- 除了端口22之外,主机将只接受特定端口上的入站连接,这些端口可以为每个主机配置
- 使用cloudlab配置的每个环境都有自己的ssh密钥,将由所有主机共享。
可以使用提供的密钥和“ec2 user”通过ssh访问主机
(例如ssh -i my-lab-key.pem ec2-user@123.45.67.89
)。
配置完成后,cloudlab将编写一个ansible资源清册文件,可用于进一步的配置。 cloudlab支持角色的概念,角色将被传播到ansible inventory文件。
设置
cloudlab需要python 3。它可以使用pip安装。
pip install cloudlab
安装cloudlab将安装aws cli(如果尚未安装)。
接下来,您需要使用aws访问密钥和 秘密访问密钥,以便它可以访问您的帐户。CloudLab使用 aws cli将拥有您的cli所拥有的任何特权。你也可以 使用根凭据配置它,或创建新的iam用户并提供 那些证件。如果创建新的iam用户,它将需要以下内容 权限。
{"Version":"2012-10-17","Statement":[{"Action":["ec2:*","cloudformation:*","elasticloudbalancing:*"],"Effect":"Allow","Resource":"*"}]}
如果尚未配置aws cli,请使用 命令如下。它们将存储在您家中的“.aws”文件夹下 目录。请注意,系统将提示您提供一个区域,但这是 只是违约。您可以使用cloudlab部署到任何区域。
aws configure # follow the prompts ...
用法
在当前目录中创建一个名为“cloudlab_config.yaml”的文件,并对其进行编辑以描述您所处的环境 想提供。下面给出一个例子。
---region:us-east-1servers:-instance_type:m5.xlargeprivate_ip_addresses:[101,102,103]# 3 servers like this - private IPs will be 10.0.0.101,102,103roles:-ClusterMember-instance_type:m5.xlargeprivate_ip_addresses:[111]# 1 server like this - private IP will be 10.0.0.111roles:-ManCenter# Servers may have one or more roles-RawTransactionSource# Roles must be alphanumeric - no underscores or hyphens-ReportRunner-instance_type:m5.xlargeprivate_ip_addresses:[112]roles:-TransactionClientopen_ports:# Open ports are specified by roleClusterMember:-5701-5702-5703ManCenter:-8080RawTransactionSource:[]# configure no open ports like thisReportRunner:[]# all servers will still listen on port 22 for SSH connectionsTransactionClient:[]
创建环境…
cloudlab mkenv envdir
“envdir”应该是绝对路径或相对路径。basename(envdir)
将用作环境的名称
必须是独一无二的。
将创建“envdir”目录。如果目录已经存在,进程将失败。
一个包含公共和私有IP地址的ansible清单文件将被写入 “envdir”使用可翻译的手册帮助管理环境
cloudlab rmenv envdir
将破坏以前创建的环境。
cloudlab update envdir
将根据对“cloudlab_config.yaml”的更改更新环境
发行说明
v1.1.8
- tplate更新打破了cloudlab。tplate版本现在固定到1.0.3。
1.1.7版
- 由于AWS云信息模板中60个输出的限制,它是 无法使用CloudLab提供超过20台服务器。带着这个 更新,限制已提高到60台服务器。
1.1.6版
- 修复失败的“update”命令
1.1.5版
- 修复了导致mkenv失败的错误
1.1.4版
- 添加了“update”命令