POC BOTO3资源供应器

aws-ec2-provisioner的Python项目详细描述


用于在aws中配置基础设施和简单web应用程序的cli工具。

基础结构组件将是名称elb-project_name,asg-project_name等等。该工具将重用任何 基于名称的已存在组件。但是,如果有几个同名的组件,其中一个将是 随机选择

先决条件

  • AWS帐户
  • 至少有一个公共子网的VPC
  • 子网中至少有9个可用的专用IP地址(允许设置1个EC2实例)
  • 需要为具有必要iam权限(待定)的用户配置aws cli

限制

为了简化设计,所有的基础设施都是在 子网,此子网必须是public子网。因为体系结构不包括NAT网关 所有配置的实例都将被分配一个公共ip地址,以便它们可以下载必要的包。

存在无输入验证

安装
pip install aws-ec2-provisioner

git clone git@github.com:valeramaniuk/aws-ec2-provisioner.git
cd aws-ec2-provisioner
pip install .

用法

使用以下选项运行aws_ec2_provisioner

--vpc-id <VPC where you want to deploy the app>
--subnet-id <Subnet where you want to deploy the app. Should in the selected VPC>
--project-name <Name of the project. You won't be able to create 2 projects with the same name>
--aws-profile <The name of access key/secret key pair (~/.aws/credentials)>
--min-asg-size <Minimum size of the autoscaling group>
--max-asg-size <Maximum size of the autoscaling group>
--instance-type <INT. Choose from a predefined list>
--scaling-target-value <INT. Scaling policy target value % >

如果省略任何选项,系统将以交互方式提示您。在这种情况下,工具将查找配置的 aws profiles,可用于所选配置文件/区域的vpc以及可用于所选vpc的子网。

aws_ec2_provisioner --help用于所有可用选项

可用的Instace类型:
1. t2.micro
2. t2.meduim

要创建的基础设施:

  • 易北河
    • 监听器80
    • 实例端口80
    • 健康检查http:80/
  • 自动缩放组
    • 扩展入/出以保持自动缩放组中所有实例的平均CPU利用率。
    • 默认情况下,启动configuration associates public ip
    • 启动配置中的用户数据安装并启动ngnix
  • 安全组
    • ELB安全组
      • 从任何地方进入TCP:80
    • 应用安全组
      • 仅从ELB security group
      • 进入
      • no ssh访问,因为应用服务器位于公共子网中(体系结构限制)

Archirecture

待办事项:

  • [X]基于负载的自动缩放
  • []附加区域
  • [X]基于~/.aws/credentials交互选择aws_配置文件
  • [X]在指定AWS配置文件和区域后,交互选择VPC ID
  • [X]指定子网后交互选择子网ID
  • []正确的日志记录而不是打印语句
  • []测试
  • [X]幂等性(有限制)
  • []回滚能力
  • []将实例用户数据移动到单独的文件中,以便可以在运行时指定user data文件
  • []添加bumpversion
  • []支持多个子网。私人/公共
  • []根据需要提供NAT网关
  • [X]信息界面
  • []销毁所有配置的基础架构
  • []捕获所有botocore异常

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

推荐PyPI第三方库


热门话题
Java UDP十六进制数据按分隔符分割?   java将字符串与列表中的值进行比较<Integer>   在java中向新列表添加/复制对象   java MySQL语法错误异常   java如何在附加到文件时关闭JavaFX FileChooser的覆盖警告?   多线程如何在java中处理具有CompletableFuture的列表?   JAXWS项目的java重命名现在找不到WSDL   javascript翻译从哪里来?Javaservlet、tomcat和ExtJs Sencha应用程序   if语句如何向代码中添加工作if?JAVA   java如何确定需要哪些JAR?   在jPanel java netbeans上运行非常简单的swing视频播放器   swing Java jTable changeSelection,然后突出显示新选定的行   基于参数的java Spring Boot JPA本机查询非空检查   java从预使用图中删除节点   java BufferOverflowException在不同组件的画布中绘制时   尝试使用jersey在rest上发送pojo类对象作为响应时发生java内部服务器错误   java类集合如何将列表/集合转换为同步对象?通过什么机制?   java JOOX自动关闭XML标记   Java是按另一个具有不同对象的列表对列表进行排序的最佳方法   Hibernate读取XML时发生java错误