กายวิภาคของเทมเพลต AWS CloudFormation

การใช้บริการตั๋วสนับสนุนเป็นตัวอย่าง SaaS ของฉันฉันได้แสดงให้เห็นว่าทุกคนสามารถใช้ประโยชน์จากเครื่องมือที่นำเสนอโดย Amazon Web Services เพื่อนำความคิดของคุณจากแผนธุรกิจไปสู่ผลิตภัณฑ์ที่มีให้ลูกค้าของคุณผ่านระบบคลาวด์ จนถึงตอนนี้เราได้ทำงานเกี่ยวกับการวางแผนและออกแบบสร้างเลเยอร์ IaaS และใช้เทมเพลต AWS CloudFormation เพื่อสร้างคลัสเตอร์ที่มีความพร้อมใช้งานสูง ตอนนี้เราพร้อมที่จะเริ่มขัดใบสมัครแล้ว

ขั้นตอนต่อไปคือการเปลี่ยนเทมเพลต AWS CloudFormation เพื่อให้บริการสร้างตั๋วสนับสนุนของฉันเป็นแบบอัตโนมัติ ฉันมีคลัสเตอร์ที่มีความพร้อมใช้งานสูง Drupal ฐานข้อมูล RDS กฎไฟร์วอลล์ตัวโหลดบาลานซ์และอื่น ๆ เป็นสิ่งที่ยอดเยี่ยมที่จะได้รับจากเว็บ UI และการคลิกเมาส์เพียงไม่กี่ครั้ง

แต่มันก็ไม่วิเศษพอ ฉันต้องแก้ไขเทมเพลต CloudFormation เพื่อนำมาใกล้กับความต้องการของฉัน แต่ก่อนอื่นฉันต้องรู้ว่ามีอะไรอยู่ในนั้นและตำแหน่งที่ฉันต้องทำการแก้ไขที่จำเป็น ด้านล่างฉันจะให้ภาพรวมของชิ้นส่วนทั้งหมด

ขัดบริการของฉันหมายถึงการเข้าสู่ดินแดนของนักพัฒนา

บริการที่ให้บริการโดยแม่แบบ AWS CloudFormation Drupal ไม่ใช่สิ่งที่ฉันต้องการ ฉันจะปรับแต่งแม่แบบที่นี่เพื่อทำการเปลี่ยนแปลงที่จำเป็น น่าเสียดายที่นี่หมายถึงการข้ามไปสู่ดินแดนนักพัฒนาซอฟต์แวร์ ฉันจะไม่เดินทางตลอดไปเพราะอาณาเขตของนักพัฒนาเป็นดินแดนรกร้างที่ไม่น่าไปเยี่ยม ฉันจะครอบคลุมพอที่จะให้แสงสว่างทาง

การรวมกันของโมดูล Drupal

บริษัท SaaS สร้างบริการของพวกเขา พวกเขาไม่รับสินค้าที่เป็นป้ายขาวและติดป้ายไว้ ฉันจะสร้างบริการจองตั๋วของฉันโดยใช้ชุดเครื่องมือ Drupal Core CMS อุปกรณ์เสริมมากมายและเวลาในการพัฒนาจำนวนมาก

อย่างไรก็ตามมีโมดูลตัวเลือกมากมายสำหรับ Drupal ที่ฉันสามารถรวมเข้าด้วยกันเพื่อลดเวลาในการพัฒนา

  • บริการตั๋วสนับสนุนมาจากโมดูลสนับสนุน โมดูล สนับสนุน ให้การบริการทางธุรกิจของฉันสิ้นสุด
  • กลไกการสร้างรายได้มาจากชุดของโมดูล พาณิชย์ จัดการกับด้านอีคอมเมิร์ซ Drupal Commerce เป็นชุดใหญ่ที่มีเกือบยี่สิบโมดูลที่จะติดตั้งและโมดูลสนับสนุนอื่น ๆ อีกมากมาย สิ่งเหล่านี้เป็นกรอบในการจัดการกับลูกค้าภาษีรายการโฆษณาการชำระเงินผลิตภัณฑ์และอื่น ๆ
  • การควบคุมเนื้อหาพรีเมี่ยมนี้ได้รับการจัดการโดยโมดูล การเข้าถึงเนื้อหา และสิ่งอื่น ๆ เช่นกลไกการควบคุมการเข้าถึง บทบาท โมดูลเหล่านี้ติดการค้าและการสนับสนุนชิ้นส่วนตั๋วเข้าด้วยกัน

