aws-elb

aws-elb-role

Ansible роль для упрощения создания и снятия с эксплуатации ELB в AWS аккаунте.

Для более подробной информации по созданию:

Эта роль полностью настраивает много-зонный 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
Лицензия
mit
Загрузки
72
Владелец
Strategist, Technologist and Engineer