AWS CloudFormation şablonunun anatomisi

Örnek bir SaaS çözümü olarak bir destek bilet servisi kullanarak, fikrinizi bir iş planından bulut üzerinden müşterilerinizin kullanabileceği bir ürüne taşımak için Amazon Web Hizmetleri tarafından sunulan araçlardan nasıl herkesin yararlanabileceğini gösterdim. Şimdiye kadar planlama ve tasarım konuları üzerinde çalıştık, bir IaaS katmanı oluşturduk ve yüksek düzeyde kullanılabilir bir küme oluşturmak için AWS CloudFormation şablonlarını kullandık. Şimdi uygulamayı cilalamaya başlamaya hazırız.

Bir sonraki adım, destek bileti servisimin oluşturulmasını otomatikleştirmek için AWS CloudFormation şablonunu değiştirmek. Yüksek kullanılabilirlikli bir kümem, Drupal, bir RDS veritabanı, güvenlik duvarı kuralları, bir yük dengeleyici vb. Bir web kullanıcı arayüzü ve birkaç fare tıklamasıyla elde etmek harika bir şey.

Ama yeterince fantastik değil. CloudFormation şablonunu, ihtiyaçlarıma yakınlaştırmak için düzenlemeliyim, ancak önce içinde ne olduğunu ve gerekli değişiklikleri nerede yapmam gerektiğini bilmeliyim. Aşağıda size tüm parçalara genel bir bakış sunacağım.

Hizmetimi parlatmak geliştirici bölgesine girmek anlamına geliyor

AWS CloudFormation Drupal şablonu tarafından sağlanan hizmet istediğim gibi değil. Gerekli değişiklikleri yapmak için bu şablonu burada değiştireceğim. Ne yazık ki bu, geliştirici bölgesine geçmek anlamına geliyor. Tüm yolculuğu yapmayacağım, çünkü geliştirici bölgesi ziyaret etmek hoş olmayan ıssız bir arazidir. Yolu aydınlatacak kadar koruyacağım.

Drupal modüllerinin bir kombinasyonu

SaaS şirketleri hizmetlerini oluşturuyor. Beyaz etiketli ürünler almıyorlar ve rozetlerini takmıyorlar. Destek bilet servisimi Drupal Core CMS araç setini, bir dizi isteğe bağlı ekstraları ve çok fazla geliştirme süresini kullanarak oluşturacağım.

Bununla birlikte, geliştirme süresini kısaltmak için bir araya getirebileceğim Drupal için birçok isteğe bağlı modül var.

  • Destek bileti servisi, Destek modülünden gelir. Destek modülü hizmetimin işletme sonunu sağlar.
  • Para kazanma mekanizması bir dizi Ticaret modülünden gelir. Bunlar e-ticaret tarafını idare eder. Drupal Commerce, yaklaşık yirmi modül ve daha birçok destek modülü ile büyük bir koleksiyon. Bunlar müşteriler, vergiler, satır öğeleri, ödeme, ürünler vb.
  • Bu premium içeriğin kontrolü, Content Access modülü ve Roller erişim kontrol mekanizması gibi diğer şeyler tarafından yönetilir. Bu modüller, ticareti birleştirir ve bilet parçalarını bir araya getirir.

AWS CloudFormation şablonunda neler var

Bir AWS CloudFormation şablon dosyasını ihtiyaçlarıma göre düzenleyebilirim.

Büyütmek için tıklayın.

İlk önce bir şablonun ne olduğunu anlamalıyım. İşte kısa bir genel bakış. Daha ayrıntılı bir açıklama için AWS CloudFormation aracılığıyla AWS kılavuzu Bootstrapping Uygulamaları'na bakın.

CloudFormation'ı oluşturan küçük otomatik gremlinler, talimatlarını biraz benzeyen bir yapılandırma dosyasından alır.

 { 
 "AWSTemplateFormatVersion": "sürüm tarihi", 
 "Description": "4K'ya kadar geçerli JSON dizeleri", 
 "Parametreler": { 
 anahtarlar ve değerler 
 }, 
 "Eşlemeler": { 
 anahtarlar ve değerler 
 }, 
 "Kaynaklar": { 
 anahtarlar ve değerler 
 }, 
 "Çıktılar" : { 
 anahtarlar ve değerler 
 } 
 } 

Kıvırcık parantez, tırnak işaretleri ve iki nokta üst üste bindirmesi ile bu metin JSON'dur (JavaScript Nesne Gösterimi). JSON, XML'in kelimesini istemeyen ancak YAML için yeterince havalı olmayan geliştiriciler arasında popülerdir.

