Terraform, geliştiricilerin altyapı yapılandırmalarını bildirimsel bir dil kullanarak tanımlamasına ve yönetmesine olanak tanıyan açık kaynaklı bir kod olarak altyapı (IaC) aracıdır. Terraform, Elastic Compute Service (ECS) kaynaklarını oluşturmak, değiştirmek veya silmek için basit bir yol sunar. Bu yaklaşım, manuel işlemlerin karmaşıklığını ve hata riskini azaltır; altyapınızın yönetilebilirliğini ve sürdürülebilirliğini artırır. Bu konuda Terraform'un nasıl kurulup yapılandırılacağı ve bir ECS örneği oluşturmak için nasıl kullanılacağı açıklanmaktadır.
Terraform'un temel özellikleri
Terraform, BT altyapısı otomasyonu ve düzenleme aracıdır. BT kaynaklarını kodla yönetmenize ve bakımını yapmanıza olanak tanır. Daha fazla bilgi için bkz. Terraform Nedir?.
Terraform komut satırı arayüzü (CLI), yapılandırma dosyalarını Alibaba Cloud veya desteklenen diğer cloud ortamlarına dağıtmak ve sürümlerini yönetmek için basit bir yol sağlar. Bulut kaynak topolojinizi açıklayan yapılandırma dosyalarında sanal makineler, depolama hesapları ve ağ arabirimleri gibi altyapınızı tanımlayabilirsiniz.
Terraform, sağlayıcılar aracılığıyla yeni altyapıları destekler. Bu sayede basit bir şablon dili kullanarak Alibaba Cloud üzerinde cloud altyapısını kolayca tanımlayabilir, ön izleyebilir ve dağıtabilirsiniz.
Terraform'u birden çok Alibaba Cloud hizmetinin kaynaklarını oluşturmak, değiştirmek ve silmek için kullanabilirsiniz.
Alibaba Cloud ve Terraform entegrasyonu hakkında daha fazla bilgi için bkz. Alibaba Cloud Sağlayıcısı.
Terraform'u yükleme
Cloud Shell
Alibaba Cloud Shell, Terraform önceden yüklü olarak gelen ücretsiz bir operasyon ve bakım (O&M) ürünüdür. Terraform komutlarını doğrudan Cloud Shell'de çalıştırabilirsiniz.
Öncelikle gerekli izinlere sahip geçerli bir Alibaba Cloud hesabınız olduğundan emin olun.
Ardından tarayıcınızı açın ve Cloud Shell URL'sine gidin: https://shell.alibabacloud.com.
Oturum açtıktan sonra aşağıdaki komutu çalıştırın.
terraform
Çıktı, Terraform'un Cloud Shell'e yerleşik olduğunu ve kullanıma hazır olduğunu gösterir.

Cloud Shell'in nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Cloud Shell Kullanma.
Manuel yükleme
Ön derlenmiş paket kullanma
Terraform resmi web sitesine gidin. İşletim sisteminiz için ZIP paketini bulun ve indirin.
İndirme işlemi tamamlandıktan sonra, paketi /usr/local/bin dizinine ayıklayın. Kopyalama işlemi tamamlandığında, Terraform'un çalışma şeklini etkilemeden diğer dosyaları silebilirsiniz.
Son olarak, Terraform dizininin PATH ortam değişkenine eklendiğinden emin olun. Bu süreç işletim sisteminize göre değişiklik gösterir.
Windows
Denetim Masası > Sistem > Gelişmiş sistem ayarları > Ortam Değişkenleri yolunu izleyin.
Sistem değişkenlerinde PATH'i bulana kadar aşağı kaydırın.
Düzenle'ye tıklayın ve değişikliklerinizi yapın.
Girişleri ayırmak için noktalı virgül eklediğinizden emin olun. Örneğin:
c:\path;c:\path2Değişikliklerin etkili olması için yeni bir konsol başlatın.
Daha fazla bilgi için bkz. Windows'ta genel yol tanımlama.
macOS veya Linux
PATH yapılandırmanızı görüntüleyin.
echo $PATH
Terraform ikili dosyasını listelenen konumlardan birine taşıyın. Bu komut, ikili dosyanın İndirilenler klasörünüzde olduğunu ve PATH değişkeninizin /usr/local/bin içerdiğini varsayar. Konumlarınız farklıysa komuttaki dizinleri özelleştirin.
mv ~/Downloads/terraform /usr/local/bin/
Daha fazla bilgi için bkz.:
Kaynak kodunu kullanma
İkili dosyayı kaynak koddan derlemek istiyorsanız HashiCorp Terraform deposunu klonlayın.
git clone https://github.com/hashicorp/terraform.git
İlerleme bilgilerini göreceksiniz. İşlemin tamamlanmasını bekleyin.

