AZURE ÜZERİNDE TERRAFORM İLE ALT YAPI GELİŞTİRME – BÖLÜM 8 : MODÜLLER
Azure üzerinde Terraform ile Altyapı Geliştirme makale serisine hoş geldiniz. Makale serisinin sekizinci bölümünde Azure üzerinde Terraform kullanırken Modül kavramına bakacağız. Modül, birlikte kullanılan birden çok kaynak için bir kapsayıcıdır. Yeniden kullanılabilir altyapı bileşenleri oluşturmak için modüller oluşturabilirsiniz. Örneğin, bir SQL ortamı için bir modül bulunabilir ve Sanal Makineler için ayrı bir modül bulunabilir. Modüller daha sonra çeşitli ortamlar için Azure hizmetleri oluşturmak ve dağıtmak için yapı taşlarıyla birlikte kullanılabilir.
Örneğimiz için dizin altında iç içe modules/storage-account klasörleri oluşturalım.

Storage-account klasöründe main.tf dosyasını oluşturun ve aşağıdaki depolama hesabı terraform kaynak bloğunu ekleyin.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "2.40.0"
}
}
}
resource "azurerm_storage_account" "sa" {
name = var.saname
resource_group_name = var.rgname
location = var.location
account_tier = "Standard"
account_replication_type = "GRS"
}
Storage-account klasöründe variable.tf dosyası oluşturun. Değişkenler, Depolama Hesabının ortam başına özelleştirilebilmesini sağlamak için modül için girdi olarak kullanılacaktır.
variable "saname" {
type = string
description = "Name of storage account"
}
variable "rgname" {
type = string
description = "Name of resource group"
}
variable "location" {
type = string
description = "Azure location of storage account environment"
default = "northeurope"
}
Depolama Hesabının birincil erişim anahtarının çıktısını almak ve bunun bir Terraform konfigürasyonunda diğer kaynaklara aktarılmasına izin vermek için bir çıktı bloğu oluşturalım. Bunun için bir output.tf dosyası oluşturun ve aşağıdaki komutları ekleyin.
output "primary_key" {
description = "The primary access key for the storage account"
value = azurerm_storage_account.sa.primary_access_key
sensitive = true
}
Modül şimdi tamamlandı. Bunun normal bir Terraform konfigürasyonu gibi göründüğünü fark etmiş olabilirsiniz. Terraform modülleri, diğer Terraform konfigürasyonlarından çağrılabilen kod parçacıklarıdır. Şimdi ana dizininizde yeni bir main.tf dosyası oluşturun. Dosya/klasör yapısı aşağıdaki gibi olacaktır.

Aşağıdakileri main.tf dosyanıza ekleyin.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "2.40.0"
}
}
}
provider "azurerm" {
features {}
}
module "storage_account" {
source = "./modules/storage-account"
saname = "devcloudops001"
rgname = "demo07"
location = "northeurope"
}
module "storage_account2" {
source = "./modules/storage-account"
saname = "devcloudops002"
rgname = "demo07"
location = "northeurope"
}
Modülü Terraform konfigürasyonunda kullanmak için kaynak tipi modül tipi olarak bildirilir. Blok etiketi, modül bloğuna verilen herhangi bir isim olabilir.

Şimdi “terraform apply” komutu ile konuşlandıralım ve modüllerin başlatıldığını görelim.
