Βασικές έννοιες

Η επίσημη τεκμηρίωση του Terraform περιγράφει όλες τις πτυχές της διαμόρφωσης με λεπτομέρειεςarrow-up-right. Διαβάστε την προσεκτικά για να κατανοήσετε το υπόλοιπο αυτής της ενότητας.

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

Πόρος

Ως πόρος λογίζεται ένα aws_vpc, ένα aws_db_instance κλπ. Ένας πόρος ανήκει σε έναν πάροχο, δέχεται ορίσματα, εξάγει χαρακτηριστικά και έχει κύκλο ζωής. Ένας πόρος μπορεί να δημιουργηθεί, να ανακτηθεί, να ενημερωθεί και να διαγραφεί.

Μονάδα (module) πόρων

Η μονάδα πόρων είναι μια συλλογή συνδεδεμένων πόρων οι οποίοι εκτελούν από κοινού την κοινή ενέργεια (π.χ. η μονάδα AWS VPC Terraformarrow-up-right δημιουργεί VPC, subnets, NAT gateway κλπ.). Εξαρτάται από τη διαμόρφωση του παρόχου, η οποία μπορεί να οριστεί σε αυτήν ή σε δομές υψηλότερου επιπέδου (π.χ. στη μονάδα υποδομής).

Μονάδα υποδομής

Μια μονάδα υποδομής είναι μια συλλογή από μονάδες πόρων, οι οποίες μπορεί να μην συνδέονται λογικά, αλλά στην τρέχουσα κατάσταση/έργο/ρύθμιση εξυπηρετούν τον ίδιο σκοπό. Καθορίζει τη διαμόρφωση για τους παρόχους, η οποία μεταβιβάζεται στις μεταγενέστερες μονάδες πόρων και στους πόρους. Συνήθως περιορίζεται να δουλεύει σε μία οντότητα ανά λογικό διαχωριστή (π.χ. AWS Region, Google Project).

Για παράδειγμα, η μονάδα terraform-aws-atlantisarrow-up-right χρησιμοποιεί μονάδες πόρων όπως οι terraform-aws-vpcarrow-up-right και terraform-aws-security-grouparrow-up-right για τη διαχείριση της υποδομής που απαιτείται για τη εκτέλεση Atlantisarrow-up-right σε AWS Fargatearrow-up-right.

Ένα άλλο παράδειγμα είναι η μονάδα terraform-aws-cloudqueryarrow-up-right όπου πολλαπλές μονάδες terraform-aws-modulesarrow-up-right χρησιμοποιούνται μαζί για τη διαχείριση της υποδομής καθώς και η χρήση πόρων Docker για τη δημιουργία, την προώθηση και την ανάπτυξη Docker images. Όλα σε ένα σύνολο.

Σύνθεση

Η σύνθεση είναι μια συλλογή μονάδων υποδομής, η οποία μπορεί να εκτείνεται σε διάφορες λογικά διαχωρισμένες περιοχές (π.χ. AWS regions, αρκετοί λογαριασμοί AWS). Η σύνθεση χρησιμοποιείται για να περιγράψει την πλήρη υποδομή που απαιτείται για ολόκληρο τον οργανισμό ή το έργο.

Μια σύνθεση αποτελείται από μονάδες υποδομής, οι οποίες αποτελούνται από μονάδες πόρων, οι οποίες υλοποιούν μεμονωμένους πόρους.

Απλή σύνθεση υποδομής

Πηγή δεδομένων

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

Η πηγή δεδομένων terraform_remote_state λειτουργεί ως «συγκολλητική ουσία» για μονάδες και συνθέσεις υψηλότερου επιπέδου.

Η εξωτερικήarrow-up-right πηγή δεδομένων επιτρέπει σε ένα εξωτερικό πρόγραμμα να ενεργεί ως πηγή δεδομένων, εκθέτοντας αυθαίρετα δεδομένα για χρήση αλλού στην διαμόρφωση του Terraform. Ακολουθεί ένα παράδειγμα από τη μονάδα terraform-aws-lambdaarrow-up-right όπου το όνομα αρχείου υπολογίζεται με την κλήση ενός εξωτερικού Python script.

Η πηγή δεδομένων httparrow-up-right πραγματοποιεί μια κλήση HTTP GET στη δεδομένη διεύθυνση URL και εξάγει πληροφορίες σχετικά με την απόκριση, η οποία είναι συχνά χρήσιμη για τη λήψη πληροφοριών από endpoints όπου δεν υπάρχει εγγενής πάροχος Terraform.

Απομακρυσμένη κατάσταση

Οι μονάδες υποδομής και οι συνθέσεις θα πρέπει να διατηρούν την Terraform κατάστασή τουςarrow-up-right σε μια απομακρυσμένη τοποθεσία όπου μπορεί να ανακτηθεί από άλλους με ελεγχόμενο τρόπο (π.χ. προσδιορισμός ACL, versioning, logging).

Πάροχος, παροχέας, κλπ.

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

Γιατί είναι τόσο δύσκολο;

Ενώ οι μεμονωμένοι πόροι μοιάζουν με άτομα σε επίπεδο υποδομής, οι μονάδες πόρων μοιάζουν με μόρια (που αποτελούνται από άτομα). Μια μονάδα είναι η μικρότερη εκδοχή οντότητας που μπορεί να διαμοιραστεί. Έχει έναν ακριβή κατάλογο ορισμάτων, υλοποιεί τη βασική λογική μιας τέτοιας μονάδας για να κάνει την απαιτούμενη λειτουργία. π.χ., η μονάδα terraform-aws-security-grouparrow-up-right δημιουργεί τους πόρους aws_security_group και aws_security_group_rule με βάση τo input. Αυτή η μονάδα πόρων από μόνη της μπορεί να χρησιμοποιηθεί μαζί με άλλες μονάδες για τη δημιουργία της μονάδας υποδομής.

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

Η πρόσβαση μεταξύ συνθέσεων πραγματοποιείται συχνά με τη χρήση απομακρυσμένων πηγών δεδομένων κατάστασης. Υπάρχουν πολλοί τρόποι διαμοιρασμού δεδομένων μεταξύ συνθέσεωνarrow-up-right.

Όταν τοποθετούμε τις έννοιες που περιγράφονται παραπάνω σε ψευδοσχέσεις μπορεί να μοιάζει ως εξής:

Last updated