Terraform İle AWS Kullanımı ve EC2 Server Deploy
Terraform ile Amazon Web Services (AWS) bulut sağlayıcısı için kolaylıkla bir altyapı hazırlayabilirsiniz. Bu yazıda AWS üzerinde hizmetleri oluşturmak, yönetmek ve yok etmek için Terraform kullanacağınız. Ayrıca AWS, aşağıdaki sebeplerden dolayı Terraform öğrenmek için iyi bir seçimdir:
- AWS, açık ara en popüler bulut altyapısı sağlayıcısıdır. Sonraki üç en büyük rakibin (Microsoft, Google ve IBM) toplamından daha fazla olan bulut altyapısı pazarında %32'lik bir paya sahiptir (Kaynak: Canalys, 2021).
- AWS, çok çeşitli güvenilir ve ölçeklenebilir bulut barındırma hizmetleri sunar. Bunlardan başında; sanal sunucuları deploy etmek için kullanabileceğiniz Amazon Elastic Compute Cloud (Amazon EC2), Bir sanal sunucu kümesini yönetmeyi kolaylaştıran Otomatik Ölçeklendirme Grupları (ASG'ler) ve trafiği sanal sunucular kümesine dağıtmak için kullanabileceğiniz Elastic Load Balancer'lard (ELB'ler) gelir.
- AWS, ilk yıl için, tüm bu örnekleri ücretsiz olarak veya çok düşük bir maliyetle çalıştırmanıza izin verecek cömert bir Ücretsiz Katman sunar. Ücretsiz kullanım kredilerinizi zaten kullandıysanız, bu yazıdaki örnekler yine de size daha birkaç TL den fazlasına mal olmaz.
Daha önce AWS veya Terraform kullanmadıysanız endişelenmeyin; Bu yazı, her iki teknolojiye de yeni başlayanlar için tasarlanmıştır. Aşağıdaki adımlarda size yol göstereceğim:
- AWS hesabını ayarlamak
- Terraform'u yüklemek
- Bir sunucu deploy etmek
- Sunucuları kaldırmak
1. AWS Hesabını Ayarlamak
Henüz bir AWS hesabınız yoksa https://aws.amazon.com adresine gidin ve kaydolun. AWS'ye ilk kaydolduğunuzda, başlangıçta root
kullanıcı olarak oturum açarsınız. Bu kullanıcı hesabı, hesapta her şeyi yapmak için erişim izinlerine sahiptir, bu nedenle güvenlik açısından root kullanıcısını gündelik olarak kullanmak iyi bir fikir değildir. Aslında, root kullanıcıyı kullanmanız gereken tek şey, daha sınırlı izinlere sahip başka kullanıcı hesapları oluşturmak ve ardından hemen bu hesaplardan birine geçmektir.
Daha sınırlı bir kullanıcı hesabı oluşturmak için Identity and Access management (IAM) hizmetini kullanmanız gerekecektir. IAM, kullanıcı hesaplarının yanı sıra her kullanıcı için izinleri yönettiğiniz yerdir. Yeni bir IAM kullanıcısı oluşturmak için öncelikle IAM Konsolu'na gidiniz.
Kullanıcılar (Users) menüsünü ve ardından Kullanıcı Ekle (Add users) butonunu tıklayın.
Kullanıcı için bir ad girin ve "Erişim anahtarı - Programlı erişim (Access key - Programmatic access)"in seçili olduğundan emin olun. (Not, AWS'nin zaman zaman web konsolunda değişiklikler yaptığını, bu nedenle gördüklerinizin aşağıdaki ekran görüntülerinden biraz farklı görünebileceğini unutmayın).
İleri düğmesine tıklayın. AWS, sizden kullanıcıya izinler eklemenizi isteyecektir. Varsayılan olarak, yeni IAM kullanıcılarının hiçbir izni yoktur ve bir AWS hesabında hiçbir şey yapamazlar. IAM kullanıcınıza bir şey yapma yeteneği vermek için bir veya daha fazla IAM ilkesi o kullanıcının hesabıyla ilişkilendirmeniz gerekir. IAM İlkesi, bir kullanıcının ne yapmasına izin verilip verilmediğini tanımlayan bir JSON belgesidir. Kendi IAM ilkelerinizi oluşturabilir veya AWS hesabınızda yerleşik olarak bulunan ve Yönetilen İlkeler (Managed Policies) olarak bilinen önceden tanımlanmış IAM ilkelerinizden bazılarını kullanabilirsiniz.
Bu yazıdaki örnekleri çalıştırmak için en basit yöntem olarak Şekil 4'te gösterildiği gibi, IAM kullanıcınıza AdministratorAccess managed policy eklemektir.
Birkaç kez direkt İleri'yi ve ardından Kullanıcı oluştur (Create user) düğmesini tıklayın. AWS, Şekil 5'te gösterildiği gibi, o kullanıcının Access key ID ve Secret Access key güvenlik kimlik bilgilerini size gösterecektir. Bunları hemen kaydetmelisiniz çünkü bir daha asla gösterilmeyecekler ve ilerleyen bölümlerde bunlara ihtiyacınız olacak. Bu kimlik bilgilerinin AWS hesabınıza erişim sağladığını unutmayın, bu nedenle bunları güvenli bir yerde saklayın (ör. 1Password, LastPass veya macOS Anahtar Zinciri gibi bir parola yöneticisi) ve asla kimseyle paylaşmayın.
Kimlik bilgilerinizi kaydettikten sonra Kapat düğmesini tıklayın. Artık Terraform'u kullanmaya hazırsınız.
2. Terraform Kurulumu
AWS kullanıcımız ve erişim bilgileri hazır olduğuna göre artık Terraform'u kullanmaya geçebiliriz. Terraform'un kurulumu oldukça basittir ve bir önceki yazımızda sizler için detaylıca kurulum aşamalarını görsellerle anlattık. Yazıya aşağıdaki bağlantıdan ulaşabilir ve Terraform kurulumunu tamamladıktan sonra bir sonraki başlıkla devam edebilirsiniz.
3. Provider Kimlik Bilgilerini Ayarlamak
Terraform'un AWS hesabınızda değişiklik yapabilmesi için, daha önce oluşturduğunuz IAM kullanıcısı için AWS kimlik bilgilerini AWS_ACCESS_KEY_ID
ve AWS_SECRET_ACCESS_KEY
ortam değişkenleri olarak ayarlamanız gerekir. Örneğin, bir Unix/Linux/macOS terminalinde bunu şu komutlarla yapabilirsiniz:
export AWS_ACCESS_KEY_ID=AKIKERTERIZNN7BLOG
export AWS_SECRET_ACCESS_KEY=wJalrXKerTeriz/BLOG/bPxRfiCEXAMPLEKEY
Aynısını bir Windows komut terminalinde şu şekilde yapabilirsiniz:
set AWS_ACCESS_KEY_ID=AKIKERTERIZNN7BLOG
set AWS_SECRET_ACCESS_KEY=wJalrXKerTeriz/BLOG/bPxRfiCEXAMPLEKEY
Bu ortam değişkenlerinin yalnızca çalıştırıldığı shell için geçerli olduğunu unutmayın. Bu nedenle bilgisayarınızı yeniden başlatırsanız veya yeni bir terminal penceresi açarsanız, bu değişkenleri yeniden export etmeniz gerekir.
🚨 GÜVENLİK NOTLARI:
Ortam değişkenlerini yukarıda gösterildiği gibi ayarlamak, en azından Linux/Unix/Mac'te kimlik bilgilerinizi bash geçmişinizde saklayacaktır. Bu, kimlik bilgilerinizin düz metin olarak diskte saklanacağı anlamına gelir! Bunu önlemenin birkaç yolu var.
Birincisi, export
komutlarından önce bir boşluk eklemektir:
export AWS_ACCESS_KEY_ID=AKIKERTERIZNN7BLOG
export AWS_SECRET_ACCESS_KEY=wJalrXKerTeriz/BLOG/bPxRfiCEXAMPLEKEY
Varsayılan olarak, başında boşluk bulunan komutlar bash geçmişinde saklanmaz (not: emin olmak için burada açıklandığı gibi HISTCONTROL ayarınızı değiştirmeniz gerekebilir).
İkinci ve daha güvenli seçenek, kimlik bilgilerinizi pass gibi CLI dostu parola deposunda saklamaktır. Örneğin, kimlik bilgilerini aşağıdaki gibi saklayabilirsiniz:
pass insert aws-access-key-id
Enter aws-access-key-id: AKIKERTERIZNN7BLOG
pass insert aws-secret-access-key
Enter aws-secret-access-key: wJalrXKerTeriz/BLOG/bPxRfiCEXAMPLEKEY
Yukarıdaki komutları çalıştırdığınızda, pass
, kimlik bilgilerini aws-access-key-id
ve aws-secret-access-key
adlı iki dosyaya kaydederek her dosyayı gpg
ile şifreler. Artık, bash geçmişinde herhangi bir secret saklama riski olmadan ortam değişkenlerinizi aşağıdaki komutta olduğu gibi ayarlayabilirsiniz:
export AWS_ACCESS_KEY_ID=$(pass aws-access-key-id)
export AWS_SECRET_ACCESS_KEY=$(pass aws-secret-access-key)
Hatta yukarıdaki iki satırı alıp auth.sh
adlı bir komut dosyasına yerleştirebilir ve tek bir komutla ortam değişkenlerinizi ayarlayabilirsiniz. Ardından yazının ilerleyen bölümlerde göreceğiniz gibi bir terraform komutu çalıştırmadan önce hızlıca kimlik bilgilerini ilgili terminale set edebilirsiniz.
. auth.sh
terraform apply
🚧 ASLA YAPMAYIN
Terraform ile providerlara erişebilmek için gerekli olan kimlik bilgileri veya token gibi hassas içerikleri asla ortalıkta bırakmayınız. Clear text olarak kodunuza da asla yerleştirmeyin. Terraform örneklerine bakarken birçok kodda bu kimlik bilgilerini yerleştirebilmeniz için hazır kod parçaları göreceksinizdir. Mesela şunun gibi:
provider "aws" {
access_key = "KERTERIZXXXBLOG"
secret_key = "OjSRn8Kerteriz/BlogwUIBXeKQXrAO"
region = "us-east-2"
}
provider "digitalocean" {
token = "085445801a4faKerteriz0b34ce8860Blog07550b3c97"
}
Terraform provider
özelliği herhangi bir ortam değişkeni ayarlaması yapmanıza gerek kalmadan kimliklendirme aşamasında işinize yarayacaktır fakat gizli bilgileriniz bir o kadar da açıkta kalacaktır. Terraform öğrenme aşamasında kolaylık olması için bu yöntemi kullanabilirsiniz fakat production kodunuzda veya deployment sunucunuzda bu gizli bilgileri açıkça yayınlamayın. Bunun yerine biraz yukarıda bahsettiğimiz yöntemleri kullanabilir veya internette başka hangi güvenli yöntemler var araştırabilirsiniz.
4. EC2 Instance Deploy Etmek
Terraform kodu .tf
uzantılı dosyalarda HashiCorp Configuration Language (HCL) ile yazılmıştır. Declarative bir dildir, yani amacınız sadece istediğiniz altyapıyı anlatmaktır ve Terraform bunun nasıl oluşturulacağını kendi çözecektir. Terraform, çok çeşitli platformlarda veya AWS, Azure, Google Cloud, DigitalOcean ve diğerleri dahil olmak üzere birçok sağlayıcıda (provider) altyapı (infrastructure) oluşturabilir.
Terraform kodunu hemen hemen her metin düzenleyicide yazabilirsiniz. Biraz arama yaparsanız, vim, emacs, Sublime Text, Atom, Visual Studio Code ve IntelliJ de dahil olmak üzere çoğu düzenleyici için Terraform syntax highlighting desteği bulabilirsiniz ("Terraform" yerine "HCL" kelimesini aramanız gerekebilir). Kendimin Visual Studio Code kullandığımı da belirtmek isterim.
Terraform'u kullanmanın ilk adımı, genellikle kullanmak istediğiniz sağlayıcıları yapılandırmaktır. Bu yapılandırma için boş bir klasör oluşturun ve içine aşağıdaki içerikleri içeren main.tf
adlı bir dosyayı ekleyin:
provider "aws" {
region = "us-east-2"
}
Bu kod parçası, Terraform'a sağlayıcınız olarak AWS'i kullanacağınızı ve altyapınızı us-east-2 bölgesine dağıtmak istediğinizi söyler. AWS, dünyanın her yerinde bölgelere göre gruplandırılmış veri merkezlerine sahiptir. AWS Region, us-east-2 (Ohio)
, eu-west-1 (İrlanda)
ve ap-southeast-2 (Sidney)
gibi ayrı bir coğrafi bölgedir. Her bölge içinde us-east-2a
, us-east-2b
vb. gibi Availability Zone (AZ'ler) olarak bilinen birden çok yalıtılmış veri merkezi vardır. Bu sağlayıcıda yapılandırabileceğiniz birçok başka ayar vardır, ancak şimdilik bunu basit tutalım. Çünkü ileride sağlayıcı yapılandırmasına daha derinlemesine bakacağız. Ayrıca tüm bölge ve AZ'lere şu adresten ulşabilirsiniz:
Her sağlayıcı türü için oluşturabileceğiniz sunucular, veritabanları ve yük dengeleyiciler gibi birçok farklı türde kaynak (resource) vardır. Terraform'da bir kaynak oluşturmak için genel syntax şöyledir:
resource "<PROVIDER>_<TYPE>" "<NAME>" {
[CONFIG ...]
}
PROVIDER
bir sağlayıcının adıdır (örneğin,AWS
),TYPE
, o sağlayıcıda oluşturulacak kaynak türüdür (örneğin,instance
),NAME
, bu kaynağa atıfta bulunmak için Terraform kodu boyunca kullanabileceğiniz bir değişkendir (örneğin,my_instance
),CONFIG
, o kaynağa özgü bir veya daha fazla bağımsız değişkenden oluşur.
Örneğin, AWS'de EC2 Instance olarak bilinen tek bir (sanal) sunucu deploy etmek için main.tf
'deki aws_instance
kaynağını aşağıdaki gibi kullanabilirsiniz:
resource "aws_instance" "example" {
ami = "ami-0fb653ca2d3203ac1"
instance_type = "t2.micro"
}
aws_instance
resource birçok farklı argümanı destekler, ancak şimdilik sadece gerekli olan iki argümanı ayarlamanız yeterlidir:
ami
: EC2 instance üzerinde çalışacak Amazon Machine Image (AMI) değişkenidir. AWS Marketplace'da ücretsiz ve ücretli AMI'ler bulabilir veya Packer gibi araçları kullanarak kendi AMI'lerinizi oluşturabilirsiniz. Önceki kod örneği,us-east-2
'deki bir Ubuntu 20.04 AMI'nin kimliğidir. Bu AMI'nin kullanımı ücretsizdir. AMI kimliklerinin her AWS bölgesinde farklı olduğunu lütfen unutmayın, bu nedenle bölge parametresinius-east-2
dışında bir şeyle değiştirirseniz, o bölge için ilgili Ubuntu AMI Kimliğini manuel olarak aramanız gerekir ve bu değişkeni düzenlemeniz gerekir. İlerleyen yazılarımızda AMI Kimliğini tamamen otomatik olarak nasıl alacağınızı göreceksiniz. Fakat şimdilik istediğiniz farklı bir image için nasıl AMI ID alabileceğinizi öğrenmek için şu yazımıza hızlıca bakabilirsiniz:
instance_type
: Çalıştırılacak EC2 Instance tipidir. Her EC2 Instance tipi, farklı miktarda CPU, bellek, disk alanı ve ağ kapasitesi sağlar. EC2 Instance tipleri sayfası, mevcut tüm seçenekleri listeler. Yukarıdaki örnek, bir sanal CPU'ya, 1 GB belleğe sahip olan ve AWS Free Tier'ın bir parçası olant2.micro
'yu ayarlar.
aws_instance
kaynağına ilişkin belgeler buradadır. Bir terminalde, main.tf
dosyasını oluşturduğunuz klasöre gidin ve terraform init
komutunu çalıştırın (Öncesinde 3. başlıktaki ortam değişkenleri bu terminal için ayarlamayı unutmayın):
Terraform binary dosyası, Terraform için temel işlevleri içerir, ancak hiçbir provider'ın (örneğin, AWS, Azure, GCP vb.) koduyla birlikte gelmez. Bu nedenle Terraform'u ilk kullanmaya başladığınızda , Terraform'a kodu taramasını, hangi providerları kullandığınızı bulmasını ve onlar için kütüphanesini indirmesini söylemek için terraform init
çalıştırmanız gerekir. Varsayılan olarak, provider kodu, Terraform'un çalışma dizinindeki .terraform
klasörüne indirilecektir (bunu .gitignore
'a eklemek isteyebilirsiniz). Terraform ayrıca indirdiği sağlayıcı koduyla ilgili bilgileri bir .terraform.lock.hcl
dosyasına kaydeder (bu dosya hakkında daha fazla bilgiyi ilerleyen yazılarımızda öğreneceksiniz). Daha sonraki yazılarda init
komutu ve .terraform
klasörü için birkaç başka kullanım daha göreceksiniz. Şimdilik, yeni Terraform koduyla her başladığınızda init
komutunu çalıştırmanız gerektiğini ve init
'i birden çok kez çalıştırmanın tamamen güvenli olduğunu unutmayınız. (init
komutu idempotent dir).
Provider kodunu indirdiğinize göre, terraform plan
komutunu çalıştırabilirsiniz:
$ terraform plan
(...)
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0fb653ca2d3203ac1"
+ arn = (known after apply)
+ associate_public_ip_address = (known after apply)
+ availability_zone = (known after apply)
+ cpu_core_count = (known after apply)
+ cpu_threads_per_core = (known after apply)
+ get_password_data = false
+ host_id = (known after apply)
+ id = (known after apply)
+ instance_state = (known after apply)
+ instance_type = "t2.micro"
+ ipv6_address_count = (known after apply)
+ ipv6_addresses = (known after apply)
+ key_name = (known after apply)
(...)
}
Plan: 1 to add, 0 to change, 0 to destroy.
plan
komutu, herhangi bir değişiklik yapmadan önce Terraform'un ne yapacağını görmenizi sağlar. Bu, kodunuzu ortama salmadan önce akıl sağlığınızı kontrol etmenin harika bir yoludur :) plan
komutunun çıktısı, Unix, Linux ve git'in bir parçası olan diff
komutunun çıktısına benzer: artı işaretli (+) her şey oluşturulur, eksi işaretli (–) her şey silinir, ve yaklaşık işareti (~) olan her şey düzenlenir. Önceki çıktıda, Terraform'un tek bir EC2 Bulut Sunucusu oluşturmayı planladığını ve tam olarak istediğiniz gibi başka bir şey olmadığını görebilirsiniz.
Instance'ı gerçekten oluşturmak için terraform apply
komutunu çalıştırın ve yapılacak işlemleri teyit ettikten sonra yes
yazarak işlemleri başlatın:
Tebrikler, Terraform kullanarak AWS hesabınıza bir EC2 Instance deploy ettiniz! Bunu doğrulamak için EC2 konsoluna gidin ve Şekil 9'a benzer bir şey gördüğünüzden emin olun. Ayrıca 1 numaralı işaretlediğim yerden us-east-2
seçili olmasına dikkat edin.
Birçok parametreyi manual düzenleyip bir instance luşturmaktansa birkaç satır kodla instance'ı ayağa kaldırmak kiç kuşkusuz muhteşem bir şey fakat bu en heyecan verici örneklere henüz gelmedik. İlerleyen yazılarımızda her bir heyecan verici örneği tek tek anlatacağız. Fakat şimdilik işi biraz daha ilginç hale getirelim. İlk olarak, EC2 Instance'ın bir adı olmadığına dikkat edin. Bir ad eklemek için aws_instance
kaynağına tags
ekleyebilirsiniz:
resource "aws_instance" "example" {
ami = "ami-0fb653ca2d3203ac1"
instance_type = "t2.micro"
tags = {
Name = "terraform-example"
}
}
Bunun ne yapacağını görmek için terraform apply
komutunu tekrar çalıştırın:
$ terraform apply
aws_instance.example: Refreshing state...
(...)
Terraform will perform the following actions:
# aws_instance.example will be updated in-place
~ resource "aws_instance" "example" {
ami = "ami-0fb653ca2d3203ac1"
availability_zone = "us-east-2b"
instance_state = "running"
(...)
+ tags = {
+ "Name" = "terraform-example"
}
(...)
}
Plan: 0 to add, 1 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value:
Terraform, bu yapılandırma dosyaları için önceden oluşturduğu tüm kaynakları takip eder, böylece EC2 Instance'ın zaten var olduğunu bilir (Uygula komutunu çalıştırdığınızda Terraform'un Refreshing state…
dediğine dikkat edin) ve size zaten deploy edilmişler ile arasındaki farkı gösterebilir. Önceki fark, Terraform'un Name
adında tek bir etiket oluşturmak istediğini gösterir. Bu nedenle evet
yazın ve Enter'a basın.
EC2 konsolunuzu yenilediğinizde Şekil 10'a benzer bir şey görürsünüz.
Artık çalışan bir Terraform kodunuz olduğuna göre, onu sürüm kontrolüyle saklamak isteyebilirsiniz. Bu, kodunuzu diğer ekip üyeleriyle paylaşmanıza, tüm altyapı değişikliklerinin geçmişini izlemenize ve debug için log günlüğünü kullanmanıza olanak tanır. Örneğin, yerel bir Git reposunu nasıl oluşturabileceğiniz ve Terraform yapılandırma dosyanız ile kilit dosyanızı saklamak için git'i nasıl kullanacağınızı aşağıda görebilirsiniz. (Kilit dosyası hakkında her şeyi ilerleyen yazılarda anlatacağız; şimdilik, bilmeniz gereken tek şey bu kodunuzla birlikte sürüm kontrolüne eklenmelidir):
git init
git add main.tf .terraform.lock.hcl
git commit -m "Initial commit"
Ayrıca aşağıdaki içeriğe sahip bir .gitignore
dosyası oluşturmalısınız:
.terraform
*.tfstate
*.tfstate.backup
Önceki .gitignore
dosyası Git'e, Terraform'un geçici bir çalışma dizini olarak kullandığı .terraform
klasörünü ve ayrıca Terraform'un stateleri depolamak için kullandığı *.tfstate
dosyalarını yok saymasını söyler. .gitignore
dosyasını da commit etmelisiniz:
git add .gitignore
git commit -m "Add a .gitignore file"
Bu kodu ekip arkadaşlarınızla paylaşmak için herkesin erişebileceği paylaşılan bir Git reposu oluşturmak isteyeceksiniz. Bunu yapmanın bir yolu GitHub kullanmaktır. Github.com'a gidin, henüz bir hesabınız yoksa bir hesap oluşturun ve yeni bir repository yaratın. Yerel Git reponuzu, yeni GitHub reposu olarak kullanmak için aşağıdaki gibi git kodlarını çalıştırabilirsiniz:
git remote add origin git@github.com:<YOUR_USERNAME>/<YOUR_REPO_NAME>.git
Artık, commitlerinizi takım arkadaşlarınızla paylaşmak istediğinizde, onları origin
'e push edebilirsiniz:
git push origin main
Ve ne zaman takım arkadaşlarınızın yaptığı değişiklikleri görmek isterseniz, onları origin
'den pull edebilirsiniz:
git pull origin main
Bu Terraform yazı serimizin geri kalanını gözden geçirirken ve genel olarak Terraform'u kullanırken, düzenli olarak git commit
ve git push
değişikliklerinizi yaptığınızdan emin olun. Bu şekilde, yalnızca ekip üyeleriyle bu kod üzerinde işbirliği yapmakla kalmayacak, tüm altyapı değişiklikleriniz de hata ayıklama için çok kullanışlı olan log günlüğüne kaydedilecektir. İleride Terraform'u ekip olarak kullanma hakkında daha fazla bilgi vereceğiz.
5. EC2 Instance Destroy Etmek
Bu yazının veya gelecekteki yazıların sonunda Terraform ile denemelerinizi bitirdiğinizde, AWS'nin sizden bunlar için ücret talep etmemesi için oluşturduğunuz tüm kaynakları kaldırmak iyi bir fikirdir. Terraform, yarattığınız kaynakları takip ettiğinden, temizleme işlemi oldukça basittir. Tek yapmanız gereken destroy
komutunu çalıştırmaktır:
$ terraform destroy
(...)
Terraform will perform the following actions:
# aws_lb.example will be destroyed
- resource "aws_lb" "example" {
(...)
}
(...)
Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value:
Bir production ortamında destroy
komutunu nadiren çalıştırmanız gerektiğini söylemeye gerek yok! Destroy komutunu "geri alma" şansınız yoktur, bu nedenle Terraform size yaptığınız şeyi gözden geçirmeniz için son bir şans verir ve silmek üzere olduğunuz tüm kaynakların listesini size gösterip onaylamanızı ister. Her şey yolunda görünüyorsa, yes yazın ve Enter'a basın. Ardından Terraform, bağımlılık grafiğini oluşturacak ve mümkün olduğunca fazla paralellik kullanarak tüm kaynakları doğru sırada silecektir. Bir veya iki dakika içinde AWS hesabınız tekrar temiz olacaktır.
6. Özet
Bu yazıda Terraform kullanabilmek için AWS hesabınızı nasıl ayarlayacağınız, Terraform'u naıl kuracağınıza ve EC2 Instance yani sanal sunucuyu Terraform ile nasıl deploy edebileceğinize değindik. İlerleyen yazılarımızda daha fazla servis ve provider ile daha fazla örnek yapacağız. Bunun için Terraform kategorisini takipte kalabilirsiniz.