Terraform State Management

Terraform State Management



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

Terraform State

Η τρέχουσα κατάσταση της υποδομής μας, η οποία περιλαμβάνει πληροφορίες σχετικά με τους πόρους που ορίζουμε στον κώδικά μας, καταγράφεται ως κατάσταση Terraform. Το Terraform χρησιμοποιεί αυτήν την κατάσταση για να καθορίσει τις αλλαγές που απαιτούνται για να φέρει την υποδομή μας στην επιθυμητή κατάσταση όταν εκτελείται μια εντολή όπως το Terraform 'apply'. Μετά την εκτέλεση των αλλαγών (δημιουργία, τροποποίηση και διαγραφή), η Terraform ενημερώνει το αρχείο κατάστασης με τη νέα κατάσταση της υποδομής σας.

Για να κατανοήσουμε με σαφήνεια την έννοια, ας πάρουμε ένα παράδειγμα:







πόρος 'τοπικό_αρχείο' 'Γιάννης' {

όνομα αρχείου = '/home/John.txt'

περιεχόμενο = 'Λατρεύω τα κατοικίδια'

}

Εδώ, δημιουργούμε ένα αρχείο Terraform που ονομάζεται 'main.tf'. Μέσα του υπάρχει ένας πόρος τύπου local_file με το όνομα 'John' με δύο χαρακτηριστικά: όνομα αρχείου και περιεχόμενο.



Ο τύπος πόρου local_file χρησιμοποιείται για τη δημιουργία αρχείου στο τοπικό σύστημα αρχείων του μηχανήματος όπου εκτελείται το Terraform. Σε αυτήν την περίπτωση, το αρχείο δημιουργείται με το όνομα 'John.txt' στον κατάλογο '/home' και το περιεχόμενο του αρχείου είναι 'I love pets'.



Τώρα, ας εκτελέσουμε τη ροή Terraform – Terraform init, σχεδίαση και εφαρμογή. Όταν εκτελούμε την εντολή Terraform “apply” στο έργο μας για πρώτη φορά, η Terraform δημιουργεί αυτόματα το αρχείο κατάστασης που ονομάζεται “terraform.tfstate” στον ριζικό κατάλογο του Terraform έργου μας. Περιλαμβάνει όλες τις πληροφορίες σχετικά με την τρέχουσα κατάσταση της υποδομής μας σε μορφή JSON.





Εδώ είναι το αρχείο κατάστασης για τον πόρο που δημιουργήσαμε:



Τώρα, ας υποθέσουμε ότι θέλουμε να καταργήσουμε τον τρέχοντα πόρο και να δημιουργήσουμε έναν άλλο πόρο τύπου random_pet με το όνομα 'my-pet' με χαρακτηριστικά - πρόθεμα, μήκος και διαχωριστικό.

πόρος 'random_pet' 'το κατοικίδιό μου' {

πρόθεμα = 'Κύριος'

μήκος = '1'

διαχωριστικός = '.'

}

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

Όπως φαίνεται στην προηγούμενη εικόνα, όταν εκτελούμε την εντολή Terraform “plan”, δείχνει τις ενέργειες που κάνει η Terraform για να φτάσει στην επιθυμητή κατάσταση. Όταν εκτελούμε την εντολή Terraform “apply”, δημιουργείται ο πόρος “my-pet” και αφαιρείται ο πόρος “John”. Επίσης, το αρχείο κατάστασης ενημερώνεται καταστρέφοντας τα μεταδεδομένα του πόρου local_file και προσθέτοντας τα μεταδεδομένα του πόρου random_pet.

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

Πώς λειτουργεί το Terraform the Manage State;

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

Το Terraform υποστηρίζει πολλά ενσωματωμένα backend, όπως το τοπικό, το Amazon S3, το HashiCorp Consul, το Vault και το Azure Storage. Μπορούμε επίσης να δημιουργήσουμε ένα προσαρμοσμένο backend εάν καμία από τις ενσωματωμένες επιλογές δεν ικανοποιεί τις ανάγκες.

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

Σημασία της κρατικής διαχείρισης

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

Προσδιορίστε την τρέχουσα κατάσταση της υποδομής σας

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

Παρακολουθήστε τις αλλαγές στην υποδομή με την πάροδο του χρόνου

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

Αυτοματοποίηση

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

Διαχείριση εξαρτήσεων

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

Αποκατάστασης καταστροφών

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

Βέλτιστες πρακτικές για την αποτελεσματική διαχείριση του κράτους

Ακολουθούν ορισμένες συμβουλές που μπορούμε να ακολουθήσουμε για να διαχειριστούμε αποτελεσματικά τις πολιτείες:

Χρησιμοποιήστε ένα Remote Backend

Ένα απομακρυσμένο backend παρέχει πολλά πλεονεκτήματα σε σχέση με ένα τοπικό backend. Επιτρέπει σε πολλούς χρήστες να εργάζονται στην ίδια υποδομή και προσφέρουν επίσης καλύτερη ασφάλεια και αξιοπιστία από τα τοπικά backend.

Ενεργοποίηση έκδοσης

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

Χρησιμοποιήστε μηχανισμό κλειδώματος

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

Δημιουργήστε αντίγραφα ασφαλείας του αρχείου κατάστασης

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

συμπέρασμα

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