aws ec2现场实例管理工具

getbox的Python项目详细描述


获取框

“Playground”实例管理器

简而言之:

  • 一键启动EC2 SPOT实例并将EBS卷附加到它们

  • 实例和卷将使用您的团队和your名称正确标记。

安装:

来自Pypi

pip3 install getbox

手动

唯一的依赖关系是boto3,您可能已经拥有了它。如果没有,您可以使用pip install boto3安装它。之后:

python3 getbox install

这将把二进制文件安装到/usr/local/bin,并尝试安装bash完成。

认证

它假设您有用于访问ssh代理中的ec2实例的ssh密钥对。

你需要美国焊接学会的证书。如果你以前在你的机器上用过awscli,你应该做得很好。如果没有,请安装awscli并运行aws configure

权限

getbox启动和终止实例需要一些权限。

IAM策略示例:

{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["ec2:AttachVolume","ec2:CancelSpotInstanceRequests","ec2:CreateTags","ec2:DeleteVolume","ec2:DescribeInstances","ec2:DescribeKeyPairs","ec2:DescribeSpotInstanceRequests","ec2:DescribeSubnets","ec2:DescribeVolumes","ec2:ModifyInstanceAttribute","ec2:RequestSpotInstances","ec2:RunInstances","ec2:TerminateInstances"],"Resource":["*"]}]}

魔术

在一个命令中获取实例的最懒方法:

$ getbox get
<..a minute later..>[ubuntu@ip-172-18-142-171 ~]$

你在us-west-2中得到了一个ubuntu 17.04linux的盒子。它将在/mnt安装一个100gb的ebs驱动器。

默认情况下,实例终止时将删除ebs驱动器。您可以使用getbox keep命令更改该行为,也可以组合该getbox get r3.4xlarge keep。记住,您的spot实例可以随时被amazon终止。

用法:

因为它将标记实例将是您的unix用户名,所以不要以根用户身份或在容器中运行它。

                      Usage: getbox <cmd> [parameters]
get          Get an ec2 instance and ssh into it.                          getbox get r3.8xlarge
             ...optionally, pass EBS volume id to attach.                  getbox get vol-321
             ...or both                                                    getbox get r3.8xlarge vol-321
             ...you can also name it                                       getbox get r3.8xlarge --name mytestbox
             ...or specify EBS volume size                                 getbox get r3.8xlarge 200GB
list         List your instances and volumes                               getbox list
kill         Kill an instance or (unattached) volume                       getbox kill 123
                                                                           getbox kill vol-456
ssh          Log into the instance (uses utility1 key)                     getbox ssh 123
keep         Disable delete-on-termination on an attached EBS volume       getbox keep vol-123
unkeep       Enable delete-on-termination on an attached EBS volume        getbox unkeep vol-123
install      Install getbox to /usr/local/bin and add bash autocomplete    getbox install

getbox ssh <instance-id>有点神奇;如果从交互式控制台使用,它只会让您登录。但如果检测到其输出被重定向,它将返回user@host string。它允许您使用自定义ssh标志或rsync/scp,如下所示:rsync -av . $(getbox ssh):

同样,当使用一个现有的EBS驱动器启动一个实例时,如果您没有显式指定实例类型,将自动选择上次使用该EBS卷的实例类型。

具有临时驱动器的实例

在IOPS和延迟方面,临时驱动器通常比EBS提供更好的性能。使用getbox,您有两个选项:要么将临时驱动器作为单独的“暂存”卷装载,要么自动将数据镜像到ebs和临时驱动器,这样它就可以在实例终止后生存。

1.使用临时驱动器作为临时存储

Ephemeral drives as scratch

ebs将在/mnt上装载,临时驱动器将作为一个raid-0 lvm voume在/scratch下装载。当实例被终止时,将丢失/scratch下的所有内容。

2。使用临时驱动器作为镜像

Ephemeral drives as mirror

在这种模式下,通过--mirror标志切换,getbox创建一个raid卷,以便所有写操作都可以同时到临时驱动器和ebs卷。它的设置是为了在可能的情况下只对临时驱动器进行读操作,这样就可以获得最接近临时驱动器的随机读性能和最慢的两个驱动器的写性能,并且在实例终止时不会丢失数据。

你得到了(读)性能和持久性!

有几个注意事项:

  • 在此模式下不能选择EBS卷大小;它将自动选择以匹配临时存储,这取决于实例类型。
  • 目前,您只能重用具有相同实例类型的镜像EBS卷(因为临时驱动器大小必须与EBS大小匹配)。getbox记住所使用的实例类型,因此您可以运行getbox get <volume-id>,它将启动同一类型的实例并重新组装raid数组。
  • 首次在此模式下启动实例时,需要10-50分钟来重新同步RAID阵列;您可以在重新同步期间使用该实例,但读取性能将与EBS相同。您可以使用mdadm --detail /dev/md0检查重新同步的状态。
  • 记住,您仍然需要getbox keep来保持ebs驱动器运行当实例终止时。

配置

可以使用名为.getbox的主目录中的json配置文件自定义一些getbox默认参数。

NameDescriptionDefault
^{}Tags to assign to ec2 instance and EBS drive
^{}^{} also tags your instances with your username, this is the name of the tag^{}
^{}Linux username used to ssh into instances^{}
^{}Name of ssh keypair to use when creating an instance^{}
^{}Timeout when trying to connect to a newly created instance^{}
^{}Flags to use with ssh command for ^{}^{}
^{}Default size of the root EBS drive (GiB)^{}
^{}EC2 AMI id to use^{}
^{}EC2 AMI id to use with GPU-enabled instances (can be null, then ^{} is used)^{}
^{}EC2 IAM role arn to use for instance profile
^{}A list of security group ids to use
^{}A list of subnets to use
^{}Spot price^{}
^{}A list of additional commands to execute on instance initialization

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我能知道文件的哪个条目正在被修改吗?   多线程Java并发线程   java抓取包含多个页面的多个字母标签的网站   为什么if语句不排除Java中的另一个if语句?   Java可序列化哈希映射到ByteArray以创建blob   JavaEclipseLombokBuilder添加新建议   java将文件路径数组转换为文件数组,并计算每个文件的大小   在Java8流中添加大小数   Bouncy Castle 1.46之前版本的java兼容性问题   无法在AWS设备场上运行安卓 Java Appium测试   java为什么不使用mavenwarplugin将键与“WEBINF/classes/METAINF/MANIFEST.MF”合并?   java如何在引用子类的成员时调用super()   找不到java TestFx无头MonoclePlatformFactory   java AbstractMethodError onClientSessionEvent和“缺少控制媒体的权限”   正则表达式如何使用JAVA在字符串的大写字母前插入空格?   我的Spring安全项目中的java BCrypt(Spring安全)   java在我的网站上查看小程序更新时遇到问题   java如何使用schedule方法