Terraform Sağlayıcıları

Terraform Saglayicilari



Popüler ve açık kaynaklı Infrastructure as a Code araçlarından biri Terraform'dur. Geliştiricilerin altyapınızı bildirimsel olarak tanımlamasına ve yönetmesine olanak tanır. Altta yatan bulut platformundan veya hizmet sağlayıcısından bağımsız olarak basit ve tutarlı bir sözdizimi kullanarak altyapı kaynaklarını oluşturmalarına, yönetmelerine ve değiştirmelerine olanak tanır.

Bu makalede, çeşitli bulut platformları ve hizmetleriyle etkileşim kurmak için farklı sağlayıcıların nasıl kullanılacağı ve yapılandırılacağı ele alınmaktadır.

Terraform Sağlayıcılarına Giriş

Terraform sağlayıcıları, Terraform kullanarak farklı bulut platformları ve hizmetleriyle etkileşim kurmamızı sağlayan eklentilerdir. Bu sağlayıcılar, belirli bir bulut platformu veya hizmetindeki kaynakları yönetmek için gerekli olan Terraform yapılandırmasını API çağrılarına çevirmekten sorumludur.







Terraform'daki Sağlayıcı Türleri

İçinde Terraform kaydı , üç tür sağlayıcı görebiliriz:



Resmi Sağlayıcılar

Resmi sağlayıcılar, Terraform'un sahibi olan HashiCorp şirketi tarafından sağlanmaktadır. İyi belgelenmiş ve güncel sağlayıcılara ihtiyacımız olursa, bu sağlayıcılar mevcut en iyi seçenektir.



AWS, Microsoft Azure ve Google Cloud Platform sağlayıcıları, Terraform'daki resmi sağlayıcılara örnek olabilir.





İş Ortağı Sağlayıcılar

Üçüncü taraf kuruluşlar, bu sağlayıcıların bakımını yapar ve hizmetlerine resmi destek sağlamak için HashiCorp ile ortaklık kurmuştur.

GitLab, MongoDB ve CloudFlare sağlayıcıları, kullanıcıların kullanımına sunulan bazı iş ortağı sağlayıcılardır.



Topluluk Sağlayıcıları

Topluluk sağlayıcıları, genellikle, bir resmi veya ortak sağlayıcı tarafından desteklenmeyen bir bulut platformunda veya hizmetinde kaynakları yönetmek isteyen Terraform topluluğunun bireyleri veya kuruluşları tarafından oluşturulur.

Topluluk sağlayıcılarının bazı örnekleri aşağıdaki resimde gösterilmektedir:

Terraform Sağlayıcı Nasıl Kullanılır?

Bir Terraform sağlayıcı kullanmak için yapılandırma dosyamıza, kullanmak istediğimiz sağlayıcıyı ve kimlik bilgileri veya bölge gibi gerekli tüm yapılandırma parametrelerini belirten bir sağlayıcı bloğu eklememiz gerekir.

Sağlayıcı yapılandırıldıktan sonra, bulut platformundaki veya hizmetteki kaynakları yönetmek için sağlayıcı tarafından Terraform yapılandırmamızda sağlanan kaynakları ve veri kaynaklarını kullanabiliriz.

AWS bulut platformunda bir EC2 örneği oluşturan basit bir Terraform yapılandırma dosyası oluşturalım.

Sağlayıcı 'ayy' {

sürüm = '~> 3.0'

bölge = 'biz-doğu-2'

}

kaynak 'aws_örnek' 'myEC2' {

hangi = 'ami-0a561b65214a47cac'

örnek_türü = 't3. küçük'

etiketler = {

isim = 'yeni örnek'

}

}

İlk olarak, AWS sağlayıcısını ve kaynakların oluşturulduğu bölgeyi belirterek sağlayıcı bloğunu tanımlarız. Ardından kaynak bloğumuzu, kaynak tipi olarak aws_instance, kaynak adı olarak “myEC2” ve nitelikler olarak “ami”, “instance_type” ve “tags” şeklinde tanımlıyoruz. Kaynak türü iki bölüme ayrılabilir: Sağlayıcı ve Kaynak. Bu durumda, 'aws' sağlayıcıdır ve 'örnek' kaynaktır. Ayrıca, birinin on EC2 bulut sunucusu sağlaması gerekiyorsa, değer olarak on ile 'count' özniteliği kullanılabilir.

Artık tanımladığımız kaynağı oluşturmak için terraform init, terraform plan ve terraform Apply komutlarını çalıştırmayı içeren Terraform akışını gerçekleştirebiliriz.

Terraform AWS sağlayıcısını kullanarak, AWS bulut platformuna erişebilir ve AWS Management Console'u kullanmadan hizmetleriyle verimli bir şekilde etkileşim kurabiliriz.

