Uğur Duran
5 min readJan 27, 2022

Selamlar , ben Uğur . Bugün sizlere workfordreamseries yedinci sayısında sizlere herkes için otomasyon diyerek kullandığımız “Terraform hakkında aktarabildiğim kadar bilgi ve AWS Console üzerinde EC2 sunucu create etme hakkında yapmış olduğum çalışmamı sizlere aktarmak adına kalemi elime alıyorum..

Terraform Nedir ?

Terraform, HashiCorp tarafından oluşturulan “Kod olarak Altyapı” aracı olan açık bir kaynaktır.

Bildirime dayalı bir kodlama aracı olan Terraform, geliştiricilerin bir uygulamayı çalıştırmak için istenen “son durum” bulutunu veya şirket içi altyapıyı tanımlamak üzere HCL (HashiCorp Yapılandırma Dili) adlı üst düzey bir yapılandırma dili kullanmalarını sağlar. Ardından, bu son duruma ulaşmak için bir plan oluşturur ve altyapıyı tahsis etmek için bu planını yürütür.

Terraform Kurulumu

Kurulumu çok basittir.

https://www.terraform.io/downloads adresinden infranızın tipine göre basit bir şekilde kurulum yapabilirsiniz.

Localim MacOS olduğu için , brew comutlarını kullanarak kurulumlarımı aşağıdaki gibi basit bir şekilde gerçekleştirdim.

Neden Terraform?

Terraform bakıldığında, birçok DevOps tool uyla entegre çalışmasının yanı sıra trend alanlardan olan SDN(Software-Defined-Networking), multi cloud yapılarının kurulması gibi farklı birçok farklı alanlarda mission-critic görevleri yüksek güvenilirlikle yerine getirmek , gereksiz iş yükünden kurtulmak için tercih edilen bir tooldur.

Kendi adıma, IaC dünyasında belirgin bir özelliğinden dolayı kullanmaya zorunlu kaldığım spesifik bir tool henüz olmadı.

Terraform Top Topic Özellikleri

— Terraform’un yazıldığı dil olan HCL, bana anlaşılabilir-human readable gelmişti.
— Ayrıca bundan daha da önemlisi, Terraform çok çeşitli ve sayıda provider ile entegre olabiliyordu.
— Dökümantasyonları bana gayet anlaşılır ve basit geldi.
— Detaylı dökümantasyon sayfasını ise (https://www.terraform.io/docs ) görebilirsiniz.
— Sorunsuz şekilde infrastructure üzerinde değişiklik sağlayarak immutable (static)infrastructure oluşturması
— Çok sayıda provider ile çalışabilmesi.
— Terraform’un çalışabildiği tüm providerların listesini (https://registry.terraform.io/browse/providers ) görebilirsiniz.

Terraform Avantajları

  • Kurmuş olduğunuz bir end to end infrastucture’ınız var ise bu ortamı preprod ve prod ortamlarınıza tek bir komutla end to end olarak kurulumunda yardımcı olur.
  • Yine vermiş olduğunuz static konfigrasyonlar olduğu için insan hatasını sıfır noktasına indirgemiş olur.

Terraform AWS EC2 Create Adımları

Yukarıda bahsetmiş olduğum gibi localime brew komutları ile kurulumlarımı tamamladım. Şimdi mevcut AWS Console ekranıma EC2 create adımlarına başlıyor olacağız.

İlk olarak help page olarak “ terraform -help “ komutu ile aşağıdaki gibi terraform komutlarını görünmektedir. Main commands bizim genel olarak kullanılan ve create edilme noktasında kullanılan başlıca komutlarımızdır.

terraform -help

  • Öncelikle mevcut bulunduğunuz sunucu ya da localinizi erişim için elinizde bulunan access ve secret key’leri export etmeniz gerekmektedir.
  • Daha sonra terraform’un provider olarak bağlanması gereken AWS Account’a “aws configure” komutu ile eklenmesi gerekmektedir.
  • Daha sonra terraform ile AWS üzerinde EC2 kurulumu için aws.tf ve ec2.tf dosyalarını create ettim.
  • aws.tf dosyamız bizim create edilecek ortamın provider belirlenmesi için oluşturdum.
  • Daha sonra kurulucak olan EC2 makinemin name, instance_type, ami ve tag gibi bilgileri aşağıdaki typing’de oluşturdum.
  • Burada t2.micro AWS ‘in ücretsiz olarak sunduğu ücrestsiz bir sunucu olduğunu altını çizmek isterim.
  • Terraform dosyalarımı AWS e create olması için artık hazır.
  • Şimdi aşağıdaki init , plan ve apply adımları ile AWS üzerinde EC2 kurulum adımlarını sırasıyla yapıyor olacağız.
  • Son adımda destroy ile AWS üzerinde oluşturduğumuz EC2 sunucumuzu Terminate ederek kapatıyoruz.
  • İlk olarak aws.tf ve ec2.tf dosyalarımızın bulunduğu path’de aşağıdaki komutu çalıştırıp bu çıktıyı görmemiz gerekiyor.

terraform init

  • Daha sonra success olarak initialized olan configlerimizi plan adımına aşağıdaki gibi ilerliyoruz.

terraform plan

  • Bu adımda AWS EC2 ile ilgili uzun bir config bize makine özellikleri bakımından bilgiler verdiği alan.
  • Daha sonra oluşturduğumuz bu plan doğrultusunda check edilen ortamı apply aşamasına geçmek için aşağıdaki komut çalıştırılır.

terraform apply

  • apply işlemi sonrasında AWS CONSOLE ekranınızda “ Pending “ statüsünde create olan bir EC2 sunucu otomatik oluşucaktır.
  • terraform apply işlemini bitirdiğinde Running statü de EC2 sunumuzu elde etmiş olacağız.
  • Daha sonra oluşturmuş olduğumuz EC2 makinemizi tamamen ortadan kaldırmak istediğimiz bir adımda ilerlemek içi aşağıdaki komut çalıştırılır.

terraform destroy

  • Destroy komutu ile birlikte AWS CONSOLE ekranında Terminated olan sunucunun kapatıldığını görüceksiniz.

Everything as a code !!!

Terraform POC kapsamında anlatıcaklarım şimdilik bu kadar , daha sonraki workfordreamseries yazılarımda AWS üzerinde VPC , S3 , Route53 oluşturma konularında kalemi elime alıyor olacağım :)

Uğur Duran
Bestcloudfor.me Cloud Native Engineer Associate

#workfordreamseries