AWS CloudFormation: Πού να βρείτε βοήθεια όταν τη χρειάζεστε

Το να κοιτάς μια απλή, ανόητη γραμμή εντολών χωρίς ιδέα τι να κάνεις με το AWS CLI στη συνέχεια μπορεί να είναι μια ταπεινή εμπειρία. Και, τουλάχιστον από την εμπειρία μου, το να κοιτάς την Κονσόλα διαχείρισης για AWS CloudFormation μπορεί να είναι χειρότερο.

Επιτρέψτε μου λοιπόν να σας προσφέρω μια γρήγορη βοήθεια "να ξεκινήσετε" με βάση μέρος του περιεχομένου στο τελευταίο μάθημα Pluralsight.

Πρώτα απ 'όλα, εάν σκοπεύετε να διαχειριστείτε τις στοίβες CloudFormation μέσω του AWS CLI και όχι από την Κονσόλα διαχείρισης, συζητώ τα βασικά σε αυτό το άρθρο. Μόλις γίνει αυτό, θα είστε έτοιμοι για οτιδήποτε

Ξεκινήστε απλό:

$ aws s3 ls 2019-11-03 13:16:59 athena5905 2019-02-03 18:01:42 book-3939 2014-07-01 18:52:32 elasticbeanstalk-ap-northeast-1-426397493112 2014-08-28 16:57:49 elasticbeanstalk-us-east-1-426497493912 2019-05-04 22:17:50 ltest236 2018-07-15 15:52:30 mybucket99688223 2017-07-25 17:06:43 nextcloud3239027

Το "aws" σε αυτό το παράδειγμα λέει στο κέλυφος σας ότι θέλετε αυτό που έρχεται στη συνέχεια να αντιμετωπιστεί από το AWS CLI. Το "s3" που πληκτρολογώ στη συνέχεια λέει στο CLI ότι θα χρησιμοποιώ την υπηρεσία S3 - αυτή είναι η υπηρεσία απλής αποθήκευσης του Amazon. Τέλος, το "ls" ή "list" είναι η εντολή που θα ήθελα να εκτελέσω ενάντια σε αυτήν την υπηρεσία.

Το CLI, χρησιμοποιώντας τις μεταβλητές ελέγχου ταυτότητας λογαριασμού που το εργαλείο διαμόρφωσης προστέθηκε στο περιβάλλον μου, θα βγει γρήγορα και θα αποκτήσει πρόσβαση στον λογαριασμό μου, στην περίπτωση αυτή θα ανακτήσει τα ονόματα όλων των κάδων μου.

Προβλέψιμα, λέτε στο AWS ότι θέλετε να συνεργαστείτε με το CloudFormation χρησιμοποιώντας το "cloudformation". Αν το εκτελέσω χωρίς να καθορίσω μια εντολή, θα λάβω ένα μήνυμα σφάλματος:

aws cloudformation usage: aws [options]   [ ...] [parameters] To see help text, you can run: aws help aws  help aws   help aws: error: the following arguments are required: operation 

Αλλά είναι ένα σημαντικό μήνυμα, καθώς μας λέει πώς να αποκτήσουμε πρόσβαση στην ενσωματωμένη τεκμηρίωση. Βοήθεια ευαίσθητη στο περιβάλλον είναι διαθέσιμη σε κάθε επίπεδο.

Δείτε τι θα συμβεί αν προσθέσετε "βοήθεια" μετά την "cloudformation". Θα λάβετε μια σύντομη περιγραφή και στη συνέχεια μια λίστα με όλες τις διαθέσιμες δευτερεύουσες εντολές.

