daniel-rhoades.aws-vpc

Circle CI

aws-vpc

Rol de Ansible para simplificar la provisión y desmantelamiento de una VPC dentro de una cuenta de AWS.

Para información más detallada sobre la creación de VPCs con Ansible, consulta la documentación oficial de ese módulo: http://docs.ansible.com/ansible/ec2_vpc_module.html.

Requisitos

Requiere los últimos módulos de soporte EC2 de Ansible junto con Boto.

También necesitarás configurar tu entorno de Ansible para usarlo con AWS, consulta http://docs.ansible.com/ansible/guide_aws.html.

Variables de Rol

Defaults:

  • vpc_resource_tags: Etiquetas para establecer en la VPC, por defecto se usa el nombre de la VPC;
  • vpc_internet_gateway: Si deseas que la VPC pueda conectarse directamente a Internet, por defecto está en True;
  • vpc_state: Estados de componentes por defecto, por defecto está en present. Para eliminar la VPC, establece esto en absent.

Variables requeridas:

  • vpc_name: Debes especificar el nombre de la VPC que deseas crear, p. ej. my-vpc;
  • vpc_region: Debes especificar la región en la que deseas crear la VPC, p. ej. eu-west-1;
  • vpc_cidr_block: Debes especificar el rango de bloque CIDR que deseas que tenga la VPC, p. ej. 172.40.0.0/16;
  • vpc_subnets: Debes especificar las subredes que deseas crear, consulta la sección de ejemplo de playbook a continuación para más información;
  • public_subnet_routes: Debes especificar las rutas de las subredes públicas que deseas crear, consulta la sección de ejemplo de playbook a continuación para más información.

Salidas:

  • vpc: El objeto VPC de AWS creado como resultado de la ejecución del ec2_vpc_module con las variables suministradas.

Dependencias

No hay dependencias en otros roles.

Ejemplo de Playbook

Antes de usar este rol, necesitarás instalarlo. La forma más sencilla de hacerlo es: ansible-galaxy install daniel-rhoades.aws-vpc.

El siguiente playbook de ejemplo asegura que se provisiona una VPC en AWS como se especifica; si ya hay una que coincide, el rol no hace nada, de lo contrario se crea.

- name: Mi Sistema | Provisionar toda la infraestructura necesaria
  hosts: localhost
  connection: local
  gather_facts: no
  vars:
    my_vpc_name: "mi_vpc_ejemplo"
    my_vpc_region: "eu-west-1"
    my_vpc_cidr: "172.40.0.0/16"
    everywhere_cidr: "0.0.0.0/0"

    # Subredes dentro de la 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"

    # Permitir que las subredes se conecten al mundo exterior
    my_public_subnet_routes:
      - subnets:
          - "{{ my_vpc_subnets[0].cidr }}"
          - "{{ my_vpc_subnets[1].cidr }}"
        routes:
          - dest: "{{ everywhere_cidr }}"
            gw: igw
  roles:
    # Proveer la red
    - {
        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 }}"
      }

Para desmantelar una VPC:

- name: Mi Sistema | Desmantelar toda la infraestructura necesaria
  hosts: localhost
  connection: local
  gather_facts: no
  vars:
    my_vpc_name: "mi_vpc_ejemplo"
    my_vpc_region: "eu-west-1"
    my_vpc_cidr: "172.40.0.0/16"
    everywhere_cidr: "0.0.0.0/0"

    # Subredes dentro de la 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"

    # Permitir que las subredes se conecten al mundo exterior
    my_public_subnet_routes:
      - subnets:
          - "{{ my_vpc_subnets[0].cidr }}"
          - "{{ my_vpc_subnets[1].cidr }}"
        routes:
          - dest: "{{ everywhere_cidr }}"
            gw: igw
  roles:
    # Desmantelar la red
    - {
        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 }}"
      }

Licencia

MIT

Información del Autor

Daniel Rhoades (https://github.com/daniel-rhoades)

Acerca del proyecto

Ansible role for simplifying the provisioning and decommissioning of a VPC within an AWS account

Instalar
ansible-galaxy install daniel-rhoades.aws-vpc
Licencia
mit
Descargas
429
Propietario
Strategist, Technologist and Engineer