Κατανόηση των Εργαλείων IaC: Cloudformation vs Terraform

AWS CloudFormation και Terraform – δεν είστε σίγουροι τι να επιλέξετε; Αυτό το άρθρο θα σας βοηθήσει να πάρετε μια έξυπνη απόφαση.

Το Cloud Computing έχει φέρει επανάσταση στον κόσμο των DevOps. Δεν είναι απλώς ένα τσιτάτο πια. είναι εδώ και είναι εδώ για να αλλάξει τον τρόπο που αναπτύσσουμε και διατηρούμε τις εφαρμογές μας. Αν και υπάρχουν αμέτρητοι λόγοι για τους οποίους πρέπει να χρησιμοποιείτε το cloud computing για όλες τις κλίμακες επιχειρήσεων, υπάρχει ένας μικρός περιορισμός, πρέπει να παρέχετε την υποδομή σας με μη αυτόματο τρόπο.

Πρέπει να πάτε στις κονσόλες των παρόχων cloud και να τους πείτε ακριβώς τι θέλετε. Αυτό λειτουργεί καλά για μικρές περιπτώσεις χρήσης, αλλά τι γίνεται αν έχετε διαφορετικά άτομα που κάνουν αλλαγές διαμόρφωσης στην κονσόλα. Θα μπορούσατε να καταλήξετε με μια εξαιρετικά περίπλοκη υποδομή που θα γίνεται όλο και πιο δύσκολη στη συντήρηση. Δεν υπάρχει αποτελεσματικός τρόπος συνεργασίας ή παρακολούθησης των αλλαγών στην Υποδομή στο Cloud. Λοιπόν, στην πραγματικότητα υπάρχει. Η υποδομή ως κώδικας.

Η υποδομή ως κώδικας είναι ένας πολύ δημοφιλής όρος στο cloud computing. Είναι η διαδικασία διαχείρισης της υποδομής πληροφορικής σας χρησιμοποιώντας κώδικα. Ναι αυτό είναι σωστό. Αντί να πας στην κονσόλα και να τα κάνεις όλα χειροκίνητα. Η υποδομή ως κωδικός, γνωστός και ως IAAC ή IAC, σας επιτρέπει να γράφετε αρχεία διαμόρφωσης, τα οποία στη συνέχεια παρέχουν την υποδομή σας στο cloud. Το IAC μας προσφέρει τα πλεονεκτήματα όπως η συνέπεια, η εύκολη και γρήγορη συντήρηση και δεν υπάρχει χώρος για ανθρώπινα λάθη.

Χρήση IAC με τις Υπηρεσίες Ιστού της Amazon

Η AWS είναι η κορυφαία υπηρεσία cloud computing στον κόσμο, έχοντας διπλάσιο μερίδιο αγοράς από τον επόμενο πάροχο cloud μετά από αυτήν. Υπάρχουν περισσότερες από 200 υπηρεσίες στο AWS που μπορούν να εξυπηρετήσουν εκατοντάδες και χιλιάδες περιπτώσεις χρήσης.

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

Terraform εναντίον AWS CloudFormation: Διαφορές

Αρθρωτότητα

Όταν χρησιμοποιείτε το IAC σε μεγάλους οργανισμούς, η σπονδυλωτή μπορεί να είναι ένας μεγάλος παράγοντας για την επιλογή του σωστού εργαλείου.

  Roblox Banana Eats Codes: Redeem Now

CloudFormation

Το CloudFormation δεν διαθέτει εγγενή υποστήριξη για λειτουργικές μονάδες. Σας επιτρέπει να χρησιμοποιείτε κάτι που λέγεται ένθετες στοίβες ως ενότητες.

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

Υπάρχει επίσης μια λιγότερο γνωστή υπηρεσία AWS, η Κατάλογος υπηρεσιών AWS που μπορεί να σας βοηθήσει με την αρθρωτή διαμόρφωση του AWS CloudFormation. Ο Κατάλογος Υπηρεσιών είναι μια υπηρεσία AWS που έχει σχεδιαστεί ειδικά για οργανισμούς που θέλουν να περιορίσουν το εύρος των Υπηρεσιών AWS ώστε να πληρούν τις απαιτήσεις συμμόρφωσης, ασφάλειας, κόστους ή απόδοσης. Και μάντεψε τι? Ο Κατάλογος Υπηρεσιών AWS χρησιμοποιεί πρότυπα CloudFormation στο backend.

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

