Terraform 101

Terraform, altyapıyı güvenli ve verimli bir şekilde oluşturmak, değiştirmek ve versiyonlamak için bir araç olduğunu biliyoruz. Terraform mantıksal olarak iki ana bileşenden oluşuyor, Terraform core ve Terraform Plugins.

Terraform Core çalıştırılabilir bir program .exe gibi .sh,.py gibi Go dilinde yazılmış. İlgili komutu adı "terraform".  Konfigürasyonu dosyalarını okuyacak ve yapılması gerekenleri planlayıp,  işletecek ve çıktıyı bir sonraki kullanımda aradaki farkları bulmak hafızlayacak program.

Başlamadan önce terraform hakkında basit bilgiler

Terraform Plugins ise Terraform'un esnek yapısını oluşturan kısım, bunları konfigürasyon dosyasında provider olarak tanımlayacağız, DorukCloud, AWS, Azure bunların her biri bir provider. Tüm provider listesini https://registry.terraform.io/browse/providers adresinden görebilirsiniz.

 

Terraform konsept (veya buna Terraform Livecycle diyebiliriz) olarak beş önemli iş akışı ile anlatabiliriz

Write : Önce altyapıyı oluşturabilmek için ilgili terraform kodunu yazıp bir dosyaya koymalıyız, dosya uzantısı .tf olarak kaydetmeliyiz.

Init : Akışın bu evresi .tf dosyalarını okuyup gerekli gerekli provider'ları/plugin'leri kullanabilmek için otomatik bunları indirecek.

Plan : Plan evresi değişiklikleri kontrol ediyor olacak, apply evresi öncesi ne çıkartılacak ne ekleneceğinin bir listesini verecek.

Apply : Uyarlama bu evrede olacak, plan'da belirtilenler ne ise onları harfiyen uygulamaya çalışacak.

Destroy : Tüm oluşturduğunuz ortamı yok edecek.

Bunu resmetmek istersek , konfigürasyon dosyamız hedef olarak sahip olmak istediğimiz şey, plan evresinde var olan durum ve farkların çıkartılması, apply evresinde ise farkların uygulanması ve istenilen duruma gelinmesi.

Şimdi DorukCloud üzerindeki sahip olmak istediğimiz altyapıyı terraform ile ayağa kaldırmak için gerekli konfigüasyon dosyasını oluşturup "terraform init" komutunu çalıştıralım. Bu makalede best practice dediğimiz genel kabul görmüş bir şekilde konfigürasyon dosyalarını oluşturmayacağız, tüm işlemleri iki dosya oluşturarak yapacağız, biri provider.tf diğeri ise resources.tf olacak.

Not : İlerleyen makalelerde provider.tf içeriği version.tf dosyasına alınmıştır.

Önce tüm konfigürasyon dosyalarını koyacağımız bir dizin oluşturalım, istediğiniz gibi oluşturabilirsiniz, örneklerde lina_tenant adın'da bir organizasyon üzerinde işlem yapacağımdan ben bu şekilde oluşturdum.

ubuntu@terraformubuntu:~$ mkdir vcd_lina_tenant

ubuntu@terraformubuntu:~$ cd vcd_lina_tenant/

Şimdi en sevdiğiniz editor ile provider.tf dosyasını oluşturup içerine aşağıdaki satırları ekleyin

# Configure the VMware Cloud Director Provider
terraform {
  required_providers {
    vcd = {
      source = "vmware/vcd"
    }
  }
  required_version = ">= 0.13"
}

Şimdi aşağıdaki komutu çalıştıralım "terraform init"

ubuntu@terraformubuntu:~/vcd_lina_tenant$ terraform init

Initializing the backend...

Initializing provider plugins...
- Finding latest version of vmware/vcd...
- Installing vmware/vcd v3.4.0...
- Installed vmware/vcd v3.4.0 (signed by a HashiCorp partner, key ID 8BF53DB49CDB70B0)

Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html

Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

 

Evet, eğer herşey yukardaki gibi düzgün gitti ise ilgili plugin kuruldu ve artık bir sonraki adıma hazırız.

ubuntu@terraformubuntu:~/vcd_lina_tenant$ terraform version
Terraform v1.0.8
on linux_amd64
+ provider registry.terraform.io/vmware/vcd v3.4.0

 

İlgili init komutunu çalıştırdıktan sonra açmış olduğunuz dizin altında bir dosya ve bir dizin göreceksiniz bunlardan biri ".terraform.lock.hcl" diğeride ".terraform" dizini. İlgili plugin buraya indirildi/cache'lendi ve içeriği hakkındada bir lock dosyası oluşturuldu.

Not : Bu makalede ve genel olarak değinilmemiş bir konu olarak istersenir ise terraform ile yazdığınız kodlara git, github ve bitbucket gibi versiyon kontrol sistemleri uygulayabilirsiniz.

Geri bildirim

Bu makaleyle ilgili bir sorun bulursanız ve/veya hizmetlerimizden herhangi birini nasıl iyileştirebileceğimize dair bir fikriniz varsa, info@doruk.net adresine bir e-posta gönderin.

Bu cevap yeterince yardımcı oldu mu? 1 Bu dökümanı faydalı bulan kullanıcılar: (1 Oy)