Azure'da Terraform projeleri için tümleştirme testleri uygulama
Tümleştirme testleri, yeni eklenen bir kod değişikliğinin mevcut kodu bozma olmadığını doğrular. Bu DevOps sürekli tümleştirme (CI), kod tabanı her değiştirilemesinde sistemin tamamını derleme işlemini ifade eder. Örneğin, bir PR'yi Git deposuzda birleştirmek isteyen biri. Aşağıdaki liste tümleştirme testlerinin yaygın örneklerini içerir:
- Lint ve biçim gibi statik kod analizi araçları.
- Terraform validate'i çalıştırarak yapılandırma dosyasının söz dizimlerini doğrulayın.
- Yapılandırmanın beklendiği gibi çalışa olduğundan emin olmak için terraform planını çalıştırın.
Bu makalede şunları öğreneceksiniz:
- Terraform projeleri için tümleştirme testinin temellerini öğrenin.
- Sürekli Azure DevOps işlem hattı yapılandırmak için Azure DevOps'yi kullanın.
- Terraform kodu üzerinde statik kod analizi çalıştırma.
- Yerel
terraform validatemakinede Terraform yapılandırma dosyalarını doğrulamak için çalıştırın.terraform planTerraform yapılandırma dosyalarının uzak hizmetler açısından doğrulanması için çalıştırın.- Azure Pipelines kullanarak sürekli tümleştirmeyi otomatikleştirme.
1. Ortamınızı yapılandırma
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Terraform'yi yapılandırma: Henüz bunu yapmamışsanız, aşağıdaki seçeneklerden birini kullanarak Terraform'ı yapılandırabilirsiniz:
Azure DevOps ve proje oluşturma:Yoksa, bir Azure DevOps oluşturun.
Terraform Derlemesi Yayın Görevleri uzantısı:Terraform derleme/yayın görevleri uzantısını Azure DevOps yükleyin.
Azure Azure DevOps erişim izni verme: AboneliklerinAzure aboneliklerinize bağlanmasına izin vermek Azure Pipelines adlı bir Azure hizmet bağlantısı oluşturun
Örnek kod ve kaynaklar: DownGit aracını kullanarak integration-testing GitHub'den indirin ve örnek kodu içeren yeni bir dizinde sıkıştırmayı açın. Bu 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 dizinde yer alan komut satırına göre lanır. Bu komutlar ana hedefi söz dizimlerini doğrulamadır.
Örnek dizinde dizinine
srcgidin.Çalışma dizinini başlatmak için terraform init'i çalıştırın.
terraform initYapılandırma dosyalarının söz dizimlerini doğrulamak için terraform validate'i çalıştırın.
terraform validateÖnemli noktalar:
- Terraform yapılandırmasının geçerli olduğunu belirten bir ileti görüyorsunuz.
main.tfdosyasını düzenleyin.5. satırda söz dizimi geçersiz kılınan bir yazım hatası ekler. Örneğin,
var.locationyerinevar.loactionDosyayı kaydedin.
Doğrulamayı yeniden çalıştırın.
terraform validateÖnemli noktalar:
- Hatada kod satırına ve hatanın açıklamasına işaret eden bir hata iletisi görüyorsunuz.
Gördüğünüz gibi Terraform, yapılandırma kodunun söz dizimsinde bir sorun algıladı. Bu sorun yapılandırmanın dağıtılmasını önler.
Terraform dosyalarınızı sürüm denetimi terraform validate sisteminize itmeden önce her zaman çalıştırmak iyi bir uygulamadır. Ayrıca, bu doğrulama düzeyi sürekli tümleştirme işlem hattınız kapsamında yer alır. Bu makalenin devamlarında, bir Azure işlem hattını otomatik olarak doğrulamak üzere yapılandırmayı keşfedeceğiz.
3. Terraform yapılandırmasını doğrulama
Önceki bölümde Terraform yapılandırmasını doğrulamayı görmüştük. Bu test düzeyi söz dizimlerinin belirli bir düzeyidir. Bu test, Azure'da dağıtılacak olan konuları dikkate almadı.
Terraform, bildirime açık bir dildir ve sonuç olarak istediğiniz şeyi bildiren bir dildir. Örneğin, bir kaynak grubunda 10 sanal makine olduğunu diyelim. Ardından üç sanal makineyi tanımlayan bir Terraform dosyası oluşturabilirsiniz. Bu planı uygulamak toplam s sayımı 13'e artırmaz. Bunun yerine Terraform, üç sanal makineyle bitsin diye yedi sanal makineyi siler. çalıştırma, terraform plan sürprizlerden kaçınmak için yürütme planı uygulamanın olası sonuçlarını onaylamanızı sağlar.
Terraform yürütme planını oluşturmak için terraform planını çalıştırın. Bu komut, yapılandırmanın hangi kısmının dağıtılmış olduğunu kontrol etmek 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 herhangi bir şey dağıtmaz. Planı uygulasanız ne olacağını size söylüyor.
Makaleyi takip ediyorsanız ve önceki bölümdeki adımları yaptıysanız komutunu terraform plan çalıştırın:
terraform plan
çalıştır terraform plan edildikten sonra Terraform, yürütme planını uygulamanın olası sonucunu görüntüler. Çıkış, eklenecek, değiştirecek ve yok edilecek Azure kaynaklarını gösterir.
Varsayılan olarak Terraform, durumu Terraform dosyasıyla aynı yerel dizinde depolar. Bu düzen tek kullanıcılı senaryolarda iyi çalışır. Ancak, aynı Azure kaynakları üzerinde birden çok kişi çalışsa yerel durum dosyaları eşitnin dışında olabilir. Terraform, bu sorunu gidermek için uzak bir veri deposuna durum dosyaları yazmayı destekler (Azure Depolama). Bu senaryoda, yerel bir makinede çalıştırmak ve terraform plan uzak bir makineyi hedeflemek sorunlu olabilir. Sonuç olarak, bu doğrulama adımını sürekli tümleştirme işlem hattınız kapsamında otomatikleştirmek mantıklı olabilir.
4. Statik kod analizini çalıştırma
Statik kod analizi, terraform yapılandırma kodu üzerinde yürütülmeden doğrudan 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 için yürütme planı veya dağıtım oluşturulmasına gerek yoktur. Sonuç olarak, diğer testlerden daha hızlı çalışırlar ve genellikle sürekli tümleştirme sürecinde ilk olarak çalışırlar.
5. Azure Pipeline kullanarak tümleştirme testlerini otomatikleştirme
Sürekli tümleştirme, bir değişiklik olduğunda sistemin tamamını test etmektir. Bu bölümde, sürekli tümleştirmeyi uygulamak için kullanılan bir Azure İşlem Hattı yapılandırmasını görüyorsunuz.
İstediğiniz düzenleyiciyi kullanarak terraform örnek projesinin yerel kopyasına göz atarak GitHub.
samples/integration-testing/src/azure-pipeline.yamldosyasını açın.Çeşitli yükleme ve doğrulama yordamlarını çalıştırmak için kullanılan standart bir adım kümesi gördüğünüz adımlar bölümüne inin.
1. Adım: Checkov Static Code Analysis. Bu adımda, daha
Checkovönce bahsedilen proje, örnek Terraform yapılandırması üzerinde statik bir kod analizi çalıştırır.- bash: $(terraformWorkingDirectory)/checkov.sh $(terraformWorkingDirectory) displayName: Checkov Static Code AnalysisÖnemli noktalar:
- Bu betik, Checkov'u Docker kapsayıcısı içine monte edilmiş Terraform çalışma alanında çalıştırmadan sorumludur. Microsoft tarafından yönetilen aracılar Docker etkindir. Docker kapsayıcısı içinde araç çalıştırma daha kolaydır ve Azure Pipeline aracısını Checkov'u yükleme ihtiyacı ortadan kaldırır.
$(terraformWorkingDirectory)değişkeni dosyasındaazure-pipeline.yamltanımlanır.
2. Adım: Terraform'iAzure Pipelines yükleyin. Daha önce yüklemiş olduğu Terraform Derleme Yayın Görevi uzantısında, Azure Pipelines çalıştıran aracıya Terraform yüklemek için bir komutu vardır. Bu adımda bu görev yapılıyor.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-installer.TerraformInstaller@0 displayName: 'Install Terraform' inputs: terraformVersion: $(terraformVersion)Önemli noktalar:
- Yüklemesi yapılan Terraform sürümü, adlı ve dosyasında tanımlanan bir Azure Pipeline
terraformVersiondeğişkeni aracılığıylaazure-pipeline.yamlbelirtilir.
- Yüklemesi yapılan Terraform sürümü, adlı ve dosyasında tanımlanan bir Azure Pipeline
Okuyan satırı gözden geçirin, 3. Adım: çalışma alanını başlatmak Için Teroyform init çalıştırın. Artık bu Termform aracı üzerinde yüklü olduğuna göre Terrayform 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)Anahtar noktaları:
commandGiriş, hangi Teroyform komutunun çalıştırılacağını belirtir.workingDirectoryGiriş, Terrayform dizininin yolunu gösterir.$(terraformWorkingDirectory)Değişkeniazure-pipeline.yamldosyasında tanımlanmıştır.
Okunan satırı gözden geçirin, 4. Adım: HCL sözdizimini doğrulamak Için Terrayform doğrulaması çalıştırın. Proje dizini başlatıldıktan sonra,
terraform validatesunucuda yapılandırmayı doğrulamak için ç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)Okunan 5. Adım: HCL söz dizimini doğrulamak Için Terrayform planını çalıştırma. Daha önce açıklandığı gibi, yürütme planı oluşturma işlemi, Terrayform yapılandırmasının dağıtımdan önce geçerli olup olmadığını doğrulamak için yapılır.
- 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)Anahtar noktaları:
environmentServiceNameGiriş,environmentServiceNamebölümünde oluşturulan Azure hizmet bağlantısının adını ifade eder. Bağlantı, Terrayform 'un Azure aboneliğinize erişmesine izin verir.commandOptionsGiriş, bağımsız değişkenleri Terrayform komutuna geçirmek için kullanılır. Bu durumda, bir konum belirtilir.$(azureLocation)Değişken daha önce YAML dosyasında tanımlanmıştır.
İşlem hattını Azure DevOps içine aktarın
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ğinde, GitHub (yaml)öğesini seçin.

