반응형
테라폼(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
반응형
'퍼블릭 클라우드' 카테고리의 다른 글
[VPN] Amazon Linux 2에 WireGuard를 설치하는 방법 (0) | 2021.03.16 |
---|---|
AWS 교차 계정 접근(Cross-Account Access)을 설정하는 방법 (0) | 2021.02.20 |
[ping] Pingcloud-cli 툴 (0) | 2021.02.10 |
[Terraform] 테라폼 모듈화 테스트 (0) | 2021.02.04 |
[Terraform] 테라폼 키 페어 생성 (0) | 2021.02.03 |