erc 모듈화, vpc public dns 설정 등
This commit is contained in:
		@ -1,27 +1,20 @@
 | 
				
			|||||||
//ecr make
 | 
					//ecr make
 | 
				
			||||||
provider "aws" {
 | 
					resource "aws_ecr_repository" "ecr" {
 | 
				
			||||||
    region = "ap-northeast-2"
 | 
					  for_each = toset(var.names_list)
 | 
				
			||||||
 | 
					  name                 = each.value
 | 
				
			||||||
    #2.x버전의 AWS공급자 허용
 | 
					 | 
				
			||||||
    version = "~> 2.0"
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
resource "aws_ecr_repository" "foo" {
 | 
					 | 
				
			||||||
  name                 = "demo-flask-backend"
 | 
					 | 
				
			||||||
  image_tag_mutability = "MUTABLE"
 | 
					  image_tag_mutability = "MUTABLE"
 | 
				
			||||||
  image_scanning_configuration {
 | 
					  image_scanning_configuration {
 | 
				
			||||||
    scan_on_push = true
 | 
					    scan_on_push = true
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
resource "aws_ecr_repository" "bar" {
 | 
					# resource "aws_ecr_repository" "bar" {
 | 
				
			||||||
  name                 = "demo-frontend"
 | 
					#   name                 = "demo-frontend"
 | 
				
			||||||
  image_tag_mutability = "MUTABLE"
 | 
					#   image_tag_mutability = "MUTABLE"
 | 
				
			||||||
  image_scanning_configuration {
 | 
					#   image_scanning_configuration {
 | 
				
			||||||
    scan_on_push = true
 | 
					#     scan_on_push = true
 | 
				
			||||||
  }
 | 
					#   }
 | 
				
			||||||
}
 | 
					# }
 | 
				
			||||||
# resource "null_resource" "null_for_ecr_get_login_password" {
 | 
					# resource "null_resource" "null_for_ecr_get_login_password" {
 | 
				
			||||||
#   provisioner "local-exec" {
 | 
					#   provisioner "local-exec" {
 | 
				
			||||||
#     command = <<EOF
 | 
					#     command = <<EOF
 | 
				
			||||||
							
								
								
									
										9
									
								
								modules/ecr/valiables.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/ecr/valiables.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					variable "names_list" {
 | 
				
			||||||
 | 
					  description = "name list"
 | 
				
			||||||
 | 
					  type    = list(string)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#   default = [
 | 
				
			||||||
 | 
					#     "web",
 | 
				
			||||||
 | 
					#     "nginx",
 | 
				
			||||||
 | 
					#     "mariadb",
 | 
				
			||||||
 | 
					#   ]
 | 
				
			||||||
							
								
								
									
										7
									
								
								modules/igw/main.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/igw/main.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					resource "aws_internet_gateway" "gw" {
 | 
				
			||||||
 | 
					  vpc_id = var.vpc_id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  tags = {
 | 
				
			||||||
 | 
					    Name = "main-igw"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										4
									
								
								modules/igw/valiables.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								modules/igw/valiables.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					variable "vpc_id" {
 | 
				
			||||||
 | 
					    description = "set vpc id"
 | 
				
			||||||
 | 
					    type = string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					resource "aws_subnet" "subnets" {
 | 
				
			||||||
 | 
					    vpc_id     = var.vpc_id
 | 
				
			||||||
 | 
					    # module.vpc_hq.vpc_hq_id
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    for_each = var.subnet-az-list
 | 
				
			||||||
 | 
					    availability_zone = each.value.name
 | 
				
			||||||
 | 
					    cidr_block = each.value.cidr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    map_public_ip_on_launch = true
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    tags = {
 | 
				
			||||||
 | 
					    Name = "${var.vpc_id}-${each.value.name}"
 | 
				
			||||||
 | 
					    # Name = module.vpc_hq.vpcHq.id
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										0
									
								
								modules/vpc-subnet/outputs.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								modules/vpc-subnet/outputs.tf
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										29
									
								
								modules/vpc-subnet/valiables.tf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								modules/vpc-subnet/valiables.tf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					variable "vpc_id" {
 | 
				
			||||||
 | 
					    description = "set vpc id"
 | 
				
			||||||
 | 
					    type = string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// reference | https://github.com/davidcsi/terraform/blob/master/healthchecks/main.tf
 | 
				
			||||||
 | 
					variable "subnet-az-list" {
 | 
				
			||||||
 | 
					    description = "Subnet available zone & cidr"
 | 
				
			||||||
 | 
					    type = map(map(string))
 | 
				
			||||||
 | 
					    # default = {
 | 
				
			||||||
 | 
					    #     "zone-a" = {
 | 
				
			||||||
 | 
					    #         name = "ap-northeast-2a"
 | 
				
			||||||
 | 
					    #         cidr = "10.3.1.0/24"
 | 
				
			||||||
 | 
					    #     }
 | 
				
			||||||
 | 
					    #     "zone-b" = {
 | 
				
			||||||
 | 
					    #         name = "ap-northeast-2b"
 | 
				
			||||||
 | 
					    #         cidr = "10.3.2.0/24"
 | 
				
			||||||
 | 
					    #     }
 | 
				
			||||||
 | 
					    #     "zone-c" = {
 | 
				
			||||||
 | 
					    #         name = "ap-northeast-2c"
 | 
				
			||||||
 | 
					    #         cidr = "10.3.3.0/24"
 | 
				
			||||||
 | 
					    #     }
 | 
				
			||||||
 | 
					    #     "zone-d" = {
 | 
				
			||||||
 | 
					    #         name = "ap-northeast-2d"
 | 
				
			||||||
 | 
					    #         cidr = "10.3.4.0/24"
 | 
				
			||||||
 | 
					    #     }
 | 
				
			||||||
 | 
					    # }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,8 +1,13 @@
 | 
				
			|||||||
resource "aws_vpc" "vpcHq" {
 | 
					resource "aws_vpc" "vpc-hq" {
 | 
				
			||||||
    # cidr_block       = "10.3.0.0/16"
 | 
					    # cidr_block       = "10.3.0.0/16"
 | 
				
			||||||
    cidr_block       = var.cidr_block
 | 
					    cidr_block       = var.cidr_block
 | 
				
			||||||
    // instance_tenancy = "default"
 | 
					    // instance_tenancy = "default"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # 인스턴스에 public DNS가 표시되도록 하는 속성
 | 
				
			||||||
 | 
					    enable_dns_hostnames = true
 | 
				
			||||||
 | 
					    enable_dns_support   = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tags = {
 | 
					    tags = {
 | 
				
			||||||
    Name = "test"
 | 
					    Name = "test"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
//modules-vpc-output
 | 
					//modules-vpc-output
 | 
				
			||||||
output "vpc_hq_id" {
 | 
					output "vpc_hq_id" {
 | 
				
			||||||
  description = "The name of vpc hq id"
 | 
					  description = "The name of vpc hq id"
 | 
				
			||||||
  value = aws_vpc.vpcHq.id
 | 
					  value = aws_vpc.vpc-hq.id
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -3,27 +3,3 @@ variable "cidr_block" {
 | 
				
			|||||||
    type = string
 | 
					    type = string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// reference | https://github.com/davidcsi/terraform/blob/master/healthchecks/main.tf
 | 
					 | 
				
			||||||
variable "subnet-az-list" {
 | 
					 | 
				
			||||||
    description = "Subnet available zone & cidr"
 | 
					 | 
				
			||||||
    type = map(map(string))
 | 
					 | 
				
			||||||
    default = {
 | 
					 | 
				
			||||||
        "zone-a" = {
 | 
					 | 
				
			||||||
            name = "ap-northeast-2a"
 | 
					 | 
				
			||||||
            cidr = "10.3.1.0/24"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        "zone-b" = {
 | 
					 | 
				
			||||||
            name = "ap-northeast-2b"
 | 
					 | 
				
			||||||
            cidr = "10.3.2.0/24"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        "zone-c" = {
 | 
					 | 
				
			||||||
            name = "ap-northeast-2c"
 | 
					 | 
				
			||||||
            cidr = "10.3.3.0/24"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        "zone-d" = {
 | 
					 | 
				
			||||||
            name = "ap-northeast-2d"
 | 
					 | 
				
			||||||
            cidr = "10.3.4.0/24"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										39
									
								
								nm-ecr/.terraform.lock.hcl
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										39
									
								
								nm-ecr/.terraform.lock.hcl
									
									
									
										generated
									
									
									
								
							@ -1,39 +0,0 @@
 | 
				
			|||||||
# This file is maintained automatically by "terraform init".
 | 
					 | 
				
			||||||
# Manual edits may be lost in future updates.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
provider "registry.terraform.io/hashicorp/aws" {
 | 
					 | 
				
			||||||
  version     = "2.70.1"
 | 
					 | 
				
			||||||
  constraints = "~> 2.0"
 | 
					 | 
				
			||||||
  hashes = [
 | 
					 | 
				
			||||||
    "h1:SQR8egOmFbwBHOSMzUYg/Mt4e0LsQe91ma9I2Ug3lmY=",
 | 
					 | 
				
			||||||
    "zh:04137cdf128cf21dcd190bbba4d4bba43c7868c52ad646b0eaa54a8b8b8160a7",
 | 
					 | 
				
			||||||
    "zh:30c9f956133a102b4a426d76dd3ef1a42332d9875261a06aa877409aa6b2b556",
 | 
					 | 
				
			||||||
    "zh:3107a43647454a3d6d847fba6aa593650af0f6a353272c04450408af5f4d353a",
 | 
					 | 
				
			||||||
    "zh:3f17285478313af822447b453fa4e37f30ef221f0b0e8f2e4655f1ac9f9de1a2",
 | 
					 | 
				
			||||||
    "zh:5a626f7a3c4a9fea3bdfde63aedbf6eea73760f3b228f776f1132b61d00c7ff2",
 | 
					 | 
				
			||||||
    "zh:6aafc9dd79b511b9e3d0ec49f7df1d1fd697c3c873d1d70a2be1a12475b50206",
 | 
					 | 
				
			||||||
    "zh:6fb29b48ccc85f7e9dfde3867ce99d6d65fb76bea68c97d404fae431758a8f03",
 | 
					 | 
				
			||||||
    "zh:c47be92e1edf2e8675c932030863536c1a79decf85b2baa4232e5936c5f7088f",
 | 
					 | 
				
			||||||
    "zh:cd0a4b28c5e4b5092043803d17fd1d495ecb926c2688603c4cdab4c20f3a91f4",
 | 
					 | 
				
			||||||
    "zh:fb0ff763cb5d7a696989e58e0e4b88b1faed2a62b9fb83f4f7c2400ad6fabb84",
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
provider "registry.terraform.io/hashicorp/null" {
 | 
					 | 
				
			||||||
  version = "3.2.1"
 | 
					 | 
				
			||||||
  hashes = [
 | 
					 | 
				
			||||||
    "h1:vUW21lLLsKlxtBf0QF7LKJreKxs0CM7YXGzqW1N/ODY=",
 | 
					 | 
				
			||||||
    "zh:58ed64389620cc7b82f01332e27723856422820cfd302e304b5f6c3436fb9840",
 | 
					 | 
				
			||||||
    "zh:62a5cc82c3b2ddef7ef3a6f2fedb7b9b3deff4ab7b414938b08e51d6e8be87cb",
 | 
					 | 
				
			||||||
    "zh:63cff4de03af983175a7e37e52d4bd89d990be256b16b5c7f919aff5ad485aa5",
 | 
					 | 
				
			||||||
    "zh:74cb22c6700e48486b7cabefa10b33b801dfcab56f1a6ac9b6624531f3d36ea3",
 | 
					 | 
				
			||||||
    "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
 | 
					 | 
				
			||||||
    "zh:79e553aff77f1cfa9012a2218b8238dd672ea5e1b2924775ac9ac24d2a75c238",
 | 
					 | 
				
			||||||
    "zh:a1e06ddda0b5ac48f7e7c7d59e1ab5a4073bbcf876c73c0299e4610ed53859dc",
 | 
					 | 
				
			||||||
    "zh:c37a97090f1a82222925d45d84483b2aa702ef7ab66532af6cbcfb567818b970",
 | 
					 | 
				
			||||||
    "zh:e4453fbebf90c53ca3323a92e7ca0f9961427d2f0ce0d2b65523cc04d5d999c2",
 | 
					 | 
				
			||||||
    "zh:e80a746921946d8b6761e77305b752ad188da60688cfd2059322875d363be5f5",
 | 
					 | 
				
			||||||
    "zh:fbdb892d9822ed0e4cb60f2fedbdbb556e4da0d88d3b942ae963ed6ff091e48f",
 | 
					 | 
				
			||||||
    "zh:fca01a623d90d0cad0843102f9b8b9fe0d3ff8244593bd817f126582b52dd694",
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										61
									
								
								prod/main.tf
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								prod/main.tf
									
									
									
									
									
								
							@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					// prod - main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
provider "aws" {
 | 
					provider "aws" {
 | 
				
			||||||
    region = "ap-northeast-2"
 | 
					    region = "ap-northeast-2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -6,34 +8,47 @@ provider "aws" {
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# module "vpc_hq" {
 | 
				
			||||||
module "vpc_hq" {
 | 
					module "vpc_hq" {
 | 
				
			||||||
    source = "../modules/vpc"
 | 
					    source = "../modules/vpc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    cidr_block = var.cidr_block
 | 
					    cidr_block = "10.3.0.0/16"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
# resource "aws_vpc" "vpcHq" {
 | 
					 | 
				
			||||||
#     cidr_block       = "10.3.0.0/16"
 | 
					 | 
				
			||||||
#     // instance_tenancy = "default"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#     tags = {
 | 
					module "vpc_igw" {
 | 
				
			||||||
#     Name = "test"
 | 
					    source = "../modules/igw"
 | 
				
			||||||
#     }
 | 
					
 | 
				
			||||||
# }
 | 
					    vpc_id = module.vpc_hq.vpc_hq_id
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module "subnet_list" {
 | 
					module "subnet_list" {
 | 
				
			||||||
  
 | 
					    source = "../modules/vpc-subnet"
 | 
				
			||||||
}
 | 
					
 | 
				
			||||||
resource "aws_subnet" "subnets" {
 | 
					    vpc_id = module.vpc_hq.vpc_hq_id
 | 
				
			||||||
    vpc_id     = module.vpc_hq.vpc_hq_id
 | 
					    subnet-az-list = {
 | 
				
			||||||
    
 | 
					        "zone-a" = {
 | 
				
			||||||
    for_each = var.subnet-az-list
 | 
					            name = "ap-northeast-2a"
 | 
				
			||||||
    availability_zone = each.value.name
 | 
					            cidr = "10.3.1.0/24"
 | 
				
			||||||
    cidr_block = each.value.cidr
 | 
					        }
 | 
				
			||||||
 | 
					        "zone-b" = {
 | 
				
			||||||
 | 
					            name = "ap-northeast-2b"
 | 
				
			||||||
 | 
					            cidr = "10.3.2.0/24"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        "zone-c" = {
 | 
				
			||||||
 | 
					            name = "ap-northeast-2c"
 | 
				
			||||||
 | 
					            cidr = "10.3.3.0/24"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        "zone-d" = {
 | 
				
			||||||
 | 
					            name = "ap-northeast-2d"
 | 
				
			||||||
 | 
					            cidr = "10.3.4.0/24"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module "ecr" {
 | 
				
			||||||
 | 
					    source = "../modules/ecr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    names_list = ["web", "nginx", "mariadb"]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    map_public_ip_on_launch = true
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    # tags = {
 | 
					 | 
				
			||||||
    # # Name = "${each.value.name}"
 | 
					 | 
				
			||||||
    # Name = module.vpc_hq.vpcHq.id
 | 
					 | 
				
			||||||
    # }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,6 +0,0 @@
 | 
				
			|||||||
//main - output
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
output "vpc_hq_id" {
 | 
					 | 
				
			||||||
  description = "The name of vpc hq id"
 | 
					 | 
				
			||||||
  value = aws_vpc.vpcHq.id
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
variable "cidr_block" {
 | 
					# variable "cidr_block" {
 | 
				
			||||||
    type = string
 | 
					#     type = string
 | 
				
			||||||
    default = "10.3.0.0/16"
 | 
					#     default = "10.3.0.0/16"
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
}
 | 
					# }
 | 
				
			||||||
		Reference in New Issue
	
	Block a user