@@ -2,31 +2,68 @@ provider "aws" {
22 region = local. region
33}
44
5+ data "aws_availability_zones" "available" {}
6+
57locals {
6- availability_zone = " ${ local . region } a"
7- name = " example-ec2-volume-attachment"
8- region = " eu-west-1"
8+ name = " ex-${ basename (path. cwd )} "
9+ region = " eu-west-1"
10+
11+ vpc_cidr = " 10.0.0.0/16"
12+ azs = slice (data. aws_availability_zones . available . names , 0 , 3 )
13+
914 tags = {
10- Owner = " user"
11- Environment = " dev"
15+ Name = local.name
16+ Example = local.name
17+ Repository = " https://github.com/terraform-aws-modules/terraform-aws-ec2-instance"
1218 }
1319}
1420
21+ # ###############################################################################
22+ # EC2 Module
23+ # ###############################################################################
24+
25+ module "ec2" {
26+ source = " ../../"
27+
28+ name = local. name
29+
30+ ami = data. aws_ami . amazon_linux . id
31+ instance_type = " c5.large"
32+ availability_zone = element (local. azs , 0 )
33+ subnet_id = element (module. vpc . private_subnets , 0 )
34+ vpc_security_group_ids = [module . security_group . security_group_id ]
35+ associate_public_ip_address = true
36+
37+ tags = local. tags
38+ }
39+
40+ resource "aws_volume_attachment" "this" {
41+ device_name = " /dev/sdh"
42+ volume_id = aws_ebs_volume. this . id
43+ instance_id = module. ec2 . id
44+ }
45+
46+ resource "aws_ebs_volume" "this" {
47+ availability_zone = element (local. azs , 0 )
48+ size = 1
49+
50+ tags = local. tags
51+ }
52+
1553# ###############################################################################
1654# Supporting Resources
1755# ###############################################################################
1856
1957module "vpc" {
2058 source = " terraform-aws-modules/vpc/aws"
21- version = " ~> 3 .0"
59+ version = " ~> 4 .0"
2260
2361 name = local. name
24- cidr = " 10.99.0.0/18 "
62+ cidr = local . vpc_cidr
2563
26- azs = [" ${ local . region } a" , " ${ local . region } b" , " ${ local . region } c" ]
27- public_subnets = [" 10.99.0.0/24" , " 10.99.1.0/24" , " 10.99.2.0/24" ]
28- private_subnets = [" 10.99.3.0/24" , " 10.99.4.0/24" , " 10.99.5.0/24" ]
29- database_subnets = [" 10.99.7.0/24" , " 10.99.8.0/24" , " 10.99.9.0/24" ]
64+ azs = local. azs
65+ private_subnets = [for k , v in local . azs : cidrsubnet (local. vpc_cidr , 4 , k)]
66+ public_subnets = [for k , v in local . azs : cidrsubnet (local. vpc_cidr , 8 , k + 48 )]
3067
3168 tags = local. tags
3269}
@@ -55,35 +92,3 @@ module "security_group" {
5592
5693 tags = local. tags
5794}
58-
59- # ###############################################################################
60- # EC2 Module
61- # ###############################################################################
62-
63- module "ec2" {
64- source = " ../../"
65-
66- name = local. name
67-
68- ami = data. aws_ami . amazon_linux . id
69- instance_type = " c5.large"
70- availability_zone = local. availability_zone
71- subnet_id = element (module. vpc . private_subnets , 0 )
72- vpc_security_group_ids = [module . security_group . security_group_id ]
73- associate_public_ip_address = true
74-
75- tags = local. tags
76- }
77-
78- resource "aws_volume_attachment" "this" {
79- device_name = " /dev/sdh"
80- volume_id = aws_ebs_volume. this . id
81- instance_id = module. ec2 . id
82- }
83-
84- resource "aws_ebs_volume" "this" {
85- availability_zone = local. availability_zone
86- size = 1
87-
88- tags = local. tags
89- }
0 commit comments