fullmoon's bright IT blog

[T101] Terraform study - Azure로 알아보는 간단한 테라폼 배포하기 (3) - Network 2편 본문

Cloud/Azure

[T101] Terraform study - Azure로 알아보는 간단한 테라폼 배포하기 (3) - Network 2편

휘영청 2022. 12. 12. 02:09
728x90

[ 목   차 ]

  • 퍼블릭 IP
  • 네트워크 보안그룹

 

1. Public IP 

https://learn.microsoft.com/ko-kr/azure/virtual-network/ip-services/public-ip-addresses

Public IP 주소는 네트워크인터페이스에 접속할 수 있는 별개의 자원입니다. 네트워크 인터페이스를 가상 머신에 연결합니다.

이 Public IP 주소는, 네트워크 인터페이스와 인터넷간의 통신을 가능하게 합니다!

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/public_ip

resource "azurerm_public_ip" "appip" {
  name                = "app-ip"
  resource_group_name = local.resource_group_name
  location            = local.location
  allocation_method   = "Static"
 depends_on = [
   azurerm_resource_group.appgrp
 ]
}

기존에 있는 것과 동일하게 퍼블릭 아이피만 만들어주면 됩니다 :)

optional 로 SKU를 넣을 수도 있습니다 .필요할 때 추가로 넣어주시면 됩니다.

기본적으로는 basic이며 Standard로 변경이 가능합니다.

 

추가적으로 기존 1편에서  ip_configuration시 Public IP 주소를 network interface에 함께 언급해줘야겠죠?

그래야 배포시 이 아이피로 VM을 만들 때 Public IP가 필요 하기때문입니다.

ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.subnetA.id
    private_ip_address_allocation = "Dynamic"
    
    #Public IP 넣어주기
    public_ip_address_id = azurerm_public_ip.appip.id
  }
  depends_on = [
    azurerm_subnet.subnetA
  ]
}

2. 보안그룹 

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_security_group

네트워크 보안 그룹의 정의 +  보안 규칙도 정의할 수 있습니다.

https://learn.microsoft.com/ko-kr/azure/virtual-network/network-security-groups-overview

resource "azurerm_public_ip" "appip" {
  name                = "app-ip"
  resource_group_name = local.resource_group_name
  location            = local.location
  allocation_method   = "Static"
 depends_on = [
   azurerm_resource_group.appgrp
 ]
}

resource "azurerm_network_security_group" "appnsg" {
  name                = "app-nsg"
  location            = local.location
  resource_group_name = local.resource_group_name

#보안규칙룰
  security_rule {
    name                       = "Allow"
    priority                   = 100
    direction                  = "Inbound"
    access                     = "Allow"
    protocol                   = "Tcp"
    source_port_range          = "*"
    destination_port_range     = "80"
    source_address_prefix      = "*"
    destination_address_prefix = "*"
  }

  depends_on = [
    azurerm_resource_group.appgrp
  ]
}

#네트워크 보안 그룹을 서브넷에 같이 붙이기 위한 별도의 리소스 블록
resource "azurerm_subnet_network_security_group_association" "appnsglink" {
  subnet_id                 = azurerm_subnet.subnetA.id
  network_security_group_id = azurerm_network_security_group.appnsg.id
}

 

생성된 보안그룹

728x90