$ aws cloudformation help CLOUDFORMATION() CLOUDFORMATION() NAME cloudformation - DESCRIPTION AWS CloudFormation allows you to create and manage AWS infrastructure deployments predictably and repeatedly. You can use AWS CloudFormation to leverage AWS products, such as Amazon Elastic Compute Cloud, Amazon Elastic Block Store, Amazon Simple Notification Service, Elastic Load Balancing, and Auto Scaling to build highly-reliable, highly scalable, cost-effective applications without creating or configuring the underlying AWS infrastructure. With AWS CloudFormation, you declare all of your resources and dependencies in a template file. The template defines a collection of resources as a single unit called a stack. AWS CloudFormation creates and deletes all member resources of the stack together and manages all dependencies between the resources for you. For more information about AWS CloudFormation, see the AWS CloudFormation Product Page. Amazon CloudFormation makes use of other AWS products. If you need additional technical information about a specific AWS product, you can find the product's technical documentation at docs.aws.amazon.com. AVAILABLE COMMANDS o cancel-update-stack o continue-update-rollback o create-change-set o create-stack o create-stack-set o delete-change-set o delete-stack o delete-stack-instances o delete-stack-set o deploy o describe-account-limits o describe-change-set o describe-stack-events o describe-stack-instance o describe-stack-resource o describe-stack-resources o describe-stack-set o describe-stack-set-operation o describe-stacks o estimate-template-cost o execute-change-set o get-stack-policy [...]

Τώρα εκτελέστε την εντολή "περιγραφή-στοίβες". Πιθανότατα δεν υπάρχουν ζωντανές στοίβες στον λογαριασμό σας αυτήν τη στιγμή, οπότε δεν θα δείτε καμία έξοδο.

Αλλά κάντε το ξανά, αυτή τη φορά προσθέτοντας "βοήθεια". Αυτό θα σας δείξει μερικές επιλογές που θα σας επιτρέψουν να φιλτράρετε ή να χειριστείτε τα δεδομένα που λαμβάνετε. Θα μπορούσατε, για παράδειγμα, να δείξετε το CLI σε μια συγκεκριμένη στοίβα χρησιμοποιώντας το "--stack-name" ακολουθούμενο από το όνομα μιας υπάρχουσας στοίβας.

$ aws cloudformation describe-stacks $ aws cloudformation describe-stacks help NAME describe-stacks - DESCRIPTION Returns the description for the specified stack; if no stack name was specified, then it returns the description for all the stacks created. NOTE: If the stack does not exist, an AmazonCloudFormationException is returned. See also: AWS API Documentation See 'aws help' for descriptions of global parameters. describe-stacks is a paginated operation. Multiple API calls may be issued in order to retrieve the entire data set of results. You can disable pagination by providing the --no-paginate argument. When using --output text and the --query argument on a paginated response, the --query argument must extract data from the results of the following query expressions: Stacks SYNOPSIS describe-stacks [--stack-name ] [--cli-input-json ] [--starting-token ] [--max-items ] [--generate-cli-skeleton ] OPTIONS --stack-name (string) The name or the unique stack ID that is associated with the stack, which are not always interchangeable: [...] $ aws cloudformation describe-stacks --stack-name myname 

Αυτά είναι εργαλεία που θα σας βοηθήσουν ανεξάρτητα από την υπηρεσία AWS που χρησιμοποιείτε. Αλλά κοιτάζοντας συγκεκριμένα το CloudFormation, υπάρχουν μερικές πολύτιμες επίσημες συλλογές δειγμάτων προτύπων για τις οποίες πρέπει να γνωρίζετε. Η σύνταξη JSON ή YAML είναι αυτό που είναι, πιθανώς δεν θα θέλετε να ξεκινήσετε από ένα κενό έγγραφο.

Η ίδια η Amazon έχει κάνει εξαιρετική δουλειά δημιουργώντας πρότυπα για να συνεργαστούμε. Η πρώτη σας στάση θα πρέπει να είναι η σελίδα AWS CloudFormation Templates. Εδώ θα βρείτε συνδέσμους για αποσπάσματα και συγκεκριμένα πλαίσια εφαρμογών και λίγο περισσότερο πρωτοποριακό περιεχόμενο.

Αλλά τώρα θα ήθελα να επιστήσω την προσοχή σας σε ένα από τα "δείγματα προτύπων" που οργανώθηκε από την υπηρεσία AWS (αυτός ο κωδικός προέρχεται από ένα από τα παραδείγματα του Amazon EC2).

Το πρότυπο ξεκινά με μια περιγραφή δωρεάν φόρμας που μας βοηθάει να μάθουμε τι είδους στοίβα θα δημιουργήσει. Μας λένε επίσης ότι θα μπορούσαμε να προσαρμόσουμε το πρότυπο χρησιμοποιώντας μια υπάρχουσα διεύθυνση Ελαστικού IP αντί για μια που δημιουργείται αυτόματα.

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample: Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based on the region in which the stack is run. This example creates an EC2 security group for the instance to give you SSH access. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.", 