bu noktada, kuruluşunuza erişmek için Azure DevOps yetkilendirmeniz gerekebilir. bu konu hakkında daha fazla bilgi için bkz. GitHub depoları oluşturma.
depolar listesinde, GitHub kuruluşunuzda oluşturduğunuz deponun çatalını seçin.
İşlem hattınızı yapılandırın adımında, var olan BIR YAML ardışık düzeninde başlatmayı seçin.

Mevcut YAML ardışık düzenini seç sayfası görüntülendiğinde, dalı belirtin ve YAML işlem hattının yolunu girin:
samples/integration-testing/src/azure-pipeline.yaml.
GitHub Azure YAML ardışık düzenini yüklemek için devam ' ı seçin.
İşlem hattınızı gözden geçirin YAML sayfasında, işlem hattını ilk kez oluşturmak ve el ile tetiklemek için Çalıştır ' ı seçin.

Sonuçları doğrulama
ardışık düzeni Azure DevOps kullanıcı arabiriminden el ile çalıştırabilirsiniz. Ancak, makalenin noktası otomatik sürekli tümleştirmeyi göstermek için kullanılır. Yürütülen deponuzdaki klasöre bir değişiklik gerçekleştirerek işlemi test samples/integration-testing/src edin. Bu değişiklik, kodu dağıttığınız dalda otomatik olarak yeni bir işlem hattı tetikler.

bu adımı tamamladıktan sonra, her şeyin doğru şekilde çalıştığından emin olmak için Azure DevOps ayrıntılara erişin.

Azure 'da Terrampaform sorunlarını giderme
Azure 'da Terrampaform kullanırken karşılaşılan yaygın sorunları giderme