HashiCorp Terraform, DevOps mühendislerinin bir uygulamanın çalışması için ihtiyaç duyduğu fiziksel kaynakları programlı olarak sağlamalarına olanak tanıyan, açık kaynaklı bir Infrastructure as code (IaC) aracıdır. (bknz. https://en.wikipedia.org/wiki/Infrastructure_as_code)
Infrastructure as code, bir uygulamanın temelindeki IT altyapısını programlama yoluyla yöneten bir IT uygulamasıdır. Kaynak tahsisine yönelik bu yaklaşım, bir operasyon ekibinin gerekli her kaynağı manuel olarak yapılandırmasını gerektirmenin aksine, geliştiricilerin kaynakları mantıksal olarak yönetmesine, izlemesine ve sağlamasına olanak tanır.
Terraform kullanıcıları, HCL (HashiCorp Yapılandırma Dili) adı verilen JSON benzeri bir yapılandırma dili kullanarak altyapı yapılandırmalarını tanımlar ve uygular. HCL’nin basit syntax’ı, DevOps ekiplerinin birden çok bulut ve şirket içi veri merkezinde altyapı sağlamasını kolaylaştırır.
Örnek bir .tf dosyası (Örnekte bir VM ve bu VM için ekstra bir disk üretilmek istenmiştir. Örnek GCP içindir.)
resource "google_compute_disk" "additional_disk" {
name = "vm-additional-disk"
type = var.additional_disk_type
size = var.additional_disk_size
zone = var.instance_zone
physical_block_size_bytes = 4096
}
resource "google_compute_instance" "gce" {
name = "virtualmachine"
machine_type = var.virtualmachine_instance_type
zone = var.virtualmachine_zone
tags = var.virtualmachine_network_tag
boot_disk {
initialize_params {
image = var.boot_disk_image
size = var.boot_disk_size
}
}
attached_disk {
source = google_compute_disk.additional_disk.self_link
device_name = google_compute_disk.additional_disk.name
}
network_interface {
subnetwork = var.subnet_name
access_config {
}
}
}
Terraform nasıl çalışır?
Terraform, kullanıcıların yalnızca yapılandırma dosyalarını ve sürüm kontrolünü kullanarak tüm altyapılarını tanımlamasına olanak tanır. Bir sunucuyu, veritabanını veya yük dengeleyiciyi dağıtmak ve çalıştırmak için bir komut verildiğinde, Terraform kodu ayrıştırır ve kaynak sağlayıcıya yapılan bir API çağrısına çevirir. Terraform açık kaynak olduğundan, geliştiriciler her zaman yeni eklentiler yazarak veya mevcut eklentilerin farklı sürümlerini derleyerek aracın kullanışlılığını genişletebilirler.
Terraform kurulumu (Ubuntu, MacOS)
Ubuntu
Bağımlılık paketlerini kur
sudo apt update
sudo apt install software-properties-common gnupg2 curl
Repo ekle ve imzala
curl https://apt.releases.hashicorp.com/gpg | gpg --dearmor > hashicorp.gpg
sudo install -o root -g root -m 644 hashicorp.gpg /etc/apt/trusted.gpg.d/
sudo apt-add-repository "deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
APT Güncelle
sudo apt update
Kurulumu tamamla
sudo apt install terraform
Kurulum ve versiyonu kontrol et
terraform -v
Terraform v1.2.2
on linux_amd64
MacOS
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Kaynak ve diğer OS’ler için göz atabilirsin. https://learn.hashicorp.com/tutorials/terraform/install-cli