Open Stack'te Terraform ile Nasıl Özel Ortam Kurarsınız?
Bu yazı, Terraform ile OpenStack ortamını yönetmek için size yol göstermesi amacıyla yazılmıştır. Terraform, altyapı yönetimi için oldukça güçlü ve yetenekli bir otomasyon aracıdır ve Terraform’u AWS veya GCP gibi hemen hemen tüm bulut servis sağlayıcıları ile kullanabilirsiniz. Bu yazıda Terraform kurulumu, altyapısında OpenStack kullanılan SkyAtlas projesi üzerinden anlatılmıştır.
Öncelikle Terraform’u yükleyerek başlıyoruz. Linux’a nasıl kurulum yapıldığını aşağıda görüyorsunuz, fakat yine de en güncel kurulum şekli için Terraform web sitesini kontrol etmenizi öneririm.
$ wget https://releases.hashicorp.com/terraform/0.12.16/terraform_0.12.16_linux_amd64.zip
$ unzip terraform_0.12.16_linux_amd64.zip
$ sudo mv terraform /usr/local/bin/
Kimlik doğrulaması için bir RC dosyası kullanıyoruz. Bu dosyayı almak için SkyAtlas kontrol paneline giriş yapıyorum.
Ardından, açılır menüdeki Project sekmesine gidip, Compute sekmesini açarak, Access & Security bağlantısına tıklıyoruz. API Access sekmesinde Download OpenStack RC File’a tıklayıp dosyayı kaydediyoruz. (Her iki sürüm de Terraform tarafından desteklenmektedir.) Dosya adı PROJECT-openrc.sh biçiminde olacaktır; burada PROJECT, dosyayı indirdiğiniz projenin adıdır.
Dosyayı source ettiğinizde, hesap şifrenizi sorar. Doğru şifreyi girdikten sonra, ortam değişkenleri ve mevcut shell için kimlik bilgileriniz ayarlanır.
$ source THE_RC_FILE.sh
Sonra Terraform yapılandırma dosyalarını GitLab’dan alıyoruz. Bu dosyalar, tüm değişkenlerin OpenStack RC dosyasıyla uyumlu olduğu platforma hazır örnek yapılandırmalar içeriyor.
$ git clone https://gitlab.com/itsmeoz/skyatlas_compute_cluster.git
İşlem bitince, kurulum yapmak istediğimiz (deploy) klasöre gidiyoruz:
$ cd instance_with_lb
Aşağıdaki örnekte, iki yük dengeleyici (load balancer), iki ayrı ağ (network) ve bu ağlara bağlı iki farklı sanal sunucu (instance) grubu kuracağız:
Terraform’un önce sağlayıcı eklentilerini indirmesi gerekiyor.
$ terraform init
Kuruluma (deployment) başlamadan önce bir planımız olsa güzel olurdu, değil mi? Terraform plan komutu, gerçekleştirilecek eylemler için çıktı sağlayacak bir yürütme planı oluşturur.
Aşağıdaki komutu kopyalayıp yapıştırmanız yeterlidir, zaten kaynak yaparsanız rc dosyanızla birlikte çalışır.
$ terraform apply \
-var os_username=$OS_USERNAME \
-var os_project_name=$OS_PROJECT_NAME \
-var os_password_input=$OS_PASSWORD_INPUT \
-var os_auth_url=$OS_AUTH_URL \
-var os_region_name=$OS_REGION_NAME \
-var ssh_key_file=~/.ssh/id_rsa
Not: Yukarıdaki komut, ana dizininiz ‘~/.ssh/id_rsa’ altında bir ssh-key dosyanız olduğunu varsayar. Eğer yoksa veya farklı bir key dosyası kullanmak istiyorsanız, yolu (path) değiştirmek gerekir.
Terraform plan çıktısından memnunsanız, ortamınızı kurmaya hazırsınız demektir.
$ terraform destroy \
-var os_username=$OS_USERNAME \
-var os_project_name=$OS_PROJECT_NAME \
-var os_password_input=$OS_PASSWORD_INPUT \
-var os_auth_url=$OS_AUTH_URL \
-var os_region_name=$OS_REGION_NAME \
-var ssh_key_file=~/.ssh/id_rsa
Uyarı: Terraform destroy komutunun, güvenlik nedeniyle, sanal sunucularınızın blok depolama alanlarını (volume) yok etmeyeceğini; eğer bunlara ihtiyacınız yoksa, kodu değiştirebileceğinizi veya bu blok depolama alanlarını elle silebileceğinizi unutmayın.