Terraform için testler yazın
Terraform mimarinizi kod olarak tanımlamanıza ve yönetmenize olanak sağlan bir teknoloji. O konuda fazla detay vermeyeceğim. Şuradan okuyabilirisiniz: https://www.terraform.io/intro/index.html
Eğer orta veya büyük ölçekli bir mimariniz varsa terraform reponuz hızlı bir şekilde karmaşık hale gelebiliyor. Kontrolü ise yine çok zor oluyor.
Kontrolü biraz daha sağlamak için MIT lisansi ile acik kaynak yapilmis terraform-compliance uygulamasini kullanmaya karar verdik. Aslında epeydir aklımızda olan bir şeydi.
Ben şu şekilde mevcut terraform containerima ekledim.
FROM alpine:3.12 as buildRUN apk add libxml2-dev libxslt-dev python3-dev gcc build-base
RUN python3 -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
RUN pip install terraform-complianceFROM alpine:3.12 as releaseCOPY --from=build /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
İstersen sadece pip install terraform-compliance
şeklinde de ekleyebilirsin ama yukarıdaki gibi staged Dockerfile daha performanslı olur
Çünkü ben terraformu docker ile çalıştırıyorum. Bu şekilde olması bir çok CI/CD pipeline için daha uygun.
terraform-compliance icin Docker imaji da var. Detaylar surada: https://terraform-compliance.com/pages/installation/
Test yazarken çok keyif aldım çünkü http://radish-bdd.io/ ile yazım çok keyifli. Terraform-compliance radish-bdd kullaniyor.
Örnek bir test:
Şimdilik terraform-compliance’ı şunlar için kullanacağım ve kullanmayı düşünüyorum.
- Güvenlik doğrulamaları. belirli portlar açık olmamalı, public bucket olmamalı, encryption olmalı v.s.
- Mimarı standardlar: tag eklenmeli v.s.
- www.terraform-best-practices.com baz alarak olusturacagimiz style guideline dogrulamasi
Özellikle güvenlik doğrulamarı çok önemli. Mimarı değişmeden bu kontrolün yapılması çok geç olmadan müdaheleyi sağlar ve güvenliği ciddi şekilde arttırır.
Eğer kullanmaya başlamak veya daha fazla motive olmak istiyorsan terraform-compliance yaratıcısının blog yazısını okumanı tavsiye ederim.