Συμβάσεις ονοματοδοσίας
Last updated
Last updated
Χρησιμοποιήστε _
(υπογράμμιση) αντί για -
(παύλα) παντού (σε ονόματα πόρων, ονόματα πηγών δεδομένων, ονόματα μεταβλητών, εξόδους κλπ.).
Προτιμήστε να χρησιμοποιείτε πεζά γράμματα και αριθμούς (παρόλο που υποστηρίζεται το UTF-8).
Μην επαναλαμβάνετε τον τύπο του πόρου στο όνομα του πόρου (ούτε μερικώς ούτε πλήρως):
Το όνομα του πόρου θα πρέπει να ονομάζεται this
εάν δεν υπάρχει πιο περιγραφικό και γενικό όνομα ή εάν η μονάδα πόρων δημιουργεί έναν μόνο πόρο αυτού του τύπου (π.χ. στη υπάρχει ένας μόνο πόρος τύπου aws_nat_gateway
και πολλαπλοί πόροι τύπου aws_route_table
, οπότε το aws_nat_gateway
θα πρέπει να ονομάζεται this
και το aws_route_table
θα πρέπει να έχει πιο περιγραφικά ονόματα - όπως private
, public
, database
).
Χρησιμοποιείτε πάντα ουσιαστικά στον ενικό αριθμό για τα ονόματα.
Χρησιμοποιήστε -
μέσα σε τιμές ορισμάτων και σε σημεία όπου η τιμή θα είναι εκτεθειμένη σε άνθρωπο (π.χ. μέσα στο όνομα DNS του RDS instance).
Συμπεριλάβετε το όρισμα count
/ for_each
μέσα σε μπλοκ πόρων ή πηγής δεδομένων ως το πρώτο όρισμα στην κορυφή και διαχωρίστε το με νέα γραμμή μετά από αυτό.
Συμπεριλάβετε το όρισμα tags
, εάν υποστηρίζεται από τον πόρο, ως το τελευταίο πραγματικό όρισμα, ακολουθούμενο από τα depends_on
και lifecycle
, εάν είναι απαραίτητο. Όλα αυτά θα πρέπει να διαχωρίζονται με μία κενή γραμμή.
Όταν χρησιμοποιείτε συνθήκες/conditions σε ένα argument count
/ for_each
προτιμήστε boolean τιμές αντί να χρησιμοποιείτε length
ή άλλες εκφράσεις.
πόρου
count
/ for_each
ετικετών
/tags
count
Μην ανακαλύπτετε ξανά τον τροχό στις μονάδες πόρων: χρησιμοποιήστε το όνομα
/name
, την περιγραφή
/description
και την προεπιλεγμένη
/default
τιμή για τις μεταβλητές όπως ορίζονται στην ενότητα «Αναφορά ορίσματος» για τον πόρο με τον οποίο εργάζεστε.
Η υποστήριξη για επικύρωση σε μεταβλητές είναι μάλλον περιορισμένη (π.χ. δεν μπορεί να έχει πρόσβαση σε άλλες μεταβλητές ή να κάνει αναζητήσεις). Προγραμματίστε αναλόγως, διότι σε πολλές περιπτώσεις αυτή η λειτουργία είναι άχρηστη.
Χρησιμοποιήστε τον πληθυντικό αριθμό στο όνομα μιας μεταβλητής όταν ο τύπος είναι list(...)
ή map(...)
.
Ταξινομήστε τα κλειδιά σε ένα μπλοκ μεταβλητών ως εξής: περιγραφή
/description
, τύπος
/type
, προεπιλογή
/default
, επικύρωση
/validation
.
Περιλαμβάνετε πάντα περιγραφή
/description
σε όλες τις μεταβλητές ακόμα και αν νομίζετε ότι είναι προφανές (θα σας χρειαστεί στο μέλλον).
Προτιμήστε τη χρήση απλών τύπων (number
, string
, list(...)
, map(...)
, any
) έναντι ειδικών τύπων όπως object()
εκτός αν χρειάζεται να έχετε αυστηρούς περιορισμούς σε κάθε κλειδί.
Χρησιμοποιήστε συγκεκριμένους τύπους όπως map(map(string))
αν όλα τα στοιχεία του map έχουν τον ίδιο τύπο (π.χ. string
) ή μπορούν να μετατραπούν σε αυτόν (π.χ. ο τύπος number
μπορεί να μετατραπεί σε string
).
Χρησιμοποιήστε τύπο any
για να απενεργοποιήσετε την επικύρωση τύπου ξεκινώντας από ένα συγκεκριμένο βάθος ή όταν πρέπει να υποστηρίζονται πολλαπλοί τύποι.
Η τιμή {}
είναι μερικές φορές ένα map αλλά μερικές φορές ένα αντικείμενο. Χρησιμοποιήστε το tomap(....)
για να φτιάξετε ένα map επειδή δεν υπάρχει τρόπος να φτιάξετε ένα αντικείμενο.
Κάντε τα outputs συνεπή και κατανοητά εκτός του πεδίου εφαρμογής της (όταν ένας χρήστης χρησιμοποιεί μια μονάδα θα πρέπει να είναι προφανές τι τύπο και τι ιδιότητα έχει η τιμή που επιστρέφει).
Το όνομα του output θα πρέπει να περιγράφει την ιδιότητα που περιέχει και να είναι λιγότερο «ελεύθερο» από ό,τι θα θέλατε κανονικά.
Μια καλή δομή για το όνομα του output μοιάζει με {name}_{type}_{attribute}
, όπου:
{name}
είναι ένα όνομα πόρου ή πηγής δεδομένων χωρίς πρόθεμα παρόχου. Το {name}
για το aws_subnet
είναι το subnet
, για το aws_vpc
είναι το vpc
.
{type}
είναι ο τύπος μιας πηγής πόρων.
{attribute}
είναι ένα χαρακτηριστικό που επιστρέφεται από το output
Πάντα να περιλαμβάνετε περιγραφή
/description
για όλα τα outputs ακόμα και αν νομίζετε ότι είναι προφανής.
Αποφύγετε να ορίσετε ευαίσθητο
/sensitive
όρισμα εκτός αν ελέγχετε πλήρως τη χρήση αυτού του output σε όλα τα σημεία σε όλες τις μονάδες.
Προτιμήστε την try()
(διαθέσιμη από το Terraform 0.13) έναντι της element(concat(...))
(παλαιότερη προσέγγιση για την έκδοση πριν την 0.13)
output
Επιστρέψτε το πολύ ένα ID τoυ security group
Όταν υπάρχουν πολλαπλοί πόροι του ίδιου τύπου, το this
θα πρέπει να παραλείπεται στο όνομα τoυ output:
.
Εάν το output επιστρέφει μια τιμή με συναρτήσεις παρεμβολής/interpolation functions και πολλαπλούς πόρους, τα {name}
και {type}
εκεί θα πρέπει να είναι όσο το δυνατόν πιο γενικά (το this
ως πρόθεμα θα πρέπει να παραλείπεται). .
Αν η επιστρεφόμενη τιμή είναι μια λίστα θα πρέπει να έχει όνομα στον πληθυντικό. .