มีอะไรในแม่แบบ AWS CloudFormation

ฉันสามารถแก้ไขไฟล์เทมเพลต AWS CloudFormation เพื่อให้เหมาะกับความต้องการของฉัน

คลิกเพื่อดูภาพขยาย

ก่อนอื่นฉันต้องเข้าใจว่าเทมเพลตคืออะไร นี่เป็นภาพรวมคร่าวๆ สำหรับคำอธิบายโดยละเอียดเพิ่มเติมดูคู่มือ AWS Bootstrapping Applications ผ่าน AWS CloudFormation

gremlins อัตโนมัติขนาดเล็กที่สร้าง CloudFormation ใช้คำแนะนำจากไฟล์กำหนดค่าที่มีลักษณะเช่นนี้

 { 
 "AWSTemplateFormatVersion": "date date", 
 "คำอธิบาย": "สตริง JSON ที่ถูกต้องไม่เกิน 4K", 
 "พารามิเตอร์": { 
 คีย์และค่า 
 } 
 "การแมป": { 
 คีย์และค่า 
 } 
 "ทรัพยากร": { 
 คีย์และค่า 
 } 
 "เอาท์พุท": { 
 คีย์และค่า 
 } 
 } 

ข้อความนี้ด้วยการโรยวงเล็บปีกการาคาและโคลอนเป็นอิสระคือ JSON (สัญลักษณ์วัตถุ JavaScript) JSON ได้รับความนิยมจากนักพัฒนาที่ไม่ต้องการความวุ่นวายของ XML แต่ก็ไม่เจ๋งพอสำหรับ YAML

บรรทัด คีย์และค่า ในตัวอย่างด้านบนจะมีลักษณะเช่นนี้ในไฟล์เทมเพลตจริง

 "S3Bucket": { 
 "Type": "AWS :: S3 :: Bucket", 
 "คุณสมบัติ" : { 
 "AccessControl": "PublicRead", 
 "การกำหนดค่าเว็บไซต์": { 
 "IndexDocument": "index.html", 
 "ErrorDocument": "error.html" 
 } 
 } 
 } 

สิ่งที่เยื้องนั้นคือโหลดคู่คีย์ / ค่าที่ซ้อนกัน มันซับซ้อนและเป็นเพียงส่วนปลายของภูเขาน้ำแข็ง ไฟล์เทมเพลตเป็นสวรรค์ nerd

เปิดใช้งานการกำหนดค่า

ส่วน ทรัพยากร ของไฟล์เทมเพลตประกอบด้วยส่วนย่อยที่เรียกว่า LaunchConfig ส่วนนี้เริ่มต้นด้วยบรรทัดนี้

