Apa itu Terraform?
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
}