aws-vpc

Circle CI

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
Лицензия
mit
Загрузки
415
Владелец
Strategist, Technologist and Engineer