Azure Resource Manager şablonlarının yazılması ve deploy edilmesi size esneklik ve otomatik bir ortam sunmasını sağlarken bazı durumlarda, Azure Resource Manager şablonları kısa sürede çok karmaşık hale gelebilir. Ayrıca, Azure Infrastructure ortamınız için Microsoft’un en iyi uygulamalarının ekibiniz tarafından yazılan her şablona yansıtılması sağlamak bazı durumlarda zor olabilir. Eğer Azure Resource Manager dağıtım modeline hakim değilseniz, Azure Resource Manager makale serimi okumanızı tavsiye ederim.
Bu makale serisinde, Azure Resource Manager şablonunu geliştirirken ve dağıtımını basitleştirmeye yardımcı olan açık kaynak kodlu Azure Building Blocks ele alacağız. Microsoft içerisinde bulunan dağıtım modelleri ve uygulamalar ekibi tarafından öngörülen en iyi uygulamaları yansıtan ( IaaS, PaaS ) – benzeri olan Azure Resource Manager şablonlarını içerir. Azure Resource Manager şablonlarını kullanarak ( Template Deployment – Github) kaynak dağıtımını destekler. Azure kaynaklarını yöneten bir kişi, Resource Manager Deployment API sayesinde JSON formatında bir model kullanır ve bunu Azure Resource Manager API üzerine gönderir. Örnek olarak ortamınıza deploy etmek istediğiniz kaynakları ; Virtual Machine, Virtual Network, Storage, Network Security Group olarak belirterek gerekli dağıtımı sağlayabilirsiniz. Yine talebinize göre dağıtımı yapılmak istenilen kaynağın özelliklerinin tamamı, dağıtım yapılacak zamanda parametrik hale getirilerek özelleştirilir. Aşağıda bulunan resim içerisinde Azure Resource Manager dağıtım modelini destekleyen bir JSON dosyası bulunmaktadır.
Azure Resource Manager şablonları çok güçlü, büyük ve karmaşık mimarileri dağıtmanıza izin verirken, Azure Resource Manager hakkında geniş bilgiye ihtiyaç duyarlar. Bu durum ise bazı zamanlarda geliştirdiğiniz şablonları koruma kısmında zorluk çekmenize sebebiyet verir. Çünkü herhangi bir değişiklik, ön görülemeyen sorunlara neden olabilir. Azure Resource Manager güçlü dememin altında yatan oldukça fazla sebep var. Örneğin, bir Virtual Machine dağıtmak istediğinizi varsayalım. Deploy olurken içerisine kurabileceğiniz role, registry, gibi ucu açık bir kapı olduğunu düşünün. “Ne gerek var ?” Dediğinizi duyar gibiyim. İşte burası biraz komplike bir süreç olduğu gözükebilir ama Virtual Machine Scale Sets kullanırken zaten bunları yapmak zorunda kalıyorsunuz. Azure Building Blocks temel amacı daha basit bir şekilde deployment süreçlerinizi yapabilmenizi sağlamaktadır.
Azure Building Blocks projesi, Azure kaynaklarının kullanımını basitleştirmek için tasarlanmış bir komut satırı aracı olup, Azure Resource Manager kapsamını kullanarak bu sorunu çözer. Building Blocks, Resource Manager Deployment modelindeki gibi JSON formatı ile yazılır ve Azure Resource Manager şablonlarından yararlanarak dağıtımı gerçekleştirir. Azure Resource Manager Template olduğu gibi parametre belirtebildiğiniz gibi, Building Blocks içinde bu şansa sahipsiniz. Building Blocks JSON şeması çok basit olacak şekilde tasarlanmıştır. Azure Building Blocks 2.0 versiyonu ile şimdilik anılmaktadır.
Building Blocks şu anda aşağıdaki kaynak türlerini desteklemektedir.
- Virtual Networks
- Virtual Machines (including load balancers)
- Virtual Machine Extensions
- Route Tables
- Network Security Groups
- Virtual Network Gateways
- Virtual Network Connection