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 角色中是相对简单的。