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
Просто делает несколько операций с словарями, чтобы вернуть только идентификаторы подсетей из объекта с большим количеством информации.
library/rtb_deleteable.py
Это простой модуль, предназначенный для обработки данных, возвращаемых ec2_vpc_route_table_facts. Он читает словарь, который он создает, и формирует новый словарь, где ключи — это идентификаторы таблицы маршрутов, а значения — булевы значения, указывающие, можно ли удалить таблицу маршрутов. Это делается путем проверки флага, который отмечает "основную" таблицу маршрутов.
Зачем это нужно?
"Основная" таблица маршрутов не может быть удалена, кроме как вместе с удалением 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/ansible-role-ec2-vpc