Komut çalıştıktan sonra mevcut dizininizde terraform adlı yeni bir dizin oluşturulur. cd komutunu kullanarak bu dizine girin.
cd terraform
Ardından dizini derlemek ve derlenen paketi $GOPATH/bin/terraform dizinine taşımak için install komutunu çalıştırın.
go install
Aşağıdaki bilgi derlemenin devam ettiğini gösterir. Devam etmeden önce işlemin bitmesini bekleyin.

Not: "zsh: command not found: go" mesajı görünürse Go ortamını yüklemeniz gerekir.
Son olarak, Terraform dizininin sisteminizin PATH değişkeninde bulunduğundan emin olun. PATH'i ayarlama yöntemi işletim sisteminize bağlıdır.
macOS veya Linux
PATH yapılandırmasını görüntüleyin
echo $PATH
Terraform ikili dosyasını PATH'inizdeki bir dizine taşıyın. Aşağıdaki komut, ikili dosyanın İndirilenler klasörünüzde olduğunu ve PATH değişkeninizin /usr/local/bin içerdiğini varsayar. Yapılandırmanız farklıysa komuttaki dizinleri özelleştirin.
mv ~/Downloads/terraform /usr/local/bin/
Daha fazla bilgi için bkz.:
Windows
Denetim Masası > Sistem > Sistem Ayarları > Ortam Değişkenleri yolunu izleyin.
Sistem değişkenleri bölümünde PATH değişkenini bulana kadar aşağı kaydırın.
Düzenle'ye tıklayın ve değişikliklerinizi yapın.
Girişleri ayırmak için noktalı virgül kullanın, örneğin c:\path;c:\path2
Değişikliklerin etkili olması için yeni bir konsol açın.
Daha fazla bilgi için bkz. Windows'ta genel yol tanımlama.
macOS Homebrew
Homebrew macOS için popüler bir paket yükleme aracıdır. Homebrew'u kullanarak Terraform'u basit komutlarla yükleyebilirsiniz.
Adım 1. Tüm HashiCorp Homebrew paketleri için bir depo olan HashiCorp tap'ini yükleyin.
brew tap hashicorp/tap
Adım 2. Terraform'u yüklemek için install komutunu çalıştırın.
brew install hashicorp/tap/terraform
install komutu en son sürümü indeksler ve yükler. Daha sonra en son sürüme güncellemek isterseniz upgrade komutunu çalıştırabilirsiniz.
Terraform'un en son sürümüne güncellemek için önce Homebrew'u güncellemeniz gerekir.
brew update
Ardından en son sürüme güncellemek için upgrade komutunu çalıştırın.
brew upgrade hashicorp/tap/terraform
Linux
Alibaba Cloud Linux
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform


Windows Chocolatey
Chocolatey Windows için popüler bir paket yöneticisidir. Chocolatey kullanarak basit komutlar çalıştırarak Terraform'u yükleyebilirsiniz.
choco install terraform
Terraform'u kimlik doğrulama
Erişim kimlik bilgilerini ortam değişkenlerinde saklayarak Terraform'u kimlik doğrulayabilirsiniz. Bir Terraform komutu çalıştırdığınızda, bu değişkenler yapılandırma şablonunda açıkça bildirilmemişse Terraform kimlik bilgilerini bu değişkenlerden almaya çalışır. Aşağıdaki bölümlerde ortam değişkenlerinin nasıl ayarlanacağı açıklanmaktadır.
Windows
Masaüstünde Bu Bilgisayar'a sağ tıklayın ve seçeneğini belirleyin.
-
System variables veya User variables bölümünde aşağıdaki ortam değişkenlerini oluşturmak için Create öğesine tıklayın.
Değişken adı
Değişken açıklamaları
Değer
ALICLOUD_ACCESS_KEY
AccessKey ID
yourAccessKeyID
ALICLOUD_SECRET_KEY
AccessKey secret
yourAccessKeySecret
ALICLOUD_SECURITY_TOKEN (İsteğe bağlı)
Security Token Service (STS) kimlik bilgilerini kullanıyorsanız bu değişkeni yapılandırmanız gerekir.
yourSTSToken
Linux
export komutuyla yapılandırılan geçici ortam değişkeni yalnızca geçerli oturum için geçerlidir. Oturumdan çıktığınızda ortam değişkeni geçersiz hale gelir. Ortam değişkenini kalıcı hale getirmek için export komutunu işletim sisteminizin başlangıç yapılandırma dosyasına ekleyin.
# AccessKey ID
$ export ALICLOUD_ACCESS_KEY="<your AccessKey ID>"
# AccessKey secret
$ export ALICLOUD_SECRET_KEY="<your AccessKey secret>"
# If you use STS credentials, you must configure security_token.
$ export ALICLOUD_SECURITY_TOKEN="<your access token>"
Ortam değişkenlerini ayarladıktan sonra provider bloğunda kimlik bilgilerini bildirmeniz gerekmez. Yalnızca bölgeyi bildirebilirsiniz.
provider "alicloud" {
region = "cn-hangzhou"
}
Bölgeyi ALICLOUD_REGION ortam değişkenini kullanarak da yapılandırabilirsiniz. Bölge açıkça bildirilmez ve bu ortam değişkeni ayarlanmazsa varsayılan değer cn-beijing olur.
Desteklenen kaynaklar
Kaynak, bir altyapı bileşenini tanımlamak için kullanılan ECS örneği, sanal makine (VM) veya güvenlik grubu gibi yeni bir nesnedir.
Terraform'u kullanarak ECS kaynaklarını oluşturma ve yönetme
Bu bölümde Terraform ile ECS kaynaklarının nasıl oluşturulup yönetileceğine ilişkin bir örnek sunulmaktadır.
-
Bir çalışma dizini oluşturun. Dizin içinde main.tf adlı bir yapılandırma dosyası oluşturun. Aşağıdaki kod bir ECS örneği ve bunun için gereken VPC, güvenlik grubu ve vSwitch kaynaklarını oluşturur. Kodu main.tf dosyasına kopyalayın.
# Define a variable "region" with the default value "cn-beijing" to specify the Alibaba Cloud region. variable "region"{ default = "cn-beijing" } # Configure the Alibaba Cloud provider to use the region defined in the "region" variable. provider "alicloud"{ region = var.region } # Define a string variable "instance_type" with the default value "ecs.e-c1m1.large" to specify the ECS instance type. variable "instance_type" { type = string default = "ecs.e-c1m1.large" } # Use a data source to query zone information. Filter the results by the specified instance type, resource creation type (such as VSwitch), and disk category. data "alicloud_zones" "default" { available_instance_type = var.instance_type available_resource_creation = "VSwitch" available_disk_category = "cloud_essd" } # Define a variable "vpc_cidr_block" with the default value "172.16.0.0/16" to specify the CIDR block for the VPC. variable "vpc_cidr_block" { default = "172.16.0.0/16" } # Define a variable "vsw_cidr_block" with the default value "172.16.0.0/24" to specify the CIDR block for the vSwitch. variable "vsw_cidr_block" { default = "172.16.0.0/24" } # Generate a random integer between 10000 and 99999 to ensure the uniqueness of some resource names. resource "random_integer" "default" { min = 10000 max = 99999 } # Create a VPC named "vpc-test" and use the random integer to ensure the name is unique. resource "alicloud_vpc" "vpc" { vpc_name = "vpc-test_${random_integer.default.result}" cidr_block = var.vpc_cidr_block } # Create a security group, include the random integer in the name to ensure uniqueness, and associate it with the VPC created above. resource "alicloud_security_group" "group" { security_group_name = "test_${random_integer.default.result}" # The field name here was replaced. vpc_id = alicloud_vpc.vpc.id } # Create a security group rule to allow all inbound TCP traffic and associate it with the previously created security group. resource "alicloud_security_group_rule" "allow_all_tcp" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" # Modified here, nic_type is changed to 'intranet'. policy = "accept" port_range = "1/65535" priority = 1 security_group_id = alicloud_security_group.group.id cidr_ip = "0.0.0.0/0" } # Create a vSwitch, include the random integer in the name to ensure uniqueness, and associate it with the VPC and zone. resource "alicloud_vswitch" "vswitch" { vpc_id = alicloud_vpc.vpc.id cidr_block = var.vsw_cidr_block zone_id = data.alicloud_zones.default.zones[0].id vswitch_name = "vswitch-test-${random_integer.default.result}" } # Create an ECS instance. Set multiple parameters such as the zone, security group, and instance type. Use the random integer to ensure the instance name is unique. resource "alicloud_instance" "instance" { availability_zone = data.alicloud_zones.default.zones[0].id security_groups = [alicloud_security_group.group.id] instance_type = var.instance_type system_disk_category = "cloud_essd" system_disk_name = "test_foo_system_disk_${random_integer.default.result}" system_disk_description = "test_foo_system_disk_description" image_id = "aliyun_2_1903_x64_20G_alibase_20240628.vhd" instance_name = "test_ecs_${random_integer.default.result}" vswitch_id = alicloud_vswitch.vswitch.id internet_max_bandwidth_out = 10 password = "Terraform@Example" # Modify the password based on your requirements. } -
Terraform çalışma zamanı ortamını başlatmak için aşağıdaki komutu çalıştırın.
terraform initAşağıdaki çıktı, Terraform'un başarıyla başlatıldığını gösterir.
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. -
Kodu yürütmek için aşağıdaki komutu çalıştırın.
terraform applyYürütme sırasında istendiğinde
yesgirin ve Enter tuşuna basın. Komutun tamamlanmasını bekleyin. Aşağıdaki çıktı görünürse kod başarıyla yürütülmüş demektir.You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes Apply complete! Resources: 6 added, 0 changed, 0 destroyed. Sonuçları doğrulayın
terraform show komutunu çalıştırma
Çalışma dizininde, Terraform tarafından oluşturulan kaynakların ayrıntılarını sorgulamak için aşağıdaki komutu çalıştırın:
terraform show

Kaynakları görüntülemek için konsola giriş yapma
ECS konsoluna giriş yapın. Sol gezinme bölmesinde seçeneğini belirleyin. Sol üst köşede bir bölge seçin. Bu örnekte, oluşturulan ECS örneğini görüntülemek için China (Beijing) seçeneğini belirleyin.

Referanslar
Daha fazla öğretici için bkz. Terraform Öğreticileri.
Yaygın Terraform komutları hakkında daha fazla bilgi için bkz. Yaygın Komutlar.
Terraform, ROS'ta yönetilen bir hizmet olarak kullanılabilir. ROS konsolunda Terraform şablonlarını dağıtabilirsiniz. Daha fazla bilgi için bkz. Terraform yığını oluşturma.