Anatomi av en AWS CloudFormation-mal

Ved hjelp av en supporttjenestetjeneste som eksempel SaaS-løsning har jeg demonstrert hvordan noen kan dra nytte av verktøyene som tilbys av Amazon Web Services for å ta ideen din fra en forretningsplan til et produkt som er tilgjengelig for kundene dine via skyen. Så langt har vi jobbet gjennom planleggings- og designhensyn, bygget et IaaS-lag og brukt AWS CloudFormation-maler for å lage en høyt tilgjengelig klynge. Vi er nå klare til å begynne å polere applikasjonen.

Neste trinn er å endre AWS CloudFormation-malen for å automatisere byggingen av supporttjenestetjenesten min. Jeg har en klynge med høy tilgjengelighet, Drupal, en RDS-database, brannmurregler, en lastbalanser og så videre. Det er en fantastisk ting å oppnå med et nettbasert brukergrensesnitt og noen få museklikk.

Men det er ikke fantastisk nok. Jeg må redigere CloudFormation-malen for å bringe den nærmere behovene mine, men først må jeg vite hva som ligger i den og hvor jeg trenger å gjøre de nødvendige modifikasjonene. Nedenfor gir jeg deg en oversikt over alle delene.

Polering av tjenesten min betyr å gå inn i utviklerens territorium

Tjenesten som tilbys av AWS CloudFormation Drupal-malen er ikke det jeg vil ha. Jeg skal finjustere den malen her for å gjøre de nødvendige endringene. Dessverre betyr dette å krysse inn i utviklerens territorium. Jeg vil ikke ta hele reisen, fordi utviklerterritoriet er et øde ødemark det er ubehagelig å besøke. Jeg vil dekke nok til å tenne vei.

En kombinasjon av Drupal-moduler

SaaS-selskaper bygger sine tjenester. De tar ikke hvitmerker og stikker merket sitt på. Jeg vil bygge min supporttjeneste ved å bruke Drupal Core CMS verktøysett, en haug med ekstrautstyr og mye utviklingstid.

Imidlertid er det mange valgfrie moduler for Drupal som jeg kan strenge sammen for å kutte ned utviklingstiden.

  • Supportbilletjenesten kommer fra støttemodulen. Støttemodulen gir forretningsmessig slutt på tjenesten min.
  • Den inntektsgivende mekanismen kommer fra et sett med handelsmoduler . Disse håndterer e-handelssiden. Drupal Commerce er en stor samling, med nesten tjue moduler å installere og mange flere støttemoduler. Disse gir rammene for å håndtere kunder, skatt, ordrelinjer, betaling, produkter og så videre.
  • Kontrollen av dette førsteklasses innholdet administreres av Content Access- modulen og andre ting, for eksempel Rolle- tilgangskontrollmekanismen. Disse modulene fester handel og støtter billettdelene sammen.

Hva finnes i en AWS CloudFormation-mal

Jeg kan redigere en AWS CloudFormation-malfil som passer mine behov.

Klikk for å forstørre.

Først må jeg forstå hva en mal er. Her er en kort oversikt. For en mer detaljert beskrivelse, se AWS-guiden Bootstrapping-applikasjoner via AWS CloudFormation.

De små automatiske gremlinsene som bygger CloudFormation, tar instruksjonene fra en konfigurasjonsfil som ser litt slik ut.

 { 
 "AWSTemplateFormatVersion": "versjonsdato", 
 "Description": "Gyldige JSON strenger opp til 4K", 
 "Parametre": { 
 nøkler og verdier 
 } 
 "Kartlegginger": { 
 nøkler og verdier 
 } 
 "Ressurser": { 
 nøkler og verdier 
 } 
 "Utganger": { 
 nøkler og verdier 
 } 
 } 

Denne teksten, med sin liberale dryss av krøllete seler, sitater og kolon, er JSON (JavaScript Object Notation). JSON er populær blant utviklere som ikke vil ha XML-ordlighet, men ikke er kule nok for YAML.

Tastene og verdilinjen i eksempelet ovenfor vil se litt slik ut i en ekte malfil.

 "S3Bucket": { 
 "Type": "AWS :: S3 :: Bucket", 
 "Eiendommer" : { 
 "AccessControl": "PublicRead", 
 "Nettstedskonfigurasjon": { 
 "IndexDocument": "index.html", 
 "ErrorDocument": "error.html" 
 } 
 } 
 } 

Alt det innrykkede stoffet er en masse nestede nøkkel / verdipar. Det er komplisert, og det er bare toppen av isfjellet. Malfiler er nerd himmelen.

Lanseringskonfig

Ressursdelen i malfilen inneholder en underdel som heter LaunchConfig . Denne delen starter med denne linjen.

"LaunchConfig": {

LaunchConfig-delen er 200 linjer med kløkt. Den har en liste over filer du vil installere, laste ned og opprette. Det har også et helt bash-skript innebygd i det.

Jeg bruker den grupperte Drupal-malen. Du kan se det her: Svært tilgjengelig webserver med Multi-AZ Amazon RDS-database-forekomst og bruke S3 til lagring av filinnhold.

Senere skal jeg gjøre noen endringer i LaunchConfig- delen av denne malen og lage en klynge.

Det innebygde bash-skriptet

Basskriptet i LaunchConfig- delen er plassert mot bunnen av filen. Manuset er omtrent 60 linjer langt og ser slik ut.

"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" 
 
  }} 

Jobben med denne urovekkende malkoden er å sette alle disse linjene i et bash-skript.

Et bash-skript er en samling kommandoer som gjør alle slags ting for systemet. Systemadministratorer har skrevet skript i flere tiår. Dette smarte bash-skriptet redigerer Apache-webserverkonfigurasjonen, lister opp alle de nye EC2-maskinene, setter opp et grunnleggende Drupal-nettsted og så videre.

Dette skriptet blir kopiert til hver nye EC2 VM. Det havner i katalogen / var / lib / sky / data / scripts / . Alle meldingene den produserer havner i /var/log/cloud-init.log .

EC2-maskinens filer og kataloger

Det er vanskelig å distribuere en applikasjon på mange servere. Du må vite hva som er kopiert, hva som deles og hvor det hele skal gå.

Mange filer dupliseres på tvers av maskinene. All den generelle koden (Drupal Core) kopieres til nettstedskatalogen på hver nye server (den er i / var / www / html ).

S3-bøtta

Noen av filene deles mellom maskiner. En bit av filsystemet er faktisk en AWS S3 (Simple Storage Service) -bøtte. Dette delte området er montert på alle tre serverne (on / var / www / html / sites / default / files ). Noen Drupal-filer vil sitte i denne S3-bøtta.

S3-bøtter brukes vanligvis til statisk innhold på nettstedet, i stedet for kjørbare filer, logger og andre vanskelige filer. Denne S3-bøtten holder opplastinger av kundefiler. Én kunde laster opp en fil en gang, så kan alle webservere svare på forespørsler om denne filen.

Mal sikkerhetskopiering

Ikke bry deg om å lagre den nye malen din på nettet. Du kan gi CloudFormation en URL for å få malfilen din, men den fungerer bare med AWS S3 (Simple Storage Service). Det er der AWS lagrer maler. Det er der den opplastede malen blir lagret. Utviklere som bruker et kodelager som Github eller Gitorious er ute av hell.

© Copyright 2021 | pepebotifarra.com