Ändern von AWS CloudFormation-Vorlagen: Polieren Sie Ihren Code

Ich habe am Beispiel einer glänzenden neuen Trouble-Ticket-App demonstriert, wie eine SaaS-Lösung vom Geschäftsplan in eine Live-Anwendung übertragen werden kann. Folgendes haben wir bisher behandelt:

  • So werden Sie mit Amazon Web Services ein SaaS-Anbieter
  • Erste Schritte zu SaaS mit AWS CloudFormation-Vorlagen
  • Verwenden Sie AWS CloudFormation, um einen hochverfügbaren Cluster zu erstellen
  • Anatomie einer AWS CloudFormation-Vorlage

Nach der Anatomie-Lektion der letzten Woche, in der ich die verschiedenen Teile einer AWS CloudFormation-Vorlage detailliert beschrieben habe, kann ich sie jetzt an meine spezifischen Anforderungen anpassen und den Aufbau meines Support-Ticket-Service automatisieren.

Klicken um zu vergrößern.

Die SaaS-Bauarbeiten haben jetzt das hochtechnische Stadium erreicht. Ich habe das kopfschmelzende Verfahren unten geschrieben (danke an die Drupal-Entwicklungsagentur Microserve für die Überprüfung meines Codes).

Das Experimentieren mit Amazon CloudFormation kostet echtes Geld. Befolgen Sie diese Anweisungen nur, wenn Sie gerne etwas Geld verschwenden. Ich gehe davon aus, dass Sie sich bereits für AWS angemeldet haben.

Ich beschreibe nicht alle erforderlichen SaaS-Build-Arbeiten - es ist nicht erforderlich, unschuldige Personen durch den gesamten Entwicklungsprozess zu ziehen. Diese Schritte halten einige Bausteine ​​zusammen, um zu einem grundlegenden Arbeitszustand zu gelangen.

Holen Sie sich eine Kopie der CloudFusion-Vorlagendatei von Amazon

Ich schneide und ändere die Vorlage von Amazon, um schnelle Ergebnisse zu erzielen, anstatt sie richtig zu machen, indem ich eine Vorlage von Grund auf neu schreibe. Wenn Sie sich jemals gefragt haben, was ein "schmutziger Hack" ist, werden Sie gleich einen machen.

  1. Öffnen Sie die URL http://aws.amazon.com/cloudformation/aws-cloudformation-templates/. Die Seite AWS CloudFormation-Beispielvorlagen - Region US East (Virginia) wird angezeigt.
  2. Suchen Sie den Link Hochverfügbarer Webserver mit der Amazon RDS-Datenbankinstanz Multi-AZ und verwenden Sie S3 zum Speichern von Dateiinhalten. Amazon verwendet hier keine kurzen und bissigen Namen.
  3. Laden Sie die Datei Drupal_Multi_AZ.template von der Amazon-Website auf Ihre Workstation herunter.
  4. Wählen Sie einen Namen für Ihre Kopie. Ich habe meine aws-cfn-support-template.json angerufen . Nein, mein Name ist auch nicht kurz und bissig.
  5. Wenn Sie ein Code-Repository wie Github oder Gitorious verwenden, checken Sie Ihre neue Version ein.

Sie haben jetzt Ihre lokale Kopie zum Bearbeiten und eine Remote-Sicherung (die Originaldatei in AWS).

Ändern Sie den Abschnitt "Ressourcen" der AWS CloudFormation-Vorlagen.

Hier fangen wir an, den Code mit einem Hammer zu schlagen. Überprüfen Sie in meinem letzten Beitrag, was ein Abschnitt "Ressourcen" bedeutet - der das Layout einer Vorlagendatei beschreibt.

Diese Änderungen ändern die Konfiguration und führen einige Drupal-Entwicklertricks ein - Drush-Befehle, Module und ein Installationsprofil.

Ist alles zu viel Code zum Kopieren? Die vollständige Vorlage finden Sie auf github.

Ändern Sie die Konfiguration des ElasticLoadBalancer

Die elastischen Lastausgleicher sind sicherlich nicht flexibel, wenn es um richtig und falsch geht. Sie müssen eine einfache OK- Antwort erhalten (ein HTTP 200). Drupal kann eine Reihe von Antworten geben, nicht nur OK.

