반응형
    
    
    
  테라폼(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 | 
| pingcloud-cli 툴 (0) | 2021.02.10 | 
| [Terraform] 테라폼 모듈화 테스트 (0) | 2021.02.04 | 
| [Terraform] 테라폼 키 페어 생성 (0) | 2021.02.03 | 
 
                  
                 
                  
                 
                  
                