aws-elb
aws-elb-role
Ansible роль для упрощения создания и снятия с эксплуатации ELB в AWS аккаунте.
Для более подробной информации по созданию:
- Группы авто-масштабирования: http://docs.ansible.com/ansible/ec2_elb_lb__module.html;
- Route 53: http://docs.ansible.com/ansible/route53_module.html.
Эта роль полностью настраивает много-зонный ELB и регистрирует его с записью Route 53 в зоне по вашему выбору.
Требования
Необходимы последние модули поддержки EC2 для Ansible вместе с Boto.
Также потребуется настроить ваше окружение Ansible для работы с AWS, смотрите http://docs.ansible.com/ansible/guide_aws.html.
Переменные роли
По умолчанию:
- elb_purge_subnets: Удалить существующие слушатели на ELB, которые не найдены в слушателях, по умолчанию true;
- elb_cross_az_load_balancing: Распределять нагрузку по всем настроенным зонам доступности, по умолчанию true;
- elb_connection_draining_timeout: Ожидать указанное время для завершения соединений перед завершением экземпляра, по умолчанию 60 секунд;
- elb_listeners: Слушатели для ELB, 80:80 доступны по умолчанию;
- elb_health_check: Проверка состояния для определения состояния экземпляра, по умолчанию производится TCP соединение с портом 80;
- route53_overwrite: Перезаписывает существующие записи, если это необходимо, по умолчанию true;
- route53_alias_evaluate_target_health: Если вы хотите, чтобы Route 53 следила за состоянием целевой группы, по умолчанию true;
- ec2_elb_state: Состояние ELB, по умолчанию "present";
- route53_zone_state: Состояние зоны Route 53, по умолчанию "present".
Обязательные переменные:
- elb_name: Необходимо указать имя ELB, который вы хотите создать, например, my-elb;
- elb_security_groups: Необходимо указать группы безопасности для ELB, который вы хотите создать, смотрите пример ниже;
- elb_region: Необходимо указать регион, в котором вы хотите создать ELB, например, eu-west-1;
- elb_subnets: Необходимо указать подсети, в которых ELB должен быть доступен, смотрите пример ниже;
- route53_zone: Необходимо указать название зоны, которую вы хотите определить, например, example.com;
- route53_host: Необходимо указать название хоста, который вы хотите определить в зоне, например, www.example.com.
Зависимости
Список других ролей, размещенных на Galaxy, должен быть здесь, а также любые детали относительно параметров, которые могут потребоваться для других ролей, или переменные, используемые из других ролей.
Пример плейбук
Перед использованием этой роли необходимо установить ее. Проще всего это сделать следующей командой: ansible-galaxy install daniel-rhoades.aws-elb-role
.
Для полноты примеров создается
- VPC для размещения ECS кластера с использованием роли:
daniel-rhoades.aws-vpc
; - Группы безопасности EC2 для применения к экземплярам EC2, с использованием роли:
daniel-rhoades.aws-security-group
.
После создания вы можете зарегистрировать свои экземпляры EC2 в ELB. Пример ожидает, что my_route53_zone
будет передан как переменная окружения командной строки.
Чтобы демонтировать ELB:
- name: My System | Demontage of all required infrastructure
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
# Название ELB
my_elb_name: "my-elb"
# Название хоста для создания в зоне Route 53
my_route53_host: "my-service-test"
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 }}"
}
# Настройка групп безопасности
- {
role: daniel-rhoades.aws-security-groups,
vpc_region: "{{ my_vpc_region }}",
vpc_id: "{{ vpc.vpc_id }}",
ec2_group_inbound_sg: "{{ my_inbound_security_groups }}",
ec2_group_internal_inbound_sg_file: "{{ my_internal_inbound_security_groups_file }}",
ec2_group_outbound_sg: "{{ my_outbound_security_groups }}"
}
# Демонтаж ELB
- {
role: aws-elb-role,
ec2_elb_state: "absent",
vpc_name: "{{ my_vpc_name }}",
elb_name: "{{ my_elb_name }}",
route53_zone: "{{ my_route53_zone }}",
route53_host: "{{ my_route53_host }}"
}
Лицензия
MIT
Авторская информация
Даниэль Роудс (https://github.com/daniel-rhoades)
Ansible role for simplifying the provisioning and decommissioning of an ELB within an AWS account
ansible-galaxy install daniel-rhoades/aws-elb-role