Θα πρέπει να μεταβιβάσετε το όνομα ενός υπάρχοντος KeyPair από την τρέχουσα περιοχή στον λογαριασμό σας AWS, ώστε να μπορείτε να ανοίξετε απομακρυσμένο SSH στην παρουσία Linux που θα ξεκινήσει. Εναλλακτικά, μπορείτε να μεταβιβάσετε αυτήν την τιμή από τη γραμμή εντολών.

Η ενότητα Παράμετροι είναι επίσης όπου ορίζετε τον τύπο παρουσίας EC2. Η προεπιλογή είναι t2.small, αλλά θα μας επιτρέπεται να ανταλλάξουμε αυτήν την τιμή για οποιαδήποτε από τις άλλες AllowedValues ​​σε αυτό το έγγραφο ή να την παρακάμψουμε από τη γραμμή εντολών.

 "Parameters" : { "KeyName": { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." }, "InstanceType" : { "Description" : "WebServer EC2 instance type", "Type" : "String", "Default" : "t2.small", 

Εάν μετακινηθείτε προς τα κάτω στην ενότητα Αντιστοιχίες, μπορούμε να δούμε μεγάλες λίστες διαθέσιμων αρχιτεκτονικών υλικού και αναγνωριστικών μηχανής εικόνας Amazon για κάθε περιοχή.

Αυτή είναι μια προαιρετική ενότητα όπου μπορείτε να εισαγάγετε τις δικές σας μη τυπικές τιμές, για παράδειγμα, θα ξεκινήσει ένας τύπος εικόνας βάσει ενός συγκεκριμένου συνόλου παραμέτρων - ίσως ακόμη και μιας ιδιωτικής εικόνας AMI. Τέτοια δεδομένα οργανώνονται σε ζεύγη κλειδιών / τιμών.

 "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "HVM64" }, "t2.nano" : { "Arch" : "HVM64" }, "t2.micro" : { "Arch" : "HVM64" }, 

Η ενότητα Πόροι σε αυτήν την περίπτωση καθορίζει το περιβάλλον εμφάνισης. Το SecurityGroup, για παράδειγμα, έχει ρυθμιστεί να ανοίγει τη θύρα SSH 22 αλλά τίποτα άλλο. Η δημόσια διεύθυνση IP της παρουσίας σχετίζεται επίσης με τη νέα διεύθυνση IP Elastic που θα εκχωρηθεί.

 "InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable SSH access via port 22", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"} } ] } } }, 

Ένας ακόμη σημαντικός πόρος Amazon: Γρήγορες εκκινήσεις. Ακριβώς μιλώντας οι προεγκατεστημένες στοίβες υποδομής που παρέχονται εδώ για να σας βοηθήσουν να δημιουργήσετε πιο περίπλοκες αναπτύξεις cloud δεν σχετίζονται άμεσα με το CloudFormation. Παρέχονται από εταιρείες τρίτων για να απλοποιήσουν τη διαδικασία κατασκευής της υποδομής τους μέσα στην πλατφόρμα AWS.

Αλλά το γεγονός είναι ότι ο καθένας ξεκινά με το δικό του μοναδικό πρότυπο CloudFormation. Κάνοντας κλικ για να δείτε πραγματικά παραδείγματα, συχνά θα οδηγηθείτε στα πρότυπα πηγαίου κώδικα στοίβας σε ένα repo του GitHub. Αυτό το παράδειγμα μας δείχνει τα εργαλεία που θα χρειαστείτε για να ενεργοποιήσετε μια κονσόλα HashiCorp:

Είτε έτσι είτε αλλιώς, μπορείτε να χρησιμοποιήσετε αυτά τα πρότυπα ως εργαλεία εκμάθησης - ή περιηγηθείτε στην επιλογή για να δείτε εάν υπάρχει μια στοίβα εκεί που συμβαίνει να ταιριάζει στις ανάγκες σας.

Υπάρχει πολύ περισσότερη θετική διαχείριση με τη μορφή βιβλίων, μαθημάτων και άρθρων που διατίθενται στο bootstrap-it.com.