Endre AWS CloudFormation-maler: Poler koden

Jeg har demonstrert hvordan jeg kan ta en SaaS-løsning fra forretningsplan til en live-applikasjon, ved å bruke eksemplet på en skinnende, ny problemerbillett-app. Dette er hva vi har dekket så langt:

  • Hvordan være en SaaS-leverandør på en sko med Amazon Web Services
  • Første trinn til SaaS med AWS CloudFormation-maler
  • Bruk AWS CloudFormation for å lage en høyt tilgjengelig klynge
  • Anatomi av en AWS CloudFormation-mal

Hentet opp fra forrige ukes anatomiundervisning, hvor jeg detaljerte de forskjellige delene av en AWS CloudFormation-mal, er jeg nå klar til å endre den slik at den passer til mine spesifikke behov - automatisere byggingen av supporttjenestetjenesten min.

Klikk for å forstørre.

SaaS byggearbeid har nå nådd det tungt tekniske stadiet. Jeg har skrevet den smeltende kompliserte prosedyren nedenfor (takk til Drupal utviklingsbyrå Microserve for å ha sjekket koden min).

Å eksperimentere med Amazon CloudFormation koster ekte penger. Følg bare disse instruksjonene hvis du er glad for å kaste bort litt penger. Jeg antar at du allerede har meldt deg på AWS.

Jeg beskriver ikke alt det SaaS-byggverket krever - det er ikke nødvendig å dra uskyldige mennesker gjennom hele utviklingsprosessen. Disse trinnene fester sammen noen få byggesteiner for å komme til en grunnleggende fungerende tilstand.

Få en kopi av Amazons CloudFusion-malfil

Jeg hugger og endrer Amazons mal for å få raske resultater, i stedet for å gjøre det ordentlig ved å skrive en mal fra bunnen av. Hvis du noen gang har lurt på hva en "skitten hack" er, er du i ferd med å lage en.

  1. Åpne URL-adressen http://aws.amazon.com/cloudformation/aws-cloudformation-templates/. Siden AWS CloudFormation-eksempelmaler - US East (Virginia) -regionen vises.
  2. Finn lenken som heter svært tilgjengelig webserver med Multi-AZ Amazon RDS-database-forekomst og bruk S3 til lagring av filinnhold. Amazon bruker ikke korte og smarte navn her.
  3. Last ned filen Drupal_Multi_AZ.template fra Amazons nettsted til arbeidsstasjonen din.
  4. Velg et navn på kopien din. Jeg ringte min aws-cfn-support-template.json . Nei, navnet mitt er ikke kort og kjipt heller.
  5. Hvis du bruker et kodelager som Github eller Gitorious, sjekk inn den nye versjonen din.

Du har nå din lokale kopi å redigere og en ekstern sikkerhetskopi (originalfilen på AWS).

Endre delen "Ressurser" i AWS CloudFormation Malene.

Det er her vi begynner å treffe koden med en mallet. Sjekk det siste innlegget mitt for hva en "Ressurser" -del betyr - som beskriver oppsettet til en malfil.

Disse redigeringene endrer konfigurasjonen og smyger inn noen få Drupal-utviklertriks - drush-kommandoer, moduler og en installasjonsprofil.

Er det altfor mye kode å kopiere? Finn hele malen på github.

Endre konfigurasjonen av ElasticLoadBalancer

De elastiske belastningsbalansørene er absolutt ikke fleksible når det gjelder rett og galt. De må få et enkelt OK svar (en HTTP 200). Drupal kan gi en rekke svar, ikke bare OK.

