Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Terraform , bulut altyapısının tanımlanmasını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak,
Tümleştirme testleri, yeni sunulan bir kod değişikliğinin var olan kodu bozmadığını doğrular. DevOps'ta sürekli tümleştirme (CI), kod tabanı her değiştiğinde, örneğin biri bir çekme isteğini bir Git deposuna birleştirmek istediğinde, sistemin tamamını oluşturan bir süreçtir. Aşağıdaki listede tümleştirme testlerinin yaygın örnekleri yer alır:
- Lint ve biçim gibi statik kod çözümleme araçları.
- Yapılandırma dosyasının söz dizimini doğrulamak için terraform validate komutunu çalıştırın.
- Yapılandırmanın beklendiği gibi çalıştığından emin olmak için terraform planını çalıştırın.
Bu makalede şunların nasıl yapılacağını öğreneceksiniz:
- Terraform projeleri için tümleştirme testinin temellerini öğrenin.
- Sürekli tümleştirme işlem hattı yapılandırmak için Azure DevOps kullanın.
- Terraform kodunda statik kod analizini çalıştırın.
- Yerel makinede Terraform yapılandırma dosyalarını doğrulamak için
terraform validateçalıştırın. - Terraform yapılandırma dosyalarını uzak hizmetler açısından doğrulamak için
terraform plançalıştırın. - Sürekli tümleştirmeyi otomatikleştirmek için Azure Pipeline kullanın.
1. Ortamınızı yapılandırma
- Azure aboneliği
: Azure aboneliğiniz yoksa başlamadan önce ücretsiz hesap oluşturun.
Terraform'ı yapılandırma: Henüz yapmadıysanız, aşağıdaki seçeneklerden birini kullanarak Terraform'ı yapılandırın:
- Bash ile Azure Cloud Shell'de Terraform'ı yapılandırma
- Azure Cloud Shell'de Terraform'ı PowerShell ile yapılandırma
- Bash ile Windows'ta Terraform'ı yapılandırma
- Windows'ta Terraform'ı PowerShell ile yapılandırma
- Bash ile Azure Cloud Shell'de Terraform'ı yapılandırma
Azure DevOps organizasyonu ve proje
: Henüz yoksa, bir Azure DevOps organizasyonu oluşturun . Terraform Derleme & Yayın Görevleri uzantısını
: Terraform derleme/yayın görevleri uzantısını Azure DevOps kuruluşunuza yükleyin.Azure Aboneliğinize Azure DevOps erişimi verme: Azure Pipelines'ın Azure aboneliklerinize bağlanmasına izin vermek için adlı
terraform-basic-testing-azure-connectionbir Azure hizmet bağlantısı oluşturunÖrnek kod ve kaynaklar:GitHub'dan tümleştirme testi projesini indirin. Örneği indirdiğiniz dizin,
örnek dizini olarak adlandırılır.
2. Yerel Terraform yapılandırmasını doğrulama
terraform validate komutu, Terraform dosyalarınızı içeren dizindeki komut satırından çalıştırılır. Bu komutların ana hedefi söz dizimini doğrulamaktır.
Örnek dizinde
srcdizinine gidin.Çalışma dizinini başlatmak için terraform init
çalıştırın. terraform initYapılandırma dosyalarının söz dizimini doğrulamak için terraform validate komutunu çalıştırın.
terraform validateÖnemli noktalar:
- Terraform yapılandırmasının geçerli olduğunu belirten bir ileti görürsünüz.
main.tfdosyasını düzenleyin.5. satıra, söz dizimini geçersiz kılan bir yazım hatası ekleyin. Örneğin,
var.locationyerinevar.loactionyazınDosyayı kaydedin.
Doğrulamayı yeniden çalıştırın.
terraform validateÖnemli noktalar:
- Hatadaki kod satırını ve hatanın açıklamasını gösteren bir hata iletisi görürsünüz.
Gördüğünüz gibi Terraform, yapılandırma kodunun söz diziminde bir sorun algılamıştır. Bu sorun, yapılandırmanın dağıtılmasını engeller.
Terraform dosyalarınızı sürüm denetim sisteminize göndermeden önce her zaman terraform validate çalıştırmak iyi bir uygulamadır. Ayrıca, bu doğrulama düzeyi sürekli tümleştirme işlem hattınızın bir parçası olmalıdır. Bu makalenin ilerleyen bölümlerinde azure işlem hattınıotomatik olarak doğrulayacak şekilde yapılandırmayı
3. Terraform yapılandırmasını doğrulama
Önceki bölümde Terraform yapılandırmasını nasıl doğrulayabileceğinizi gördünüz. Bu test düzeyi söz dizimine özeldi. Bu test, Azure'da zaten dağıtılmış olabilecek şeyleri dikkate almamıştı.
Terraform bir bildirimsel dildir, yani istediğiniz son sonucu belirlersiniz. Örneğin, bir kaynak grubunda 10 sanal makineniz olduğunu varsayalım. Ardından üç sanal makine tanımlayan bir Terraform dosyası oluşturursunuz. Bu planın uygulanması toplam sayıyı 13'e artırmaz. Bunun yerine Terraform, üç sanal makine kalacak şekilde yedi sanal makineyi siler.
terraform plan çalıştırmak, sürprizleri önlemek için bir yürütme planı uygulamanın olası sonuçlarını onaylamanıza olanak tanır.
Terraform yürütme planını oluşturmak için terraform planını çalıştırırsınız. Bu komut, yapılandırmanın hangi bölümünün zaten dağıtılmış olduğunu denetlemek için hedef Azure aboneliğine bağlanır. Terraform daha sonra Terraform dosyasında belirtilen gereksinimleri karşılamak için gerekli değişiklikleri belirler. Bu aşamada Terraform hiçbir şey dağıtmıyor. Planı uygularsanız ne olacağını anlatıyor.
Makaleyi takip ediyorsanız ve önceki bölümdeki adımları gerçekleştirdiyseniz terraform plan komutunu çalıştırın:
terraform plan
terraform plançalıştırdıktan sonra Terraform, yürütme planını uygulamanın olası sonucunu görüntüler. Çıkış, eklenecek, değiştirilecek ve yok edilecek Azure kaynaklarını gösterir.
Varsayılan olarak, Terraform durumu Terraform dosyasıyla aynı yerel dizinde depolar. Bu desen tek kullanıcılı senaryolarda iyi çalışır. Ancak, aynı Azure kaynakları üzerinde birden çok kişi çalıştığında, yerel durum dosyaları eşitlenmemiş olabilir. Terraform, bu sorunu gidermek için uzak bir veri deposuna (Azure Depolama gibi) durum dosyaları yazmayı destekler. Bu senaryoda, yerel bir makinede terraform plan çalıştırmak ve uzak makineyi hedeflemek sorunlu olabilir. Sonuç olarak,sürekli tümleştirme işlem hattınızın bir parçası olarak bu doğrulama adımını otomatikleştirmek
4. Statik kod analizini çalıştırma
Statik kod analizi doğrudan Terraform yapılandırma kodu çalıştırılmadan yapılabilir. Bu analiz, güvenlik sorunları ve uyumluluk tutarsızlığı gibi sorunları algılamak için yararlı olabilir.
Aşağıdaki araçlar Terraform dosyaları için statik analiz sağlar:
Statik analiz genellikle sürekli tümleştirme işlem hattının bir parçası olarak yürütülür. Bu testler bir yürütme planı veya dağıtım oluşturulmasını gerektirmez. Sonuç olarak, diğer testlerden daha hızlı çalışırlar ve genellikle sürekli tümleştirme işleminde ilk olarak çalıştırılırlar.
5. Azure Pipeline kullanarak tümleştirme testlerini otomatikleştirme
Sürekli tümleştirme, bir değişiklik yapıldığında sistemin tamamını test etmeyi içerir. Bu bölümde, sürekli tümleştirmeyi uygulamak için kullanılan bir Azure Pipeline yapılandırması görürsünüz.
İstediğiniz düzenleyiciyi kullanarak GitHub'da
Terraform örnek projesinin yerel kopyasına göz atın. samples/integration-testing/src/azure-pipeline.yamldosyasını açın.Adımlar bölümüne aşağı kaydırarak çeşitli yükleme ve doğrulama rutinlerini çalıştırmak için kullanılan standart bir adım kümesi bulabilirsiniz.
1. Adım: Checkov Statik Kod Analizi'ni çalıştırın yazan satırı gözden geçirin. Bu adımda, daha önce bahsedilen
Checkovprojesi örnek Terraform yapılandırmasında statik kod analizi çalıştırır.- bash: $(terraformWorkingDirectory)/checkov.sh $(terraformWorkingDirectory) displayName: Checkov Static Code AnalysisÖnemli noktalar:
- Bu betik, Docker kapsayıcısının içine bağlanmış Terraform çalışma alanında Checkov'un çalıştırılmasından sorumludur. Microsoft tarafından yönetilen aracılar Docker etkindir. Docker kapsayıcısı içinde araçları çalıştırmak daha kolaydır ve Checkov'u Azure Pipeline aracısına yükleme gereksinimini ortadan kaldırır.
-
$(terraformWorkingDirectory)değişkeniazure-pipeline.yamldosyasında tanımlanır.
2. Adım: Terraform'u Azure Pipelines aracısı üzerine yükleme yazan satırı gözden geçirin. Daha önce yüklediğiniz Terraform Derleme ve Yayın Görevi uzantısında , Azure Pipeline'ı çalıştıran aracıya Terraform'u yüklemek için bir komut vardır. Bu görev, bu adımda gerçekleştirilir.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-installer.TerraformInstaller@0 displayName: 'Install Terraform' inputs: terraformVersion: $(terraformVersion)Önemli noktalar:
- Yüklenecek Terraform sürümü,
terraformVersionadlı bir Azure Pipeline değişkeni aracılığıyla belirtilir veazure-pipeline.yamldosyasında tanımlanır.
- Yüklenecek Terraform sürümü,
Çalışma alanını başlatmak için 3. Adım: Terraform init'i çalıştırın yazan satırı gözden geçirin. Terraform aracıda yüklü olduğuna göre Terraform dizini başlatılabilir.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform init' inputs: command: init workingDirectory: $(terraformWorkingDirectory)Önemli noktalar:
-
commandgirişi, çalıştırılacak Terraform komutunu belirtir. -
workingDirectorygirişi Terraform dizininin yolunu gösterir. -
$(terraformWorkingDirectory)değişkeniazure-pipeline.yamldosyasında tanımlanır.
-
HCL söz dizimini doğrulamak için 4. Adım: Terraform validate komutunu çalıştırın yazan satırı gözden geçirin. Proje dizini başlatıldıktan sonra, sunucudaki yapılandırmayı doğrulamak için
terraform validateçalıştırılır.- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform validate' inputs: command: validate workingDirectory: $(terraformWorkingDirectory)HCL söz dizimini doğrulamak için 5. Adım: Terraform planını çalıştırın yazan satırı gözden geçirin. Daha önce açıklandığı gibi, Terraform yapılandırmasının dağıtımdan önce geçerli olup olmadığını doğrulamak için yürütme planı oluşturulur.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform plan' inputs: command: plan workingDirectory: $(terraformWorkingDirectory) environmentServiceName: $(serviceConnection) commandOptions: -var location=$(azureLocation)Önemli noktalar:
- Giriş,
environmentServiceNameOrtamınızı yapılandırma bölümünde oluşturulan Azure hizmet bağlantısının adını ifade eder. Bağlantı Terraform'un Azure aboneliğinize erişmesine olanak tanır. -
commandOptionsgirişi, Terraform komutuna argüman geçirmek amacıyla kullanılır. Bu durumda, bir konum belirtiliyor.$(azureLocation)değişkeni DAHA önce YAML dosyasında tanımlanır.
- Giriş,
İşlem hattını Azure DevOps'a aktarma
Azure DevOps projenizi açın ve Azure Pipelines bölümüne gidin.
İşlem Hattı Oluştur düğmesini seçin.
Kodunuz nerede? seçeneği için GitHub (YAML) seçeneğini belirleyin.
Bu noktada Azure DevOps'a kuruluşunuza erişim yetkisi vermek zorunda olabilirsiniz. Bu konu hakkında daha fazla bilgi için GitHub depoları oluşturma
makalesine bakın. Depo listesinde, GitHub kuruluşunuzda oluşturduğunuz depo fork'unu seçin.
İşlem hattınızı yapılandırın adımında, mevcut bir YAML işlem hattından başlamayı seçin.
Mevcut YAML işlem hattı
Var olan YAML işlem hattını seçin sayfası görüntülendiğinde dalını
masterbelirtin ve YAML işlem hattının yolunu girin:samples/integration-testing/src/azure-pipeline.yaml.
GitHub'dan Azure YAML işlem hattını yüklemek için Devam'ı seçin.
İşlem hattınızı gözden geçirin YAML sayfası görüntülendiğinde çalıştır'ı seçerek işlem hattını ilk kez oluşturup el ile tetikleyebilirsiniz.
Sonuçları doğrulama
İşlem hattını Azure DevOps kullanıcı arabiriminden el ile çalıştırabilirsiniz. Ancak makalenin amacı otomatik sürekli tümleştirmeyi göstermektir. Çatallanmış deponuzun samples/integration-testing/src klasörüne bir değişiklik uygulayarak işlemi test edin. Değişiklik, üzerinde kod gönderdiğiniz dalda otomatik olarak yeni bir işlem hattı tetikler.
GitHub'den çalışan
Bu adımı tamamladıktan sonra, her şeyin doğru çalıştığından emin olmak için Azure DevOps'taki ayrıntılara erişin.
Azure DevOps Yeşil İşlem Hattı
Azure'da Terraform sorunlarını giderme
Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme