Ändra AWS CloudFormation-mallar: Polera din kod

Jag har demonstrerat hur man tar en SaaS-lösning från affärsplan till en liveapplikation med exemplet på en blank, ny problembiljett-app. Här är vad vi hittills har behandlat:

  • Hur man är SaaS-leverantör på en skobandring med Amazon Web Services
  • Första steg till SaaS med AWS CloudFormation-mallar
  • Använd AWS CloudFormation för att skapa ett mycket tillgängligt kluster
  • Anatomi av en AWS CloudFormation-mall

Jag hämtade mig från förra veckans anatomilektion, där jag detaljerade de olika delarna av en AWS CloudFormation-mall. Jag är nu redo att ändra den efter mina specifika krav - automatisera byggandet av min supportbiljettjänst.

Klicka för att förstora.

SaaS byggarbete har nu nått det mycket tekniska skedet. Jag har skrivit det smältande komplicerade förfarandet nedan (tack vare Drupal-utvecklingsbyrån Microserve för att ha kontrollerat min kod).

Att experimentera med Amazon CloudFormation kostar riktiga pengar. Följ bara dessa instruktioner om du gärna slösar bort lite pengar. Jag antar att du redan har registrerat dig för AWS.

Jag beskriver inte allt SaaS-byggarbete som krävs - det finns inget behov att dra oskyldiga människor genom hela utvecklingsprocessen. Dessa steg fäster ihop några byggstenar för att komma till ett grundläggande arbetssätt.

Skaffa en kopia av Amazons CloudFusion-mallfil

Jag hugger och byter Amazons mall för att få snabba resultat, snarare än att göra det ordentligt genom att skriva en mall från början. Om du någonsin undrat vad en "smutsig hack" är, kommer du att göra en.

  1. Öppna webbadressen http://aws.amazon.com/cloudformation/aws-cloudformation-templates/. Sidan AWS CloudFormation-provmallar - US East (Virginia) -regionen visas.
  2. Hitta länken som heter Highly Available Web Server med Multi-AZ Amazon RDS-databasinstans och använda S3 för att lagra filinnehåll. Amazon använder inte korta och smarta namn här.
  3. Ladda ner filen Drupal_Multi_AZ.template från Amazons webbplats till din arbetsstation.
  4. Välj ett namn för din kopia. Jag ringde min aws-cfn-support-template.json . Nej, mitt namn är inte kort och smidigt heller.
  5. Om du använder ett kodförvar som Github eller Gitorious, kolla in din nya version.

Nu har du din lokala kopia att redigera och en fjärrsäkerhetskopia (originalfilen på AWS).

Ändra avsnittet "Resurser" för AWS CloudFormation Mallar.

Det är här vi börjar slå koden med en mallet. Kolla mitt sista inlägg för vad ett avsnitt "Resurser" betyder - som beskriver layouten för en mallfil.

Dessa redigeringar ändrar konfigurationen och smyger in några få Drupal-utvecklartrick - drush-kommandon, moduler och en installationsprofil.

Är det alltför mycket kod att kopiera? Hitta hela mallen på github.

Ändra ElasticLoadBalancers konfiguration

De elastiska belastningsbalanserna är verkligen inte flexibla när det gäller rätt och fel. De måste få ett enkelt OK- svar (en HTTP 200). Drupal kan ge en rad svar, inte bara OK.

Kontrollera en vanlig fil som README.txt istället för att fråga Drupal.

  1. Redigera din kopia av mallfilen. Hitta dessa rader:

    "HealthCheck" : {

    "Target": "HTTP: 80 /",

    De är ungefär halvvägs i filen.
  2. Ändra den målraden :

    "HealthCheck" : {

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

Uppdatera Drupal-kod och lägg till moduler

Resursavsnittet innehåller ett inbäddat bash-skript. Detta beskrivs också i mitt sista inlägg. Dessa redigeringar ändrar det skriptet.

Lägg till några extra moduler för supportbiljetsystemet. Jag vill att dessa filer ska kopieras till varje server. Modulfiler hamnar i / var / www / html / sites / all / moduler . Moduler går inte i S3-hinken (S3-området är / var / www / html / sites / default / files ).

Detta avsnitt innehåller kommandon som används av Linux-administratörer, Drupal-administratörer och AWS-administratörer. Vet du vad rm- kommandot är? Har du använt drush ? Vad sägs om cfn-signal ?

1. Hitta slutet på bash-skriptet. Det ser ut så här:

 "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 att lägga till kodrader där den tomma raden är, under kommandot rm och ovanför kommentaren # .

2. Lägg till dessa rader för att uppdatera programfilerna. Cloudformation installerar gamla versioner av drupal och drush när EC2-maskinerna är byggda. Varje ny EC2-virtuell maskin får dessa uppdaterade 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. Uppdatera databasen så att de matchar filerna. Jag vill bara att en maskin ska göra detta så att koden bara kontrollerar för den första maskinen. Om alla maskiner försöker samtidigt kommer databasen troligen att vara trasig.

 "# 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. Lägg till de modulfiler jag behöver för mitt arbete.

 "# 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. Aktivera modulerna genom att uppdatera 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. Se till att Drupal kan läsa sina egna 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. Spara ditt arbete.

Forma ditt nya moln

Kör igen stegen för att köra upp AWS-exemplet på ett Drupal-kluster. Mina tidigare inlägg täckte proceduren att följa och de värden du behöver.

Bygg din nya webbplats.

    1. Hitta din nya mall.
    2. Följ proceduren för att starta ett moln, men använd inte Amazons standardmall.
    3. Ladda upp din nya mall med alternativet Ladda upp en mallfil .
    4. Fyll i formulärerna.
    5. Skapa CloudFormation-stacken. När jag körde detta tog det 20 minuter att slutföra.
    6. Uppdatera händelselistan för att se framstegen.

      Klicka för att förstora.
      Kolla in din nya webbplats.
        1. Öppna webbadressen till din nya supportwebbplats. Mitt är http://supportti-elasticl-qbifcetbaa16-1886498031.eu-west-1.elb.amazonaws.com/admin/support. En inloggningssida visas.
        2. Logga in med ditt nya SiteAdmin och SitePassword. En supportsida visas.
          Städa.

            Förstör din nya CloudFormation-stack när du är klar.

              Ett förståelsetest

              Crikey, det är som att vara tillbaka i skolan.

              En ny Amazon VM är alltid lite föråldrad. Patchar och uppgraderingar finns tillgängliga för några av dess paket. En sak som denna mall inte gör är att uppdatera paketen på varje virtuell maskin.

              Var skulle du lägga ett yum-uppdateringskommando ?

              © Copyright 2020 | mobilegn.com