inhumantsar.ec2-vpc

ec2-vpc

什么?

创建一个新的 VPC、公共子网和互联网网关。

为什么?

提供一个简单的自包含接口。

如何?

前提条件

  • Python: boto(不是 boto3)
vpc_service_env: 'dev'        # 实际 VPC 名称将附加这个后缀,例如:name_env
vpc_service_state: 'present'  # 设置为 'absent' 以拆除

vpc_name: 'test'
vpc_cidr: '10.0.0.0/16'
vpc_region: 'us-east-1'
vpc_public_subnet_cidrs:
  - '10.0.1.0/24'         # 子网可以任意设置
  - '10.0.2.0/24'         # 需要自己计算
vpc_public_subnet_azs:
  '10.0.1.0/24': 'a'      # 这些键必须与 vpc_public_subnet_cidrs 的值匹配
  '10.0.2.0/24': 'b'      # 可以增加其他内容,但需要覆盖上面的所有值

背后原理

library/get_subnet_ids.py

这个脚本通过字典解析,返回仅包含子网 ID 的对象。

library/rtb_deleteable.py

这是一个简单的模块,用于解析由 ec2_vpc_route_table_facts 返回的数据。 它读取生成的字典,返回一个字典,其中键是路由表 ID,值是布尔值,表示该路由表是否可以安全删除。实现方法是检查标记“主”路由表的标志。

为什么?

“主”路由表无法删除,除非删除 VPC,因此我们需要跳过它。但是,光靠 Ansible 深入解析这种字典是很麻烦的。幸运的是,将一个小的 Python 脚本添加到 Ansible 角色中是相对简单的。

关于项目

Creates a new VPC, public subnets, and an internet gateway. Optionally creates private subnets and a NAT gateway.

安装
ansible-galaxy install inhumantsar.ec2-vpc
许可证
bsd-3-clause
下载
70
拥有者