Terraform'da Birden Çok Sağlayıcı Kullanma

Terraform, tek bir sağlayıcı kullanmak yerine, çeşitli hizmet türleri ve bulut platformlarıyla etkileşim kurmak için aynı Terraform yapılandırma dosyasında birden fazla sağlayıcı kullanmamıza olanak tanır.

Anlamanız için, Google Cloud Platform'da bir bilgi işlem motorunu, GitHub'da bir depoyu ve AWS bulut platformunda bir S3 klasörünü devreye aldığımız bir örneği ele alalım.

Sağlayıcı 'google' {

proje = 'ilk proje'

bölge = 'biz-batı1'

}

Sağlayıcı 'github' {

jeton = 'SİZİN_GITHUB_TOKENİNİZ'

}

Sağlayıcı 'ayy' {

sürüm = '~> 3.0'

bölge = 'biz-batı-2'

}

kaynak 'google_compute_instance' 'gcp Örneği' {

isim = 'yeni örnek'

makine_türü = 'n1-standart-1'

bölge = 'biz-batı1-a'

önyükleme diski {

başlatma_paramları {

görüntü = 'debian-bulut/debian-10'

}

}

}

kaynak 'github_repository' 'gitRepo' {

isim = 'yeni depo'

açıklama = 'Bu benim yeni depom'

}

kaynak 'aws_s3_bucket' 'awsBucket' {

kova = 'yeni kova'

ek = 'özel'

}

İlk adım olarak sağlayıcı bloklarımızı tanımlayarak sağlayıcıları (Google, GitHub ve AWS) ve bölge, proje adı vb. gitRepo” ve “awsBucket”.

İlk olarak, Google Cloud Platform'da adı 'new-instance', makine türü 'n1-standart-1' ve kullanılabilirlik alanı olarak 'us-west1-a' olan bir bilgi işlem motoru oluşturuyoruz. Ana işletim sistemi olarak Debian'ı kullanır. Ardından “new-repo” adında bir GitHub deposu ve buna uygun bir açıklama oluşturuyoruz. Son olarak, ad olarak 'new-bucket' ve ACL (Erişim Kontrol Listesi) değeri olarak 'private' ile bir S3 klasörü yapılır.

Bu üç Terraform sağlayıcısı ile bulut platformları ve hizmetleriyle kolayca etkileşim kurabiliyoruz.

Terraform Sağlayıcılarıyla Çalışmak İçin En İyi Uygulamalar

Sağlayıcı Sürümü

Tutarlılığın sağlanmasına yardımcı olduğu ve daha yeni sürümlerdeki kırılma değişiklikleri nedeniyle beklenmeyen davranışları önlediği için sağlayıcının sürümünü belirtmeliyiz.

Sağlayıcı Kimlik Doğrulaması

Terraform'un kimliğini doğrulamak ve ilgili bulut platformu veya hizmetiyle etkileşime girmesine izin vermek için API anahtarları ve erişim belirteçleri gibi güvenli kimlik doğrulama mekanizmalarını kullanabiliriz.

Sağlayıcı Belgeleri

Sağlayıcıların genellikle belirli yapılandırma seçenekleri, özellikleri ve sınırlamaları vardır. Bu öğreticiyi anlamak, sağlayıcıyı etkili bir şekilde kullanmamıza ve yaygın tuzaklardan kaçınmamıza yardımcı olur.

Sağlayıcı Güncellemeleri

Sağlayıcılar hata düzeltmeleri, performans iyileştirmeleri ve yeni özellikler yayınlayabilir. Güncel kalmak, en son geliştirmelerden yararlanmamıza ve sağlayıcının ekosistemiyle uyumluluğu korumamıza olanak tanır.

Topluluk Desteği

Sağlayıcıları kullanırken karşılaşılan günlük zorlukları çözmek için çevrimiçi forumları, tartışma panolarını ve topluluk kanallarını kullanabiliriz.

Hata İşleme ve Sorun Giderme

Sağlayıcının hata mesajlarını, günlüklerini ve hata ayıklama tekniklerini öğrenmek iyi bir uygulamadır, böylece sorunları daha verimli bir şekilde tanılamamıza ve çözmemize yardımcı olur.

Çözüm

Terraform sağlayıcılarına kısa bir giriş yaptık. Çeşitli bulut platformları ve hizmetleriyle etkileşim kurmak için bunların nasıl kullanılacağını ve yapılandırılacağını ve farklı bulut platformları ve hizmetlerindeki kaynakları yönetmek için birden çok sağlayıcıyı nasıl kullanacağımızı anlaşılması kolay örneklerle tartıştık.