Yukarıdaki örnekte yer alan anahtarlar ve değerler satırı, gerçek bir şablon dosyasında bunun gibi görünecektir.

 "S3Bucket": { 
 "Tür": "AWS :: S3 :: Kova", 
 "Özellikleri" : { 
 "AccessControl": "PublicRead", 
 "WebsiteConfiguration": { 
 "IndexDocument": "index.html", 
 "ErrorDocument": "error.html" 
 } 
 } 
 } 

Girintili olan her şey, iç içe geçmiş anahtar / değer çiftlerinin yüküdür. Bu karmaşık ve buzdağının sadece görünen kısmı. Şablon dosyaları nerd cenneti.

Başlat Konfigürasyonu

Şablon dosyasının Kaynaklar bölümü, LaunchConfig adlı bir alt bölüm içerir. Bu bölüm bu satırla başlar.

"LaunchConfig": {

LaunchConfig bölümü 200 satır akıllıdır. Yüklemek, indirmek ve oluşturmak için bir dosya listesi vardır. Ayrıca içine gömülü bir bash betiği de var.

Kümelenmiş Drupal şablonunu kullanıyorum. Burada görebilirsiniz: Multi-AZ Amazon RDS veritabanı örneği bulunan ve dosya içeriğini depolamak için S3 kullanan Yüksek Kullanılabilirlikli Web Sunucusu.

Daha sonra, bu şablonun LaunchConfig bölümünde birkaç değişiklik yapacağım ve bir küme oluşturacağım.

Gömülü bash betiği

LaunchConfig bölümündeki bash betiği dosyanın altına doğru bulunur. Senaryo yaklaşık 60 satır uzunluğunda ve buna benziyor.

"UserData" : { "Fn::Base64" : { "Fn::Join" : "",  
  "#!/bin/bash -v\n",  
  "yum update -y aws-cfn-bootstrap\n",  
 ... 
 ... 
 ... 
  "# All is well so signal success\n",  
  "/opt/aws/bin/cfn-signal -e 0 -r \"Drupal setup complete\" '", { "Ref" : "WaitHandle" }, "'\n" 
 
  }} 

Bu rahatsız edici görünümlü şablon kodunun işi, tüm bu satırları bir bash betiğine koymaktır.

Bir bash betiği, sisteme her türlü şeyi yapan bir komut topluluğudur. Sistem yöneticileri onlarca yıldır komut dosyaları yazıyor. Bu akıllı bash betiği Apache web sunucusu yapılandırmasını düzenler, tüm yeni EC2 makinelerini listeler, temel bir Drupal sitesi kurar, vb.

Bu komut dosyası her yeni EC2 VM'sine kopyalanır. / Var / lib / cloud / data / scripts / dizininde bulunur. Ürettiği tüm iletiler /var/log/cloud-init.log dizininde bulunur .

EC2 makinelerinin dosya ve dizinleri

Bir uygulamayı birçok sunucuya dağıtmak zor. Neyin kopyalandığını, nelerin paylaşıldığını ve hepsinin nereye gitmesi gerektiğini bilmelisiniz.

Makinelerde birçok dosya çoğaltılır. Tüm genel kodlar (Drupal Core) her yeni sunucudaki web sitesi dizinine kopyalanır ( / var / www / html içinde ).

S3 kovası

Bazı dosyalar makineler arasında paylaşılıyor. Dosya sisteminin bir biti aslında bir AWS S3 (Basit Depolama Hizmeti) kovasıdır. Bu paylaşılan alan üç sunucuya da bağlanmıştır ( / var / www / html / sites / default / files ). Bazı Drupal dosyaları bu S3 grubunda yer alacaktır.

S3 kovaları genellikle yürütülebilir dosyalar, günlükler ve diğer zor dosyalar yerine web sitesi statik içeriği için kullanılır. Bu S3 grubu müşteri dosya yüklemelerini tutacaktır. Bir müşteri bir kez dosya yükler, ardından tüm web sunucuları bu dosyayla ilgili isteklere yanıt verebilir.

Şablon yedekleme

Yeni şablonunuzu web'de saklama zahmetine girmeyin. CloudFormation'a şablon dosyanızı almak için bir URL verebilirsiniz, ancak yalnızca AWS S3 (Basit Depolama Hizmeti) ile çalışır. AWS şablonlarını burada saklar. Yüklediğiniz şablon burada depolanır. Github veya Gitorious gibi bir kod deposu kullanan geliştiriciler şanssız.

© Copyright 2020 | mobilegn.com