All pages
Powered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Παραδείγματα δομής κώδικα

Δομές κώδικα Terraform

Αυτά τα παραδείγματα δείχνουν τον πάροχο AWS, αλλά η πλειονότητα των αρχών που παρουσιάζονται στα παραδείγματα μπορούν να εφαρμοστούν σε άλλους παρόχους δημόσιου cloud καθώς και σε άλλα είδη παρόχων (DNS, DB, Monitoring κ.λπ.).

Τυπος
Περιγραφή
Ετοιμότητα

Λίγοι πόροι, χωρίς εξωτερικές εξαρτήσεις. Ενιαίος λογαριασμός AWS. Μία μόνο περιοχή. Ενιαίο περιβάλλον.

Ναι

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

Ναι

Πολλοί λογαριασμοί AWS, πολλά regions, επείγουσα ανάγκη μείωσης της αντιγραφής-επικόλλησης, προσαρμοσμένες ενότητες υποδομής, έντονη χρήση συνθέσεων. Χρήση της Terraform.

Σε εξέλιξη

πολύ μεγάλος

Εγκαταστάσεις πολλαπλών παρόχων cloud. Χρήση της Terraform.

Όχι

Δομές κώδικα Terragrunt

Τύπος
Περιγραφή
Ετοιμότητα

μεσαίος

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

Όχι

μεγάλος

Πολλοί λογαριασμοί AWS, πολλά regions, επείγουσα ανάγκη μείωσης της αντιγραφής-επικόλλησης, προσαρμοσμένες ενότητες υποδομής, έντονη χρήση συνθέσεων. Χρήση της Terragrunt.

Όχι

πολύ μεγάλος

Διάφοροι πάροχοι (AWS, GCP, Azure). Εγκαταστάσεις πολλαπλών cloud. Χρήση της Terragrunt.

Όχι

μικρός
μεσαίος
μεγάλος

Υποδομή μεσαίου μεγέθους με Terraform

Πηγή: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraform

Αυτό το παράδειγμα περιέχει κώδικα ως παράδειγμα δόμησης των ρυθμίσεων Terraform για μια μεσαίου μεγέθους υποδομή που χρησιμοποιεί:

  • 2 λογαριασμούς AWS

  • 2 ξεχωριστά περιβάλλοντα (prod και stage που δεν διαμοιράζονται τίποτα). Κάθε περιβάλλον ζει σε ξεχωριστό λογαριασμό AWS

  • Κάθε περιβάλλον χρησιμοποιεί διαφορετική έκδοση της έτοιμης μονάδας υποδομής (alb) που προέρχεται από το Terraform registry

  • Κάθε περιβάλλον χρησιμοποιεί την ίδια έκδοση μιας εσωτερικής μονάδας modules/network, καθώς προέρχεται από έναν τοπικό κατάλογο.

  • Ιδανικό για έργα όπου η υποδομή διαχωρίζεται λογικά (ξεχωριστοί λογαριασμοί AWS)

  • Καλό όταν δεν υπάρχει ανάγκη τροποποίησης πόρων που διαμοιράζονται μεταξύ λογαριασμών AWS (ένα περιβάλλον = ένας λογαριασμός AWS = ένα αρχείο κατάστασης)

  • Καλό όταν δεν υπάρχει ανάγκη ενορχήστρωσης των αλλαγών μεταξύ των περιβαλλόντων

  • Καλό όταν οι πόροι υποδομής είναι διαφορετικοί ανά περιβάλλον επίτηδες και δεν μπορούν να γενικευτούν (π.χ. κάποιοι πόροι απουσιάζουν από ένα περιβάλλον ή από ορισμένες περιοχές)

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

Υποδομή μικρού μεγέθους με Terraform

Πηγή: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform

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

  • Ιδανικό για να ξεκινήσετε και να αναδιαμορφώσετε καθώς προχωράτε

  • Ιδανικό για μικρές ενότητες πόρων

  • Καλό για μικρές και γραμμικές ενότητες υποδομής (π.χ. terraform-aws-atlantis)

  • Καλό για μικρό αριθμό πόρων (λιγότερους από 20-30)

Το ενιαίο αρχείο κατάστασης για όλους τους πόρους μπορεί να κάνει τη διαδικασία εργασίας με το Terraform αργή αν ο αριθμός των πόρων αυξάνεται (εξετάστε το ενδεχόμενο να χρησιμοποιήσετε ένα όρισμα -target για να περιορίσετε τον αριθμό των πόρων)

Υποδομή μεγάλου μεγέθους με Terraform

Πηγή:

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

  • 2 λογαριασμούς AWS

  • 2 regions

  • 2 ξεχωριστά περιβάλλοντα (prod και stage που δεν διαμοιράζονται τίποτα). Κάθε περιβάλλον ζει σε ξεχωριστό λογαριασμό AWS και καλύπτει πόρους μεταξύ 2 regions

  • Κάθε περιβάλλον χρησιμοποιεί διαφορετική έκδοση της έτοιμης μονάδας υποδομής (alb) που προέρχεται από το .

  • Κάθε περιβάλλον χρησιμοποιεί την ίδια έκδοση μιας εσωτερικής μονάδας modules/network, καθώς προέρχεται από έναν τοπικό κατάλογο.

Σε ένα μεγάλο έργο όπως αυτό που περιγράφεται εδώ, τα οφέλη από τη χρήση της Terragrunt γίνονται πολύ ορατά. Ανατρέξτε στην ενότητα .

  • Ιδανικό για έργα όπου η υποδομή είναι λογικά διαχωρισμένη (ξεχωριστοί λογαριασμοί AWS)

  • Καλό όταν δεν υπάρχει ανάγκη τροποποίησης πόρων που διαμοιράζονται μεταξύ λογαριασμών AWS (ένα περιβάλλον = ένας λογαριασμός AWS = ένα αρχείο κατάστασης)

  • Καλό όταν δεν υπάρχει ανάγκη για την ενορχήστρωση των αλλαγών μεταξύ των περιβαλλόντων

  • Καλό όταν οι πόροι υποδομής είναι διαφορετικοί ανά περιβάλλον επίτηδες και δεν μπορούν να γενικευτούν (π.χ. κάποιοι πόροι απουσιάζουν από ένα περιβάλλον ή από ορισμένες περιοχές)

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

https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform
Terraform Registry
Παραδείγματα Δομών Κώδικα με Terragrunt

Terragrunt

Terraform

Τα παρακάτω είναι τα άρθρα αυτής της ενότητας:

Υποδομή μικρού μεγέθους με Terraform

Υποδομή μεσαίου μεγέθους με Terraform

Υποδομή μεγάλου μεγέθους με Terraform