본문 바로가기

퍼블릭 클라우드

[Terraform] 테라폼 모듈화 테스트

반응형

테라폼(terraform) 모듈화 테스트

루트 모듈에서 VPC 구성

main.tf 파일

$ vim main.tf
module "vpc" {
    source = "../../../tfmodules/vpc/"
    aws_region = "ap-northeast-2"
    suffix = "11"
    tf_env = "test"
    #tf_domain = "test.tf.4wxyz.com"
    public-cidr = ["10.11.12.0/23", "10.11.16.0/23"]
    private-cidr = ["10.11.22.0/24", "10.11.26.0/24"]
    mgmt-cidr = ["10.11.92.0/24", "10.11.96.0/24"]
    azs = ["ap-northeast-2a", "ap-northeast-2c"]
}

...

module "tf_ec2-free" {
	...
}

VPC 모듈 리소스 편집

$ vim main.tf

vpc, 인터넷 게이트웨이(igw), dhcp, network acl, 보안 그룹(security group) 등등 리소스 생성

outputs.tf 편집

$ vim outputs.tf
#VPC ID 출력
output "aws_vpc_id" {
    value = aws_vpc.tf_vpc.id
}

#서브넷 리스트
output "output_public_subnets" {
    description = "Public Subnet ID 리스트"
    value = aws_subnet.tf_publicsubnet.*.id
}
output "output_private_subnets" {
    description = "Private Subnet ID 리스트"
    value = aws_subnet.tf_privatesubnet.*.id
}
output "output_mgmt_subnets" {
    description = "MGMT Subnet ID 리스트"
    value = aws_subnet.tf_mgmtsubnet.*.id
}

#보안 그룹 리스트
output "output_sg_office" {
    value = aws_security_group.tf_office.id
}
output "output_sg_idc" {
    value = aws_security_group.tf_idc.id
}
output "aws_security_group" {
    value = aws_security_group.tf_office.id
}

루트 모듈에서 인스턴스 구성

main.tf 편집

$ vim main.tf
...
module "vpc" {
	...
}

...

module "tf_ec2-free" {
    source = "../../../tfmodules/instance/ec2-free/"
    vpc_id = module.vpc.aws_vpc_id
    key_name = "4wxyz"
    subnet_id = module.vpc.output_public_subnets
    vpc_security_group_ids = module.vpc.aws_security_group
}

 

인스턴스 모듈

main.tf 편집

$ vim main.tf
resource "aws_instance" "ec2-free" {
  count = 1
  ami = "ami-09282971cf2faa4c9"
  instance_type = "t2.micro"
  associate_public_ip_address = true
  monitoring = true
  key_name = var.key_name
  subnet_id = element(var.subnet_id, count.index)
  security_groups = [ var.vpc_security_group_ids ]

  tags = {
    Name = "test-${count.index+1}"
    CreatedDate = timestamp()
  }
}

variables.tf 편집

$ vim variables.tf
variable "key_name" {}
variable "vpc_id" {}
variable "subnet_id" {}
variable "vpc_security_group_ids" {}
728x90
반응형