Apa itu Terraform?

Selesai

Anda menggunakan Terraform untuk penyediaan sumber daya Anda. Anda ingin mempelajari selengkapnya tentang modul Terraform sehingga Anda dapat membuat keputusan berdasarkan informasi tentang bahasa mana yang akan digunakan.

Unit ini mencakup bahasa Terraform dan manfaat yang diberikannya untuk penulisan modul.

Bahasa Terraform - Bahasa Konfigurasi HashiCorp (HCL)

Bahasa yang digunakan oleh Terraform disebut HashiCorp Configuration Language biasanya disingkat menjadi HCL. Bahasa HCL digunakan dalam alat HashiCorp lainnya, seperti Packer, tetapi paling dikenal sebagai bahasa Terraform.

Bahasa HCL digunakan untuk menyebarkan sumber daya Azure secara deklaratif. HCL adalah bahasa khusus domain. Bahasa khusus domain dirancang untuk skenario atau domain tertentu. HCL tidak dimaksudkan untuk digunakan sebagai bahasa pemrograman standar untuk menulis aplikasi. HCL hanya digunakan untuk membuat modul Terraform. Terraform dimaksudkan agar mudah dipahami dan mudah dipelajari, terlepas dari pengalaman Anda dengan bahasa pemrograman lainnya. Jenis dan properti sumber daya Azure apa pun dapat ditentukan dalam modul Terraform.

Catatan

Jika sebelumnya Anda telah melihat menggunakan templat ARM, Anda akan melihat bahwa Terraform menyederhanakan pengalaman pembuatan templat. Bicep menyediakan sintaksis yang lebih mudah dipahami, dukungan yang lebih baik untuk modularitas, kode yang dapat digunakan kembali, serta peningkatan keamanan saat mengetik. Membuat templat ARM JSON memerlukan ekspresi yang rumit, dan hasil akhirnya mungkin terlalu panjang dan berbelit.

Manfaat Terraform

Terraform menyediakan banyak peningkatan atas penulisan templat ARM, termasuk:

  • Sintaks yang lebih sederhana: Terraform menyediakan sintaksis yang lebih sederhana untuk menulis modul. Anda dapat mereferensikan parameter dan variabel secara langsung tanpa menggunakan fungsi yang rumit. Penggunaan interpolasi string digunakan untuk menggantikan penggabungan, mengombinasikan nilai untuk nama dan item lainnya. Anda dapat mereferensikan properti suatu sumber daya secara langsung dengan menggunakan nama simbolisnya alih-alih pernyataan referensi yang kompleks.

  • Modul: Anda dapat memecah penyebaran kompleks menjadi submodul yang lebih kecil dan mereferensikannya dalam modul akar. Modul ini memberikan manajemen yang lebih mudah dan penggunaan kembali yang lebih besar. Anda bahkan dapat berbagi modul dengan tim atau secara publik.

  • Manajemen dependensi otomatis: Dalam sebagian besar situasi, Terraform secara otomatis mendeteksi dependensi antara sumber daya Anda. Proses ini menghapus beberapa pekerjaan yang terlibat dalam penulisan modul.

  • Validasi jenis dan IntelliSense: Ekstensi Terraform untuk Visual Studio Code menampilkan validasi kaya dan IntelliSense untuk semua jenis sumber daya Azure. Fitur ini membantu memberikan pengalaman penulisan yang lebih mudah.

Lihat contoh modul Terraform berikut yang menentukan akun penyimpanan Azure. Nama akun penyimpanan secara otomatis dihasilkan dalam modul. Setelah penyebaran, ID sumber daya dikembalikan sebagai output kepada pengguna yang menjalankan modul.

variable "name_prefix" {
  type    = string
  default = "storage"
}

locals {
  storage_account_name             = "${var.name_prefix}${random_id.random_suffix.hex}"
  storage_account_replication_type = "RAGRS"
}

resource "random_id" "random_suffix" {
    byte_length = 4
}

resource "azurerm_resource_group" "example" {
  name     = "storage-resource-group"
  location = "eastus"
}

resource "azurerm_storage_account" "example" {
  name                      = local.storage_account_name
  location                  = azurerm_resource_group.example.location
  resource_group_name       = azurerm_resource_group.example.name
  sku                       = "Standard"
  account_replication_type  = local.storage_account_replication_type
  account_kind              = "StorageV2"
  access_tier               = "Hot"
  enable_https_traffic_only = true
}

output "storage_account_resource_id" {
  value = azurerm_storage_account.example.id
}