resource :vpc, 'AWS::EC2::VPC' do

cidr_block '<%= cidr_block %>'
enable_dns_support true
enable_dns_hostnames true
instance_tenancy :default
tag :Name, Fn::ref('AWS::StackName')

end

## allow internet access for instances in vpc resource :igw, 'AWS::EC2::InternetGateway' do

tag :Name, Fn::ref('AWS::StackName')

end

## attach gateway to vpc resource :igwattach, 'AWS::EC2::VPCGatewayAttachment', DependsOn: [:vpc, :igw] do

vpc_id Fn::ref(:vpc)
internet_gateway_id Fn::ref(:igw)

end

## routing table for vpc resource :routetable, 'AWS::EC2::RouteTable', DependsOn: [:vpc] do

vpc_id Fn::ref(:vpc)
tag :Name, Fn::ref('AWS::StackName')

end

## default route for outgoing packets resource :route, 'AWS::EC2::Route', DependsOn: [:routetable, :igw] do

route_table_id Fn::ref(:routetable)
gateway_id Fn::ref(:igw)
destination_cidr_block '0.0.0.0/0'

end

output :VpcId, Fn::ref(:vpc), export: Fn::sub('${AWS::StackName}-VpcId')