Sjekk en vanlig fil som README.txt i stedet for å spørre Drupal.

  1. Rediger kopien av malfilen. Finn disse linjene:

    "HealthCheck" : {

    "Target": "HTTP: 80 /",

    De er omtrent halvveis nede i filen.
  2. Endre mållinjen:

    "HealthCheck" : {

    "Target": "HTTP: 80 / README.txt",

Oppdater Drupal-kode og legg til moduler

Ressursdelen inneholder et innebygd bash-skript. Dette er beskrevet i det siste innlegget mitt også. Disse redigeringene endrer det skriptet.

Legg til noen ekstra moduler for supportbillettsystemet. Jeg vil at disse filene skal kopieres til hver server. Modulfiler havner i / var / www / html / sites / all / moduler . Moduler går ikke i S3-bøtta (S3-området er / var / www / html / sites / default / files ).

Denne delen inneholder kommandoer som brukes av Linux-administratorer, Drupal-administratorer og AWS-administratorer. Vet du hva rm- kommandoen er? Har du brukt drush ? Hva med cfn-signal ?

1. Finn slutten av bash-skriptet. Det ser slik ut:

 "rm /home/ec2-user/settings.php\n",  
 
 "# All is well so signal success\n",  
 "/opt/aws/bin/cfn-signal -e 0 -r \"Drupal setup complete\" '", { "Ref" : "WaitHandle" }, "'\n" 

Du kommer til å legge til kodelinjer der den tomme linjen er, under kommandoen rm og over kommentaren # .

2. Legg til disse linjene for å oppdatere applikasjonsfilene. Cloudformation installerer gamle versjoner av drupal og drush når EC2-maskinene er bygget. Hver nye EC2-virtuelle maskin vil få disse oppdaterte filene.

 "# Update the code on all machines. \n",  
 "cd ~ec2-user \n",  
 "~ec2-user/drush/drush self-update --choice=2 --yes \n",  
 "cd /var/www/html \n",  
 "~ec2-user/drush/drush pm-updatecode --yes \n",  

3. Oppdater databasen slik at den samsvarer med filene. Jeg vil bare at én maskin skal gjøre dette slik at koden bare sjekker for den første maskinen. Hvis alle maskiner prøver samtidig, vil databasen sannsynligvis ende opp.

 "# Update the database from the first machine only. \n",  
 "if  `hostname` = $first \n",  
 "then\n",  
 " ~ec2-user/drush/drush updatedb --yes \n",  
 "fi\n",  

4. Legg til modulfilene jeg trenger for arbeidet mitt.

 "# Add modules. Many more are automatically added to this list. \n",  
 "# Files are copied to all machines. \n",  
 "~ec2-user/drush/drush pm-download acl commerce content_access entity rules support --yes \n",  

5. Aktiver modulene ved å oppdatere databasen.

 "# Enable modules and rebuild the permissions table. The database holds this. \n",  
 "if  `hostname` = $first \n",  
 "then\n",  
 " ~ec2-user/drush/drush pm-enable commerce content_access support --yes \n",  
 " ~ec2-user/drush/drush php-eval 'node_access_rebuild();' \n",  
 "fi\n",  

6. Forsikre deg om at Drupal kan lese sine egne filer.

 "# Fix ownership and permissions. \n",  
 "chown -R root:apache /var/www/html \n",  
 "chmod 640 /var/www/html/sites/default/settings.php \n",  

7. Lagre arbeidet ditt.

Form din nye sky

Kjør trinnene for å kjøre opp AWS-eksemplet på en Drupal-klynge på nytt. Mine tidligere innlegg dekket fremgangsmåten du skal følge og verdiene du trenger.

Bygg din nye side.

    1. Finn din nye mal.
    2. Følg prosedyren for å starte en sky, men ikke bruk Amazons standardmal.
    3. Last opp den nye malen ved å bruke alternativet Last opp en malfil .
    4. Fyll ut skjemaene.
    5. Lag CloudFormation-stabelen. Da jeg kjørte dette tok det 20 minutter å fullføre.
    6. Oppdater hendelseslisten for å se fremgangen.

      Klikk for å forstørre.
      Sjekk det nye nettstedet ditt.
        1. Åpne nettadressen til det nye støttesiden din. Mine er http://supportti-elasticl-qbifcetbaa16-1886498031.eu-west-1.elb.amazonaws.com/admin/support. En påloggingsside vises.
        2. Logg deg på med det nye SiteAdmin og SitePassword. En støtteside vises.
          Rydde opp.

            Ødelegg den nye CloudFormation-stabelen din når du er ferdig.

              En forståelsestest

              Crikey, det er som å være tilbake på skolen.

              En ny Amazon VM er alltid litt utdatert. Oppdateringer og oppgraderinger er tilgjengelige for noen få av sine pakker. En ting denne malen ikke gjør er å oppdatere pakkene på hver virtuelle maskin.

              Hvor vil du legge en yum-oppdateringskommando ?

              © Copyright 2020 | mobilegn.com