Εάν δεν θέλετε οι χρήστες να πρέπει να χρησιμοποιούν αυτό το τυπικό πρότυπο ως ένθετη στοίβα, μπορείτε να χρησιμοποιήσετε τον Κατάλογο υπηρεσιών AWS. Ο Κατάλογος υπηρεσιών θα επιτρέπει στους χρήστες να χρησιμοποιούν αυτό το τυπικό πρότυπο από τη διεπαφή χρήστη της κονσόλας και να καθορίζουν ορισμένες παραμέτρους, για μικρές προσαρμογές. Αυτό θα σας επιτρέψει να ελέγχετε τον τρόπο με τον οποίο παρέχεται η υποδομή στους λογαριασμούς σας AWS και να αποτρέπετε τυχόν ανεπιθύμητα σενάρια.

Terraform

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

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

Προσωπικά, θα προτιμούσα να χρησιμοποιήσω το Terraform έναντι του CloudFormation, εάν η αρθρωτή διάταξη ήταν μεγάλη απαίτηση.

Η χρήση μιας ένθετης στοίβας στο CloudFormation δεν είναι τόσο εύκολη όσο η χρήση λειτουργικών μονάδων στο Terraform. Ο κύριος παράγοντας είναι ότι η μετάδοση δεδομένων από ένα πρότυπο CFN στην ένθετη στοίβα μπορεί να είναι αρκετά περίπλοκη.

  Πώς να αλλάξετε την εικόνα του προφίλ σας στο Gmail

Δεν υπάρχει τυπικό μέρος όπου μπορούν να κοινοποιηθούν τα πρότυπα CloudFormation. Έχετε τον Κατάλογο υπηρεσιών AWS, αλλά αυτός είναι απλώς ένας τρόπος για να επιβάλλετε ορισμένους κανόνες για τη δημιουργία υποδομής μέσω της Κονσόλας. Είμαστε όλοι για κώδικα. Όταν χρησιμοποιείτε τον Κατάλογο υπηρεσιών, παρόλο που ορισμένες πολύπλοκες εργασίες ενσωματώνονται σε αρχεία CloudFormation, πρέπει να περάσετε από τη μη αυτόματη εργασία για να μεταβείτε στην κονσόλα και να καθορίσετε παραμέτρους για να δημιουργήσετε την Υποδομή σας.

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

Έλεγχος και διακυβέρνηση στις Υποδομές

Αν θέλετε να περιορίσετε τους πόρους που μπορούν να δημιουργήσουν οι άνθρωποι σας στους λογαριασμούς σας AWS: Τόσο το AWS CloudFormation όσο και το Terraform σας παρέχουν τα μέσα για να το κάνετε.

Ας μιλήσουμε πρώτα για το CloudFormation. Το CloudFormation από μόνο του δεν προσφέρει κανέναν έλεγχο σχετικά με τον τρόπο χρήσης των προτύπων, αλλά μπορείτε να χρησιμοποιήσετε τις πολιτικές AWS IAM για να επιτρέψετε μόνο στους χρήστες του λογαριασμού σας AWS να χρησιμοποιούν μόνο τα τυπικά πρότυπα CloudFormation για τη δημιουργία πόρων. Στο παράδειγμα του κάδου S3, ίσως θέλετε να περιορίσετε όλες τις άδειες “S3 Create” για τους χρήστες και να τους επιτρέψετε να δημιουργήσουν κουβάδες S3 μόνο από τον Κατάλογο υπηρεσιών AWS ή τις ένθετες στοίβες.

Το Terraform σάς επιτρέπει να ελέγχετε ποιους πόρους μπορούν να δημιουργήσουν οι χρήστες σας χρησιμοποιώντας μια πολιτική ως εργαλείο κώδικα Φρουρός. Το Sentinel σάς επιτρέπει να επιβάλλετε αυστηρές πολιτικές βασισμένες στη λογική για να επιτρέπετε ή να απορρίπτετε ενέργειες χρήστη μέσω Terraform. Για παράδειγμα, μπορείτε να αρνηθείτε όλους τους πόρους που δημιουργούν κάδους S3 και να επιτρέψετε στους χρήστες να δημιουργήσουν κάδους S3 μόνο από μια τυπική λειτουργική μονάδα.

Κρατική Διοίκηση

Τόσο το AWS CloudFormation όσο και το Terraform πρέπει να παρακολουθούν τους πόρους που διατηρούν.

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

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