Überprüfen Sie eine normale Datei wie README.txt, anstatt Drupal zu fragen.

  1. Bearbeiten Sie Ihre Kopie der Vorlagendatei. Finden Sie diese Zeilen:

    "HealthCheck" : {

    "Ziel": "HTTP: 80 /",

    Sie sind ungefähr in der Mitte der Akte.
  2. Ändern Sie diese Ziellinie:

    "HealthCheck" : {

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

Aktualisieren Sie den Drupal-Code und fügen Sie Module hinzu

Der Abschnitt Ressourcen enthält ein eingebettetes Bash-Skript. Dies ist auch in meinem letzten Beitrag beschrieben. Diese Änderungen ändern das Skript.

Fügen Sie einige zusätzliche Module für das Support-Ticket-System hinzu. Ich möchte, dass diese Dateien auf jeden Server kopiert werden. Moduldateien landen in / var / www / html / sites / all / modules . Module werden nicht in den S3-Bucket aufgenommen (der S3-Bereich lautet / var / www / html / sites / default / files ).

Dieser Abschnitt enthält Befehle, die von Linux-Administratoren, Drupal-Administratoren und AWS-Administratoren verwendet werden. Wissen Sie, was der Befehl rm ist? Hast du Drush benutzt ? Wie wäre es mit cfn-Signal ?

1. Suchen Sie das Ende des Bash-Skripts. Es sieht aus wie das:

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

Sie werden Codezeilen hinzufügen, in denen sich diese leere Zeile befindet, unter dem Befehl rm und über dem Kommentar # .

2. Fügen Sie diese Zeilen hinzu, um die Anwendungsdateien zu aktualisieren. Cloudformation installiert alte Versionen von Drupal und Drush, wenn die EC2-Maschinen gebaut werden. Jede neue virtuelle EC2-Maschine erhält diese aktualisierten Dateien.

 "# 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. Aktualisieren Sie die Datenbank entsprechend den Dateien. Ich möchte, dass nur eine Maschine dies tut, daher prüft der Code nur die erste Maschine. Wenn alle Computer gleichzeitig versuchen, wird die Datenbank wahrscheinlich kaputt gehen.

 "# 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. Fügen Sie die Moduldateien hinzu, die ich für meine Arbeit benötige.

 "# 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. Aktivieren Sie die Module, indem Sie die Datenbank aktualisieren.

 "# 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. Stellen Sie sicher, dass Drupal seine eigenen Dateien lesen kann.

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

7. Speichern Sie Ihre Arbeit.

Bilden Sie Ihre neue Cloud

Führen Sie die Schritte zum Ausführen des AWS-Beispiels eines Drupal-Clusters erneut aus. Meine früheren Beiträge befassten sich mit dem zu befolgenden Verfahren und den Werten, die Sie benötigen.

Erstellen Sie Ihre neue Site.

    1. Finden Sie Ihre neue Vorlage.
    2. Befolgen Sie die Anweisungen zum Starten einer Cloud, verwenden Sie jedoch nicht die Standardvorlage von Amazon.
    3. Laden Sie Ihre neue Vorlage mit der Option Vorlagendatei hochladen hoch.
    4. Füllen Sie die Formulare aus.
    5. Erstellen Sie den CloudFormation-Stapel. Als ich das lief, dauerte es 20 Minuten.
    6. Aktualisieren Sie die Ereignisliste, um den Fortschritt anzuzeigen.

      Klicken um zu vergrößern.
      Überprüfen Sie Ihre neue Website.
        1. Öffnen Sie die URL Ihrer neuen Support-Site. Meins ist http://supportti-elasticl-qbifcetbaa16-1886498031.eu-west-1.elb.amazonaws.com/admin/support. Eine Anmeldeseite wird angezeigt.
        2. Melden Sie sich mit Ihrem neuen SiteAdmin und SitePassword an. Eine Support-Seite wird angezeigt.
          Aufräumen.

            Zerstören Sie Ihren neuen CloudFormation-Stapel, wenn Sie fertig sind.

              Ein Verständnistest

              Crikey, es ist wie in der Schule.

              Eine neue Amazon VM ist immer etwas veraltet. Für einige seiner Pakete sind Patches und Upgrades verfügbar. Diese Vorlage aktualisiert die Pakete auf jeder virtuellen Maschine nicht.

              Wo würden Sie einen yum update Befehl setzen?

              © Copyright 2020 | mobilegn.com