"LaunchConfig": {

ส่วน LaunchConfig คือความฉลาด 200 บรรทัด มีรายการไฟล์ที่จะติดตั้งดาวน์โหลดและสร้าง นอกจากนี้ยังมีสคริปต์ทุบตีทั้งหมดฝังอยู่ในนั้น

ฉันใช้เทมเพลต Drupal ที่ทำคลัสเตอร์ คุณสามารถดูได้ที่นี่: เว็บเซิร์ฟเวอร์พร้อมใช้งานสูงพร้อมอินสแตนซ์ฐานข้อมูล Multi-AZ Amazon RDS และใช้ S3 สำหรับจัดเก็บเนื้อหาไฟล์

หลังจากนั้นฉันจะทำการเปลี่ยนแปลงเล็กน้อยในส่วน LaunchConfig ของแม่แบบนี้และสร้างคลัสเตอร์

สคริปต์ทุบตีแบบฝัง

สคริปต์ทุบตีในส่วน LaunchConfig จะอยู่ที่ด้านล่างของไฟล์ สคริปต์มีความยาวประมาณ 60 บรรทัดและมีลักษณะเช่นนี้

"UserData" : { "Fn::Base64" : { "Fn::Join" : "",  
  "#!/bin/bash -v\n",  
  "yum update -y aws-cfn-bootstrap\n",  
 ... 
 ... 
 ... 
  "# All is well so signal success\n",  
  "/opt/aws/bin/cfn-signal -e 0 -r \"Drupal setup complete\" '", { "Ref" : "WaitHandle" }, "'\n" 
 
  }} 

งานของรหัสเทมเพลตที่ดูน่ารำคาญนี้คือการใส่ทุกบรรทัดลงใน bash script

bash script คือชุดคำสั่งที่ทำสิ่งต่าง ๆ ให้กับระบบ ผู้ดูแลระบบได้เขียนสคริปต์มานานหลายทศวรรษ สคริปต์ทุบตีที่ชาญฉลาดนี้แก้ไขการกำหนดค่าเซิร์ฟเวอร์เว็บ Apache แสดงรายการเครื่อง EC2 ใหม่ทั้งหมดตั้งค่าไซต์ Drupal พื้นฐานและอื่น ๆ

สคริปต์นี้ถูกคัดลอกไปยัง EC2 VM ใหม่แต่ละรายการ มันจบลงในไดเรกทอรี / var / lib / cloud / data / สคริปต์ / ข้อความทั้งหมดที่สร้างขึ้นใน /var/log/cloud-init.log

ไฟล์และไดเรกทอรีของเครื่อง EC2

การกระจายแอปพลิเคชันไปยังเซิร์ฟเวอร์จำนวนมากนั้นยุ่งยาก คุณต้องรู้ว่าสิ่งใดที่ถูกคัดลอกสิ่งที่แบ่งปันและที่ที่ทุกคนควรไป

ไฟล์จำนวนมากถูกทำซ้ำบนเครื่อง รหัสทั่วไปทั้งหมด (Drupal Core) จะถูกคัดลอกไปยังไดเรกทอรีเว็บไซต์บนเซิร์ฟเวอร์ใหม่แต่ละเครื่อง (อยู่ใน / var / www / html )

ที่ฝากข้อมูล S3

ไฟล์บางไฟล์ถูกแชร์ระหว่างเครื่อง ระบบไฟล์หนึ่งบิตจริงๆแล้วเป็นที่ฝากข้อมูล AWS S3 (Simple Storage Service) พื้นที่ที่ใช้ร่วมกันนี้ติดตั้งอยู่บนเซิร์ฟเวอร์ทั้งสามแห่ง (ใน / var / www / html / sites / default / ไฟล์ ) ไฟล์ Drupal บางไฟล์จะอยู่ในที่เก็บ S3

ถัง S3 มักจะใช้สำหรับเว็บไซต์เนื้อหาคงที่มากกว่าไฟล์ปฏิบัติการบันทึกและไฟล์อื่น ๆ ที่ยุ่งยาก ที่ฝากข้อมูล S3 นี้จะระงับการอัพโหลดไฟล์ของลูกค้า ลูกค้าหนึ่งรายอัปโหลดไฟล์หนึ่งครั้งจากนั้นเว็บเซิร์ฟเวอร์ทั้งหมดสามารถตอบกลับคำขอของไฟล์นี้ได้

แม่แบบการสำรองข้อมูล

อย่ากังวลที่จะเก็บเทมเพลตใหม่ของคุณบนเว็บ คุณสามารถให้ CloudFormation URL เพื่อรับไฟล์เทมเพลตของคุณ แต่ใช้ได้กับ AWS S3 (Simple Storage Service) เท่านั้น นั่นคือที่ AWS เก็บแม่แบบ นั่นคือที่เก็บแม่แบบที่คุณอัปโหลด นักพัฒนาที่ใช้ที่เก็บรหัสเช่น Github หรือ Gitorious นั้นโชคไม่ดี

© Copyright 2020 | mobilegn.com