Τι είναι το Packer;
Πως δουλεύει
Χρήση Packer
Καθορισμός περιοχής, σχεδίου και λειτουργικού συστήματος
Τι είναι το Packer;
Το Packer είναι ένα εργαλείο απεικόνισης διακομιστή που αναπτύχθηκε από τη HashiCorp. Απεικόνιση διακομιστή? ή εναλλακτικά, αμετάβλητη υποδομή. είναι μια δημοφιλής εναλλακτική λύση στα εργαλεία διαμόρφωσης χρόνου εκτέλεσης, όπως το Ansible ή το Puppet. Βασίζεται στην ιδέα ότι μόλις αναπτυχθεί ένας διακομιστής, δεν θα τον αλλάξετε ποτέ. Αντίθετα, αναπτύσσετε έναν νέο διακομιστή με τις αλλαγές σας και, στη συνέχεια, καταρρίπτετε τον παλιό. Αυτό διευκολύνει τη συντήρηση του διακομιστή και σας επιτρέπει να κλιμακώνεστε πιο αποτελεσματικά σε μεγάλο αριθμό μηχανημάτων.
Αν και το Packer δεν υποστηρίζει το Vultr out of the box, υπάρχει μια προσθήκη που προσθέτει αυτήν την υποστήριξη. Οδηγίες για την εγκατάσταση του Packer με υποστήριξη Vultr μπορείτε να βρείτε στο README της προσθήκης. Το υπόλοιπο αυτού του άρθρου προϋποθέτει ότι έχετε εγκαταστήσει το Packer, καθώς και την προσθήκη Vultr.
Πως δουλεύει
Ο σκοπός του Packer είναι να παράγει εικόνες διακομιστή ή τεχνουργήματα που μπορούν να χρησιμοποιηθούν για τη δημιουργία ενός νέου διακομιστή ακριβώς όπως ήταν την εποχή της απεικόνισης. Για το Vultr, αυτά τα τεχνουργήματα ονομάζονται Στιγμιότυπα. Το πρόσθετο λειτουργεί αναπτύσσοντας ένα νέο VPS, τρέχοντας τους καθορισμένους προμηθευτές σας σε αυτό, δημιουργώντας ένα στιγμιότυπο του και, στη συνέχεια, καταστρέφοντας το VPS. Όταν θέλετε να δημιουργήσετε έναν νέο διακομιστή από την εικόνα σας, απλώς καλέστε το API του Vultr για να αναπτύξετε ένα νέο VPS με το επιθυμητό Στιγμιότυπο ως λειτουργικό σύστημα.
Χρήση Packer
Ο Packer παίρνει ένα αρχείο JSON που ορίζει το build που πρέπει να εκτελείται ως είσοδος. Ακολουθεί ένα δείγμα αρχείου που ορίζει μια έκδοση Vultr:
{
"variables": {
"vultr_api_key": "{{env `VULTR_API_KEY`}}"
},
"builders": [
{
"type": "vultr",
"api_key": "{{user `vultr_api_key`}}",
"snapshot_description": "My Awesome App",
"region_id": "2",
"plan_id": "201",
"os_id": "167",
"ssh_username": "root"
}
]
}
Αυτό το αρχείο έχει δύο κλειδιά ανώτατου επιπέδου variablesκαι builders. Το variablesκλειδί χρησιμοποιείται για τον ορισμό προσαρμοσμένων μεταβλητών και σε αυτήν την περίπτωση χρησιμοποιείται για την ενσωμάτωση της VULTR_API_KEYμεταβλητής περιβάλλοντος με τρόπο που μπορεί να χρησιμοποιηθεί αργότερα. Το buildersκλειδί περιέχει μια λίστα με εκδόσεις προς εκτέλεση, σε αυτήν την περίπτωση μόνο την έκδοση Vultr. Ας αναλύσουμε λίγο αυτή τη δομή:
type: Αυτό ορίζει το πρόγραμμα δημιουργίας που θα χρησιμοποιηθεί πραγματικά και για τις εκδόσεις Vultr αυτό θα πρέπει πάντα να είναι vultr.
api_key: Για να εκτελέσετε το build, χρειάζεστε ένα κλειδί API, το οποίο ορίζεται εδώ. Αυτό το παράδειγμα την ορίζει ως την τιμή της vultr_api_keyμεταβλητής χρήστη, η οποία πιο πάνω ορίζεται στην τιμή της VULTR_API_KEYμεταβλητής περιβάλλοντος.
snapshot_description: Η περιγραφή του στιγμιότυπου που προκύπτει.
region_id: Η περιοχή στην οποία θα αναπτυχθεί ένα VPS. Αυτό δεν επηρεάζει το τελικό στιγμιότυπο, μόνο τον διακομιστή από τον οποίο δημιουργείται το στιγμιότυπο.
plan_id: Το σχέδιο που θα χρησιμοποιηθεί για το VPS. Οι μελλοντικές χρήσεις αυτού του στιγμιότυπου πρέπει να καθορίσουν ένα σχέδιο που είναι τουλάχιστον τόσο μεγάλο.
os_id: Το λειτουργικό σύστημα στο οποίο βασίζεται το στιγμιότυπο.
ssh_username: Το όνομα χρήστη που θα χρησιμοποιηθεί κατά την εισαγωγή του SSH στον διακομιστή για παροχή. Για διακομιστές Linux, αυτό θα είναι συνήθως root.
Για να το χρησιμοποιήσετε, αποθηκεύστε αυτό το αρχείο με ένα όνομα όπως server.jsonκαι, στη συνέχεια, εκτελέστε την εντολή packer build server.json. Θα δείτε κάποια έξοδο που υποδεικνύει την κατάσταση της κατασκευής, η οποία θα διαρκέσει μερικά λεπτά.
Όταν εκτελείτε αυτό το build, ένας νέος διακομιστής με το όνομα Snapshotting: My Awesome Appθα δημιουργηθεί, θα ληφθεί στιγμιότυπο και στη συνέχεια θα καταστραφεί. Χωρίς να έχουν καθοριστεί προμηθευτές, αυτό είναι το μόνο που συμβαίνει. Για περισσότερες πληροφορίες σχετικά με τον ορισμό παρόχων, ανατρέξτε στην τεκμηρίωση του Packer .
Μόλις ολοκληρωθεί η κατασκευή, ο Packer θα εμφανίσει το αναγνωριστικό του στιγμιότυπου που προκύπτει.
Καθορισμός περιοχής, σχεδίου και λειτουργικού συστήματος
Αυτές οι τρεις τιμές απαιτούνται για κάθε κατασκευή Vultr, αλλά μπορούν να οριστούν με έναν από τους διάφορους τρόπους. Για κάθε ένα, θα πρέπει να καθορίσετε ακριβώς μία από τις παραλλαγές του, προκειμένου να αποφευχθεί η ασάφεια:
Περιοχή
Μπορείτε να αναζητήσετε πληροφορίες για την περιοχή μέσω του API: https://www.vultr.com/api/#regions_region_list
region_id: Η ταυτότητα της περιοχής, π.χ 2
region_code: Ο κωδικός της περιοχής, π.χ ORD
Σχέδιο
Μπορείτε να αναζητήσετε πληροφορίες για το σχέδιο μέσω του API: https://www.vultr.com/api/#plans_plan_list
plan_id: Η ταυτότητα του σχεδίου, π.χ 201
OS
Μπορείτε να αναζητήσετε πληροφορίες για το λειτουργικό σύστημα μέσω του API: https://www.vultr.com/api/#os_os_list
os_id: Το αναγνωριστικό του ΛΣ, π.χ 167