Τόσο, το AWS CloudFormation όσο και το Terraform έχουν ένα μέσο για να ελέγξετε ποιες αλλαγές πρόκειται να γίνουν στην υποδομή σας. Στο Terraform, μπορείτε να εκτελέσετε μια εντολή – “terraform plan” και πώς η Terraform σχεδιάζει να εφαρμόσει τις αλλαγές διαμόρφωσης σας. Στο CloudFormation οι χρήστες μπορούν να δουν αυτές τις πληροφορίες μέσω της αλλαγής συνόλων.

  Πώς να χρησιμοποιήσετε το Couchpotato για λήψη ταινιών

Γλώσσα

Η Terraform χρησιμοποιεί τη γλώσσα διαμόρφωσης HashiCorp, HCL, μια γλώσσα που δημιουργήθηκε από τη HashiCorp. Είναι πολύ παρόμοιο με το JSON με πρόσθετες ενσωματωμένες δυνατότητες και δυνατότητες.

Τα πρότυπα CloudFormation είναι γραμμένα σε μορφές YAML ή JSON

Καταγραφή και ανατροπές

Τόσο το AWS CloudFormation όσο και το Terraform έχουν καλές δυνατότητες καταγραφής. Από την εμπειρία μου, τα σφάλματα και τα ζητήματα ήταν ξεκάθαρα (ως επί το πλείστον).

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

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

Πεδίο εφαρμογής

Το Terraform δεν περιορίζεται στο AWS Cloud. Ο πιο σημαντικός παράγοντας κατά την επιλογή μεταξύ Terraform και CloudFormation είναι ότι η Terraform υποστηρίζει άλλους παρόχους και υπηρεσίες cloud.

Επομένως, εάν σκοπεύετε να χρησιμοποιήσετε το IAC για πολλαπλές πλατφόρμες cloud, το Terraform είναι η καλύτερη επιλογή σας. Το CloudFormation, αν και ένα ισχυρό εργαλείο, περιορίζεται μόνο στο AWS. Χρησιμοποιώντας το Terraform, μπορείτε να ρυθμίσετε την υποδομή και να αναπτύξετε την εφαρμογή σας σε πολλές πλατφόρμες cloud, κάνοντας έτσι την εφαρμογή σας πιο διαθέσιμη και ισχυρή.

Υποστήριξη δυνατοτήτων

Συνήθως, καθώς το AWS κυκλοφορεί νέες υπηρεσίες και δυνατότητες, το CloudFormation θα ενημερώνεται πριν από το Terraform, καθώς είναι υπηρεσία AWS. Προς το παρόν, και τα δύο εργαλεία καλύπτουν τις περισσότερες από τις υπηρεσίες και τις δυνατότητες αυτών των υπηρεσιών. Αυτό μπορεί να είναι ένα μικρό μειονέκτημα της χρήσης Terraform, ωστόσο, έχουμε μια λύση.

Υπάρχει επίσης η δυνατότητα να δημιουργήσετε μια στοίβα CloudFormation μέσα στον κώδικα Terraform. Έτσι, εάν χρησιμοποιείτε το Terraform και δεν έχει δυνατότητα, μπορείτε να ρυθμίσετε προσωρινά μια στοίβα CloudFormation μέσα στον κώδικα Terraform.

Τεχνική υποστήριξη

Το πρόγραμμα τεχνικής υποστήριξης επί πληρωμή AWS καλύπτει επίσης την υποστήριξη CloudFormation.

Η HashiCorp έχει πληρώσει σχέδια για τεχνική υποστήριξη και στο Terraform.

συμπέρασμα

Τόσο το AWS CloudFormation όσο και το Terraform είναι ισχυρά και πλήρως ανεπτυγμένα εργαλεία. Οι παραπάνω διαφορές θα σας βοηθήσουν να πάρετε μια τεκμηριωμένη απόφαση να επιλέξετε το εργαλείο με βάση τις απαιτήσεις σας. Ως προσωπική πρόταση, εάν σκοπεύετε να χρησιμοποιήσετε πολλές πλατφόρμες cloud στο μέλλον ή χρησιμοποιείτε πολλά clouds, θα πρέπει να χρησιμοποιήσετε το Terraform ως one-stop-shop για όλες τις ανάγκες σας. Αν ψάχνετε για ένα εργαλείο IAC μόνο για AWS, τόσο το AWS CloudFormation όσο και το Terraform είναι δίκαιο παιχνίδι.

Εάν ενδιαφέρεστε να μάθετε Terraform, ρίξτε μια ματιά σε αυτά τα διαδικτυακά μαθήματα.