daniel-rhoades.aws-vpc
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 enabsent
.
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)
Ansible role for simplifying the provisioning and decommissioning of a VPC within an AWS account
ansible-galaxy install daniel-rhoades.aws-vpc