Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Desplegar Azure Private DNS zones con terraform

Desplegar Azure Private DNS zones con terraform

Tabla de contenidos

¿Que es Terraform?

Terraform es un software de infraestructura como código (infrastructure as code) desarrollado por HashiCorp. Permite a los usuarios definir y configurar la infraestructura de un centro de datos en un lenguaje de alto nivel, generando un plan de ejecución para desplegar la infraestructura en OpenStack,3​ por ejemplo, u otros proveedores de servicio tales como AWSIBM Cloud (antiguamente Bluemix), Google Cloud PlatformLinode,45​ Microsoft AzureOracle Cloud Infrastructure o VMware vSphere.678910​ La infraestructura se define utilizando la sintaxis de configuración de HashiCorp denominada HashiCorp Configuration Language (HCL) o, en su defecto, el formato JSON.11

En este ejemplo, vamos a desplegar el servicio: Azure DNS private zone

En primer lugar configuramos el archivo «main.tf» en donde vamos a configurar el Resurce Group y la VNET

NGINX
#Resource Group

resource "azurerm_resource_group" "RG-RedOrbita_frontend" {
  name = "RedOrbita_frontend"
  location = "westeurope"
}

#Virtual Network

resource "azurerm_virtual_network" "VNET-RedOrbita_frontend_Vnet" {
  name                = "RedOrbita_frontend_Vnet"
  address_space       = ["10.10.1.0/24"]
  location            = azurerm_resource_group.RG-RedOrbita_frontend.location
  resource_group_name = azurerm_resource_group.RG-RedOrbita_frontend.name
}

En el fichero «providers.tf» configuremos todos los provider que vamos a utilizar.

TERRAFORM
#Configure the Azure provider
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=3.39.0"
    }
  }
}

provider "azurerm" {
  features {}
}

Por ultimo, crearemos un archivo llamado «redorbita.tf» el cual configuraremos la zona DNS y todos los record de dicha zona.

TERRAFORM
resource "azurerm_private_dns_zone" "DNS-REDORBITA" {
  name                = "redorbita.com"
  resource_group_name = azurerm_resource_group.RG-RedOrbita_frontend.name
}


resource "azurerm_private_dns_zone_virtual_network_link" "DNS-REDORBITA-LINK-RedOrbita_frontend_Vnet" {
  name                  = "dns_vnet_frontend"
  resource_group_name   = azurerm_resource_group.RG-RedOrbita_frontend.name
  private_dns_zone_name = azurerm_private_dns_zone.DNS-REDORBITA.name
  virtual_network_id    = azurerm_virtual_network.VNET-RedOrbita_frontend_VNet.id
  registration_enabled  = "false"

}

# Record REDORBITA.COM


resource "azurerm_private_dns_a_record" "DNS-REDORBITA-COM" {
  name                = "redorbita.com"
  zone_name           = azurerm_private_dns_zone.DNS-REDORBITA.name
  resource_group_name = azurerm_resource_group.RG-RedOrbita_frontend.name
  ttl                 = 300
  records             = ["10.10.1.10"]
}

resource "azurerm_private_dns_a_record" "DNS-REDORBITA-COM" {
  name                = "srvweb001"
  zone_name           = azurerm_private_dns_zone.DNS-REDORBITA.name
  resource_group_name = azurerm_resource_group.RG-RedOrbita_frontend.name
  ttl                 = 300
  records             = ["10.10.1.12"]
}

resource "azurerm_private_dns_a_record" "DNS-REDORBITA-COM" {
  name                = "srvweb002"
  zone_name           = azurerm_private_dns_zone.DNS-REDORBITA.name
  resource_group_name = azurerm_resource_group.RG-RedOrbita_frontend.name
  ttl                 = 300
  records             = ["10.10.1.13"]
}

En caso que tengamos que importar algún estado como por ejemplo en mi caso el grupo de recurso y la vnet. Esto nos creará un fichero llamado «terraform.tfstate» el cual guarda todos los estados de los recursos importados.

PYTHON
terraform import azurerm_resource_group.RG-RedOrbita_frontend  /subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/RedOrbita_frontend

terraform import  azurerm_virtual_network.VNET-RedOrbita_frontend_Vnet /subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/RedOrbita_frontend/providers/Microsoft.Network/virtualNetworks/RedOrbita_frontend_Vnet

Nos logamos a Azure

CODE
az login
az account set -s "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

Desplegamos

TERRAFORM
 
 terraform init
 terraform plan
 terraform apply

Más información

:wq!