aws-vpc
aws-vpc
Роль Ansible для упрощения создания и удаления VPC в аккаунте AWS.
Для получения более подробной информации о создании VPC с помощью Ansible, смотрите официальную документацию для этого модуля: http://docs.ansible.com/ansible/ec2_vpc_module.html.
Требования
Необходимы последние модули поддержки EC2 для Ansible вместе с Boto.
Кроме того, вам также нужно настроить вашу среду Ansible для работы с AWS, смотрите http://docs.ansible.com/ansible/guide_aws.html.
Переменные роли
По умолчанию:
- vpc_resource_tags: Теги для установки на VPC, по умолчанию используется название VPC;
- vpc_internet_gateway: Если вы хотите, чтобы VPC мог непосредственно подключаться к Интернету, по умолчанию True;
- vpc_state: Состояние компонентов по умолчанию, по умолчанию
present
. Чтобы удалить VPC, установите это значение наabsent
.
Обязательные переменные:
- vpc_name: Вам необходимо указать название VPC, который вы хотите создать, например, my-vpc;
- vpc_region: Вы должны указать регион, в котором вы хотите создать VPC, например, eu-west-1;
- vpc_cidr_block: Вы должны указать диапазон CIDR, который вы хотите, чтобы VPC имел, например, 172.40.0.0/16;
- vpc_subnets: Вы должны указать подсети, которые вы хотите создать; смотрите раздел примера playbook ниже для получения дополнительной информации;
- public_subnet_routes: Вы должны указать маршруты для публичных подсетей, которые вы хотите создать; смотрите раздел примера playbook ниже для получения дополнительной информации.
Выводы:
- vpc: Объект AWS VPC, созданный в результате выполнения
ec2_vpc_module
с предоставленными переменными.
Зависимости
Нет зависимостей от других ролей.
Пример Playbook
Перед использованием этой роли вам нужно установить ее, самый простой способ сделать это: ansible-galaxy install daniel-rhoades.aws-vpc
.
Пример playbook ниже обеспечивает создание VPC в AWS, как указано; если уже существует подходящая, роль ничего не делает, в противном случае она будет создана.
- name: Моя система | Создать всю необходимую инфраструктуру
hosts: localhost
connection: local
gather_facts: no
vars:
my_vpc_name: "my_example_vpc"
my_vpc_region: "eu-west-1"
my_vpc_cidr: "172.40.0.0/16"
everywhere_cidr: "0.0.0.0/0"
# Подсети в VPC
my_vpc_subnets:
- cidr: "172.40.10.0/24"
az: "{{ my_vpc_region }}a"
- cidr: "172.40.20.0/24"
az: "{{ my_vpc_region }}b"
# Разрешаем подсетям выходить в Интернет
my_public_subnet_routes:
- subnets:
- "{{ my_vpc_subnets[0].cidr }}"
- "{{ my_vpc_subnets[1].cidr }}"
routes:
- dest: "{{ everywhere_cidr }}"
gw: igw
roles:
# Настройка сети
- {
role: daniel-rhoades.aws-vpc,
vpc_name: "{{ my_vpc_name }}",
vpc_region: "{{ my_vpc_region }}",
vpc_cidr_block: "{{ my_vpc_cidr }}",
vpc_subnets: "{{ my_vpc_subnets }}",
public_subnet_routes: "{{ my_public_subnet_routes }}"
}
Чтобы удалить VPC:
- name: Моя система | Удалить всю необходимую инфраструктуру
hosts: localhost
connection: local
gather_facts: no
vars:
my_vpc_name: "my_example_vpc"
my_vpc_region: "eu-west-1"
my_vpc_cidr: "172.40.0.0/16"
everywhere_cidr: "0.0.0.0/0"
# Подсети в VPC
my_vpc_subnets:
- cidr: "172.40.10.0/24"
az: "{{ my_vpc_region }}a"
- cidr: "172.40.20.0/24"
az: "{{ my_vpc_region }}b"
# Разрешаем подсетям выходить в Интернет
my_public_subnet_routes:
- subnets:
- "{{ my_vpc_subnets[0].cidr }}"
- "{{ my_vpc_subnets[1].cidr }}"
routes:
- dest: "{{ everywhere_cidr }}"
gw: igw
roles:
# Удаление сети
- {
role: daniel-rhoades.aws-vpc,
vpc_state: "absent",
vpc_name: "{{ my_vpc_name }}",
vpc_region: "{{ my_vpc_region }}",
vpc_cidr_block: "{{ my_vpc_cidr }}",
vpc_subnets: "{{ my_vpc_subnets }}",
public_subnet_routes: "{{ my_public_subnet_routes }}"
}
Лицензия
MIT
Информация об авторе
Дэниел Роудс (https://github.com/daniel-rhoades)
Ansible role for simplifying the provisioning and decommissioning of a VPC within an AWS account
ansible-galaxy install daniel-rhoades/aws-vpc-role