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
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访问,因为应用服务器位于公共子网中(体系结构限制)
- 仅从
- ELB安全组
待办事项:
- [X]基于负载的自动缩放
- []附加区域
- [X]基于~/.aws/credentials交互选择aws_配置文件
- [X]在指定AWS配置文件和区域后,交互选择VPC ID
- [X]指定子网后交互选择子网ID
- []正确的日志记录而不是打印语句
- []测试
- [X]幂等性(有限制)
- []回滚能力
- []将实例用户数据移动到单独的文件中,以便可以在运行时指定
user data
文件 - []添加bumpversion
- []支持多个子网。私人/公共
- []根据需要提供NAT网关
- [X]信息界面
- []销毁所有配置的基础架构
- []捕获所有botocore异常