Azure’da Sanal Makinelerle Altyapı Otomasyon Araçlarını Kullanma
Azure sanal makinelerini (VM’ler) tutarlı bir şekilde oluşturmak ve yönetmek için, genellikle bir tür otomasyon kullanılır. Azure altyapı dağıtımının ve yönetim yaşam döngüsünün tamamını otomatikleştirmenizi sağlayan birçok araç ve çözüm vardır. Bu makalede, Azure’da kullanabileceğiniz bazı altyapı otomasyon araçlarını tanıtmaya çalışacağım. Bu araçlar genellikle aşağıdaki yaklaşımlardan birine uyar:
- VM’lerin yapılandırmasını otomatikleştirme
- Altyapı yönetimini otomatikleştirme
- Uygulama dağıtımını ve dağıtımını otomatikleştirme
Ansible
Ansible, yapılandırma yönetimi, VM oluşturma veya uygulama dağıtımı için bir otomasyon motorudur. Ansible, hedef makinelerin kimliğini doğrulamak ve yönetmek için genellikle SSH anahtarları olan aracısız bir model kullanır. Yapılandırma görevleri, belirli görevleri yerine getirmek için bir dizi Ansible modülü ile birlikte playbook’larda tanımlanır.
Chef
Chef, altyapınızın nasıl yapılandırıldığını, dağıtıldığını ve yönetildiğini tanımlamaya yardımcı olan bir otomasyon platformudur. Ek bileşenler, altyapıdan ziyade uygulama yaşam döngüsü otomasyonu için Chef Habitat ve güvenlik ve politika gereksinimlerine uyumu otomatikleştirmeye yardımcı olan Chef InSpec’i içermektedir. Chef İstemciler, yapılandırmaları depolayan ve yöneten bir veya daha fazla merkezi Chef Sunucusu ile hedef makinelere kurulur.
Puppet
Puppet, uygulama teslimi ve dağıtım işlemini gerçekleştiren, kurumsal kullanıma hazır bir otomasyon platformudur. Aracılar, Puppet Yöneticisi’nin Azure altyapısının ve VM’lerin istenen yapılandırmasını tanımlayan manifestler çalıştırmasına izin vermek için hedef makinelere yüklenir. Puppet, geliştirilmiş devops iş akışı için Jenkins ve GitHub gibi diğer çözümlerle entegre olabilir.
Cloud-init
Cloud-init, bir Linux VM’sini ilk kez önyüklerken özelleştirmek için yaygın olarak kullanılan bir yaklaşımdır. Cloud-init’i paketleri yüklemek ve dosya yazmak ya da kullanıcıları ve güvenliği yapılandırmak için kullanabilirsiniz. Cloud-init ilk önyükleme işlemi sırasında çağrıldığından, yapılandırmanızı uygulamak için ek adım veya gerekli aracı yoktur.
PowerShell DSC
PowerShell İstenen Durum Yapılandırması (DSC), hedef makinelerin yapılandırmasını tanımlayan bir yönetim platformudur. DSC, Linux’ta Açık Yönetim Altyapısı (OMI) sunucusu üzerinden de kullanılabilir.
DSC yapılandırmaları, bir makineye neyin yükleneceğini ve ana bilgisayarın nasıl yapılandırılacağını tanımlar. Aktarılan yapılandırmalara göre istenen eylemleri işleyen her hedef düğümde bir Yerel Yapılandırma Yöneticisi (LCM) motoru çalışır. Pull sunucusu, DSC yapılandırmalarını ve ilişkili kaynakları depolamak için merkezi bir ana bilgisayarda çalışan bir web hizmetidir. Pull sunucusu, gerekli yapılandırmaları sağlamak ve uyumluluk hakkında rapor vermek için her hedef ana bilgisayardaki LCM motoruyla iletişim kurar.
Azure Custom Script Extension
Linux veya Windows için Azure Özel Komut Dosyası Uzantısı, Azure VM’lerindeki komut dosyalarını indirir ve yürütür. Bir VM oluştururken veya VM kullanıldıktan sonra herhangi bir zamanda uzantıyı kullanabilirsiniz.
Komut dosyaları Azure depolama alanından veya GitHub deposu gibi herhangi bir genel konumdan indirilebilir. Özel Komut Dosyası Uzantısı ile, kaynak VM’de çalışan herhangi bir dilde komut dosyaları yazabilirsiniz. Bu komut dosyaları, uygulamaları yüklemek veya VM’i istendiği gibi yapılandırmak için kullanılabilir. Kimlik bilgilerini korumak için, parolalar gibi hassas bilgiler korumalı bir yapılandırmada saklanabilir. Bu kimlik bilgileri yalnızca VM içinde çözülür.
Packer
Azure’da özel bir VM görüntüsü oluşturduğunuzda Packer oluşturma işlemini otomatikleştirir. İşletim Sistemini tanımlamak ve VM’i özel ihtiyaçlarınıza göre özelleştiren yapılandırma sonrası komut dosyalarını çalıştırmak için Packer’ı kullanırsınız. Yapılandırıldıktan sonra VM, Yönetilen Disk görüntüsü olarak yakalanır. Packer, kaynak VM, ağ ve depolama kaynaklarını oluşturma, yapılandırma komut dosyalarını çalıştırma ve ardından VM görüntüsünü oluşturma işlemini otomatikleştirir.
Terraform
Terraform, tek bir şablon biçimi dili olan HashiCorp Yapılandırma Dili (HCL) ile tüm Azure altyapısını tanımlamanıza ve oluşturmanıza olanak tanıyan bir otomasyon aracıdır. Terraform ile, belirli bir uygulama çözümü için ağ, depolama ve VM kaynakları oluşturma işlemini otomatikleştiren şablonlar tanımlarsınız. Azure Kaynak Yöneticisi şablonuna dönüştürmeye gerek kalmadan tutarlılık sağlamak ve altyapı dağıtımını basitleştirmek için mevcut Terraform şablonlarınızı Azure ile diğer platformlar için kullanabilirsiniz.
Azure Automation
Azure Automation, hedeflediğiniz VM’lerde bir dizi görevi işlemek için çalışma kitaplarını kullanır. Azure Otomasyonu, bir altyapı oluşturmak yerine mevcut VM’leri yönetmek için kullanılır. Azure Automation, hem Linux hem de Windows VM’lerin yanı sıra şirket içi sanal veya fiziksel makinelerde hibrit bir çalışma kitabı çalışanıyla çalışabilir. Çalışma kitapları GitHub gibi bir kaynak denetim deposunda saklanabilir. Bu çalışma kitapları daha sonra el ile veya belirli bir zamanlamaya göre çalıştırılabilir.
Azure Automation ayrıca belirli bir VM kümesinin nasıl yapılandırılması gerektiğine ilişkin tanımlar oluşturmanıza olanak tanıyan bir İstenen Durum Yapılandırması (DSC) hizmeti de sağlar. DSC daha sonra gerekli yapılandırmanın uygulanmasını ve VM’nin tutarlı kalmasını sağlar. Azure Automation DSC, hem Windows hem de Linux makinelerde çalışır.
Azure DevOps Services
Azure DevOps Hizmetleri, kodu paylaşmanıza ve izlemenize, otomatik derlemeler kullanmanıza ve eksiksiz bir sürekli entegrasyon ve geliştirme (CI / CD) pipeline oluşturmanıza yardımcı olan bir araç paketidir. Azure DevOps Hizmetleri, kullanımı basitleştirmek için Visual Studio ve diğer editörlerle entegre olur. Azure DevOps Hizmetleri ayrıca Azure VM’leri oluşturup yapılandırabilir ve bunlara kod dağıtabilir.
Jenkins
Jenkins, uygulamaları dağıtmaya ve test etmeye ve kod teslimi için otomatik pipeline oluşturmaya yardımcı olan sürekli bir entegrasyon sunucusudur. Çekirdek Jenkins platformunu genişletmek için yüzlerce eklenti vardır ve ayrıca webhooks aracılığıyla diğer birçok ürün ve çözümle entegre edebilirsiniz. Jenkins’i bir Azure VM’sine manuel olarak yükleyebilir, Jenkins’i bir Docker container’dan çalıştırabilir veya önceden oluşturulmuş bir Azure Marketi imajı kullanabilirsiniz.