Ændring af AWS CloudFormation-skabeloner: Polér din kode

Jeg har demonstreret, hvordan man tager en SaaS-løsning fra forretningsplan til en live-applikation ved hjælp af eksemplet på en skinnende, ny problembillet-app. Her er hvad vi har dækket indtil videre:

  • Sådan er du en SaaS-sælger på en shoestring med Amazon Web Services
  • Første trin til SaaS med AWS CloudFormation-skabeloner
  • Brug AWS CloudFormation til at oprette en meget tilgængelig klynge
  • Anatomi af en AWS CloudFormation-skabelon

Opfangning fra sidste uges anatomiundervisning, hvor jeg detaljerede de forskellige dele af en AWS CloudFormation-skabelon, er jeg nu klar til at ændre den, så den passer til mine specifikke krav - automatisering af opbygningen af ​​min supportbillet-service.

Klik for at forstørre.

SaaS-byggeriet er nu nået til det stærkt tekniske stadium. Jeg har skrevet den hovedsmeltende komplicerede procedure nedenfor (takket være Drupal-udviklingsbureau Microserve for at kontrollere min kode).

At eksperimentere med Amazon CloudFormation koster rigtige penge. Følg kun disse instruktioner, hvis du er glad for at spilde lidt penge. Jeg formoder, at du allerede har tilmeldt dig AWS.

Jeg beskriver ikke alt det nødvendige SaaS-bygningsarbejde - der er ingen grund til at trække uskyldige mennesker gennem hele udviklingsprocessen. Disse trin klæber sammen et par byggesten for at komme til en grundlæggende arbejdstilstand.

Hent en kopi af Amazons CloudFusion-skabelonfil

Jeg hugger og ændrer Amazons skabelon for at få hurtige resultater i stedet for at gøre det ordentligt ved at skrive en skabelon fra bunden. Hvis du nogensinde har spekuleret på, hvad en "beskidt hack" er, er du ved at lave en.

  1. Åbn URL-adressen http://aws.amazon.com/cloudformation/aws-cloudformation-templates/. Siden AWS CloudFormation-eksempelskabeloner - US East (Virginia) -regionen vises.
  2. Find linket kaldet Meget tilgængelig webserver med Multi-AZ Amazon RDS-database-forekomst og brug S3 til lagring af filindhold. Amazon bruger ikke korte og snappy navne her.
  3. Download filen Drupal_Multi_AZ.template fra Amazons websted til din arbejdsstation.
  4. Vælg et navn til din kopi. Jeg ringede til min aws-cfn-support-template.json . Nej, mit navn er heller ikke kort og snappet.
  5. Hvis du bruger et kodelager som Github eller Gitorious, skal du tjekke i din nye version.

Du har nu din lokale kopi til redigering og en ekstern sikkerhedskopi (den originale fil på AWS).

Skift afsnittet "Ressourcer" af AWS CloudFormation Templates.

Det er her, vi begynder at slå koden med en mallet. Tjek mit sidste indlæg for, hvad en "Ressourcer" -afdeling betyder - der beskriver layoutet af en skabelonfil.

Disse redigeringer ændrer konfigurationen og smyger sig ind i et par Drupal-udviklertricks - drush-kommandoer, moduler og en installationsprofil.

Er det alt for meget kode at kopiere? Find den fulde skabelon på github.

Skift ElasticLoadBalancers konfiguration

De elastiske belastningsbalancere er bestemt ikke fleksible, når det gælder rigtigt og forkert. De skal modtage et simpelt OK- svar (en HTTP 200). Drupal giver muligvis en række svar, ikke bare OK.

Kontroller en almindelig fil som README.txt i stedet for at spørge Drupal.

  1. Rediger din kopi af skabelonfilen. Find disse linjer:

    "HealthCheck" : {

    "Target": "HTTP: 80 /",

    De er omtrent halvvejs nede i filen.
  2. Skift mållinjen:

    "HealthCheck" : {

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

Opdater Drupal-kode, og tilføj moduler

Ressourcer-afsnittet indeholder et indbygget bash-script. Dette er også beskrevet i mit sidste indlæg. Disse redigeringer ændrer dette script.

Tilføj nogle ekstra moduler til supportbillet-systemet. Jeg vil have, at disse filer kopieres til hver server. Modulfiler ender i / var / www / html / sites / all / moduler . Moduler går ikke i S3-spanden (S3-området er / var / www / html / sites / default / files ).

Dette afsnit indeholder kommandoer, der bruges af Linux-administratorer, Drupal-administratorer og AWS-administratorer. Ved du hvad rm- kommandoen er? Har du brugt drush ? Hvad med cfn-signal ?

1. Find slutningen på bash-scriptet. Det ser sådan ud:

 "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 vil tilføje kodelinjer, hvor den tomme linje er, under kommandoen rm og over kommentaren # .

2. Tilføj disse linjer for at opdatere applikationsfilerne. Cloudformation installerer gamle versioner af drupal og drush, når EC2-maskinerne er bygget. Hver nye EC2-virtuelle maskine får disse opdaterede filer.

 "# 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. Opdater databasen, så den passer til filerne. Jeg vil kun have, at en maskine skal gøre dette, så koden kun tjekker for den første maskine. Hvis alle maskiner prøver på samme tid, vil databasen sandsynligvis blive brudt.

 "# 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. Tilføj de modulfiler, jeg har brug for, til mit arbejde.

 "# 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. Aktivér modulerne ved at opdatere 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. Sørg for, at Drupal kan læse 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. Gem dit arbejde.

Form din nye sky

Kør trinene for at køre op på AWS-eksemplet på en Drupal-klynge. Mine tidligere indlæg dækkede proceduren for at følge og de værdier, du har brug for.

Byg dit nye sted.

    1. Find din nye skabelon.
    2. Følg proceduren for lancering af en sky, men brug ikke Amazons standardskabelon.
    3. Upload din nye skabelon ved hjælp af indstillingen Upload en skabelonfil .
    4. Udfyld formularerne.
    5. Opret CloudFormation-stakken. Da jeg kørte dette tog det 20 minutter at afslutte.
    6. Opdater hændelseslisten for at se fremskridt.

      Klik for at forstørre.
      Tjek dit nye websted.
        1. Åbn URL'en til dit nye supportwebsted. Mine er http://supportti-elasticl-qbifcetbaa16-1886498031.eu-west-1.elb.amazonaws.com/admin/support. En login-side vises.
        2. Log ind med dit nye SiteAdmin og SitePassword. En supportside vises.
          Ryd op.

            Ødelæg din nye CloudFormation-stak, når du er færdig.

              En forståelsestest

              Crikey, det er som at være tilbage i skolen.

              En ny Amazon VM er altid lidt forældet. Patches og opgraderinger er tilgængelige for et par af dens pakker. En ting denne skabelon ikke gør er at opdatere pakkerne på hver virtuel maskine.

              Hvor vil du placere en yum-opdateringskommando ?

              © Copyright 2020 | mobilegn.com