AWS CloudFormation-sjablonen wijzigen: polijst uw code

Ik heb laten zien hoe je een SaaS-oplossing van een businessplan naar een live applicatie kunt brengen, met behulp van het voorbeeld van een glanzende, nieuwe probleemticket-app. Dit is wat we tot nu toe hebben besproken:

  • Hoe een SaaS-verkoper te worden op een schoeisel met Amazon Web Services
  • Eerste stappen naar SaaS met AWS CloudFormation-sjablonen
  • Gebruik AWS CloudFormation om een ​​zeer beschikbaar cluster te maken
  • Anatomie van een AWS CloudFormation-sjabloon

Als vervolg op de anatomieles van vorige week, waar ik de verschillende delen van een AWS CloudFormation-sjabloon heb gedetailleerd, ben ik nu klaar om het aan mijn specifieke vereisten aan te passen - het automatiseren van de bouw van mijn supportticketservice.

Klik om te vergroten.

Het SaaS-bouwwerk heeft nu het zwaar technische stadium bereikt. Ik heb de ingewikkelde ingewikkelde procedure hieronder geschreven (dankzij het Drupal ontwikkelingsbureau Microserve voor het controleren van mijn code).

Experimenteren met Amazon CloudFormation kost echt geld. Volg deze instructies alleen als u graag wat geld verspilt. Ik neem aan dat je je al hebt aangemeld voor AWS.

Ik beschrijf niet al het benodigde SaaS-buildwerk - het is niet nodig om onschuldige mensen door het hele ontwikkelingsproces te slepen. Deze stappen plakken een paar bouwstenen samen om in een basis werkende staat te komen.

Download een exemplaar van Amazon's CloudFusion-sjabloonbestand

Ik hak en verander Amazon's sjabloon om snelle resultaten te krijgen, in plaats van het goed te doen door een sjabloon helemaal opnieuw te schrijven. Als je je ooit hebt afgevraagd wat een "vuile hack" is, sta je op het punt er een te maken.

  1. Open de URL http://aws.amazon.com/cloudformation/aws-cloudformation-templates/. De pagina AWS CloudFormation Sample Templates - US East (Virginia) region verschijnt.
  2. Zoek de koppeling met de naam Zeer beschikbare webserver met Multi-AZ Amazon RDS-database-instantie en gebruik S3 voor het opslaan van bestandsinhoud. Amazon gebruikt hier geen korte en pittige namen.
  3. Download het bestand Drupal_Multi_AZ.template van de website van Amazon naar uw werkstation.
  4. Kies een naam voor uw exemplaar. Ik heb de mijne aws-cfn-support-template.json genoemd . Nee, mijn naam is ook niet kort en pittig.
  5. Als u een coderepository zoals Github of Gitorious gebruikt, check dan uw nieuwe versie in.

U moet nu uw lokale kopie bewerken en een externe back-up maken (het originele bestand op AWS).

Wijzig de sectie "Bronnen" van AWS CloudFormation Templates.

Hier beginnen we de code met een hamer te raken. Controleer mijn laatste bericht voor wat een sectie "Bronnen" betekent - dat de lay-out van een sjabloonbestand beschrijft.

Deze bewerkingen veranderen de configuratie en sluipen een paar Drupal ontwikkelaarstricks - drush-opdrachten, modules en een installatieprofiel.

Is het allemaal teveel code om te kopiëren? Vind de volledige sjabloon op github.

Wijzig de configuratie van de ElasticLoadBalancer

De elastische load balancers zijn zeker niet flexibel als het gaat om goed en fout. Ze moeten een eenvoudig OK- antwoord ontvangen (een HTTP 200). Drupal kan verschillende antwoorden geven, niet alleen OK.

Controleer een gewoon bestand zoals README.txt in plaats van Drupal te vragen.

  1. Bewerk uw exemplaar van het sjabloonbestand. Zoek deze lijnen:

    "HealthCheck" : {

    "Target": "HTTP: 80 /",

    Ze zijn ongeveer halverwege het bestand.
  2. Wijzig die doellijn:

    "HealthCheck" : {

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

Update Drupal code en voeg modules toe

De sectie Bronnen bevat een ingebed bash-script. Dit wordt ook beschreven in mijn laatste bericht. Deze bewerkingen veranderen dat script.

Voeg enkele extra modules toe voor het supportticketsysteem. Ik wil dat deze bestanden naar elke server worden gekopieerd. Modulebestanden komen terecht in / var / www / html / sites / all / modules . Modules gaan niet in de S3-bucket (het S3-gebied is / var / www / html / sites / default / files ).

Deze sectie bevat opdrachten die worden gebruikt door Linux-beheerders, Drupal-beheerders en AWS-beheerders. Weet je wat het rm- commando is? Heb je drush gebruikt? Hoe zit het met cfn-signaal ?

1. Zoek het einde van het bash-script. Het ziet er zo uit:

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

Je gaat coderegels toevoegen waar die lege regel is, onder het rm- commando en boven de # comment.

2. Voeg deze regels toe om de toepassingsbestanden bij te werken. Cloudformation installeert oude versies van drupal en drush wanneer de EC2-machines worden gebouwd. Elke nieuwe EC2 virtuele machine krijgt deze bijgewerkte bestanden.

 "# 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. Werk de database bij zodat deze overeenkomt met de bestanden. Ik wil slechts één machine om dit te doen, dus de code controleert alleen de eerste machine. Als alle machines tegelijkertijd proberen, zal de database waarschijnlijk kapot gaan.

 "# 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. Voeg de modulebestanden toe die ik nodig heb voor mijn werk.

 "# 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. Schakel de modules in door de database bij te werken.

 "# 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. Zorg ervoor dat Drupal zijn eigen bestanden kan lezen.

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

7. Sla uw werk op.

Vorm uw nieuwe cloud

Voer de stappen voor het uitvoeren van het AWS-voorbeeld van een Drupal-cluster opnieuw uit. Mijn eerdere berichten hadden betrekking op de te volgen procedure en de waarden die u nodig hebt.

Bouw je nieuwe site.

    1. Zoek uw nieuwe sjabloon.
    2. Volg de procedure voor het starten van een cloud, maar gebruik geen standaardsjabloon van Amazon.
    3. Upload uw nieuwe sjabloon met de optie Een sjabloonbestand uploaden .
    4. Vul de formulieren in.
    5. Maak de CloudFormation-stapel. Toen ik dit uitvoerde, duurde het 20 minuten om te voltooien.
    6. Vernieuw de lijst Evenementen om de voortgang te zien.

      Klik om te vergroten.
      Controleer je nieuwe site.
        1. Open de URL van uw nieuwe ondersteuningssite. De mijne is http://supportti-elasticl-qbifcetbaa16-1886498031.eu-west-1.elb.amazonaws.com/admin/support. Er verschijnt een inlogpagina.
        2. Log in met uw nieuwe SiteAdmin en SitePassword. Er verschijnt een ondersteuningspagina.
          Schoonmaken.

            Vernietig je nieuwe CloudFormation-stapel als je klaar bent.

              Een begripstest

              Crikey, het is alsof je weer op school bent.

              Een nieuwe Amazon VM is altijd een beetje verouderd. Patches en upgrades zijn beschikbaar voor enkele pakketten. Een ding dat deze sjabloon niet doet, is de pakketten op elke virtuele machine bijwerken.

              Waar zou je een yum update commando plaatsen?

              © Copyright 2020 | mobilegn.com