Pulumi: γράφεις την υποδομή, δεν τη στήνεις με κλικ
Το Pulumi είναι ένα εργαλείο γραμμής εντολών που σε αφήνει να περιγράφεις και να στήνεις cloud υποδομή με κώδικα αντί με χειροκίνητα κλικ. Στη δοκιμή μας το είδαμε να στήνει έργα, να δείχνει πριν αλλάξει κάτι και να κρατά ιστορικό στοίβας και κατάστασης.

Pulumi: γράφεις την υποδομή, δεν τη στήνεις με κλικ
Περίληψη: Το Pulumi είναι ένα εργαλείο γραμμής εντολών που σε αφήνει να περιγράφεις και να στήνεις cloud υποδομή με κώδικα αντί με χειροκίνητα κλικ. Στη δοκιμή μας το είδαμε να στήνει έργα, να δείχνει πριν αλλάξει κάτι και να κρατά ιστορικό στοίβας και κατάστασης.
Στήλη: Αυτοματισμοί
Ετικέτες: υποδομή ως κώδικα, cloud, CLI, Pulumi, automation, DevOps
Δύο λέξεις πρώτα
Αν έχεις κουραστεί να ανοίγεις πέντε κονσόλες και να θυμάσαι σε ποια έβαλες ποιο δίκτυο, το Pulumi σου δίνει έναν πιο καθαρό δρόμο. Γράφεις την υποδομή σε αρχεία, και το εργαλείο τα διαβάζει για να φτιάξει ό,τι λείπει, να αλλάξει ό,τι έσπασε και να καθαρίσει ό,τι δεν χρειάζεσαι πια.
Αυτό είναι το νόημα της υποδομής ως κώδικα. Δεν μιλάμε για απλό script που τρέχει μία φορά. Μιλάμε για μια περιγραφή που γίνεται πηγή αλήθειας. Το ίδιο αρχείο λέει τι θέλεις να υπάρχει, τι όνομα θα έχει, σε ποια περιοχή θα ζει και πώς θα δεθούν μεταξύ τους τα κομμάτια. Το Pulumi παίρνει αυτή την περιγραφή και την περνά σε παρόχους cloud, δηλαδή στα προγράμματα που ξέρουν να μιλούν με κάθε υπηρεσία και να κάνουν τις πραγματικές κλήσεις στο API της.
Σκέψου το σαν σχέδιο εργασίας που δεν μένει στο χαρτί. Αντί να στήνεις έναν server, μια βάση και ένα δίκτυο με ξεχωριστά βήματα σε διαφορετικά περιβάλλοντα, γράφεις την πρόθεση μία φορά. Μετά το Pulumi μπορεί να δείξει τι θα αλλάξει, να το εφαρμόσει και να το αφαιρέσει όταν τελειώσεις. Για αυτό το βρίσκεις δίπλα σε ομάδες που θέλουν επαναληψιμότητα, αλλά και δίπλα σε ανθρώπους που βαρέθηκαν να ψάχνουν ποιο κουμπί πάτησαν χτες.
Κι αυτό γλιτώνει και την τριβή της καθημερινότητας. Δεν χρειάζεται να θυμάσαι ποιος έκανε το τελευταίο κλικ σε μια κονσόλα, ούτε να ξαναστήνεις από την αρχή το ίδιο πράγμα σε δεύτερο περιβάλλον επειδή το πρώτο έγινε άναρχο. Η περιγραφή μένει ίδια και λειτουργεί σαν κοινό σημείο αναφοράς. Αν κάτι άλλαξε χτες, το βλέπεις στο σχέδιο και όχι μόνο στη μνήμη κάποιου που «το είχε φτιάξει εκείνος». Αυτό βοηθά όταν η ομάδα μεγαλώνει, αλλά και όταν δουλεύεις μόνος και γυρίζεις στο έργο μετά από μέρες.
Τι κάνει
Το Pulumi οργανώνει υποδομή σε stacks, δηλαδή σε ξεχωριστές εκδόσεις του ίδιου έργου για διαφορετικό σκοπό ή περιβάλλον. Ένα stack μπορεί να είναι για δοκιμή, ένα άλλο για παραγωγή. Έτσι δεν μπερδεύεις τα προσωρινά πράγματα με τα ζωντανά. Κάθε stack κρατά τη δική του κατάσταση, δηλαδή το αρχείο που θυμάται τι υπάρχει ήδη και πώς συνδέεται.
Η κατάσταση είναι η μνήμη του έργου. Χωρίς αυτήν, το εργαλείο θα έβλεπε κάθε φορά έναν άδειο κόσμο και θα προσπαθούσε να ξαναχτίσει τα πάντα από την αρχή. Με αυτήν, ξέρει τι υπάρχει ήδη, τι έχει μετονομαστεί, τι πρέπει να μείνει και τι πρέπει να φύγει. Αυτό είναι το κλειδί. Δεν γράφεις απλώς «φτιάξε έναν server». Γράφεις το επιθυμητό τέλος και αφήνεις το εργαλείο να συγκρίνει αυτό που υπάρχει με αυτό που θέλεις να υπάρχει. Εκεί κερδίζεις έλεγχο, γιατί η διαφορά ανάμεσα στην τρέχουσα εικόνα και στην επιθυμητή εικόνα γίνεται ο χάρτης της αλλαγής.
Το χρήσιμο εδώ είναι ότι το Pulumi δεν σου ζητά να μάθεις ένα καινούργιο ψεύτικο λεξιλόγιο μόνο και μόνο επειδή μιλάς για υποδομή. Μπορείς να γράψεις σε TypeScript, JavaScript, Python, Go, C#/.NET, Java ή YAML. Στη δοκιμή μας ο κατάλογος υποεντολών έδειχνε ότι το εργαλείο δουλεύει σαν κανονικό CLI και όχι σαν κλειστό περιβάλλον. Αυτό βοηθά όταν θέλεις μια ροή που χωράει σε editor, σε συνεχές integration και σε τερματικό χωρίς να αλλάζεις συνήθειες.
Μια απλή ροή το δείχνει καθαρά. Γράφεις το έργο, κοιτάς το preview, εφαρμόζεις την αλλαγή και μετά μαζεύεις ό,τι έστησες όταν τελειώσεις. Στην πράξη αυτό σημαίνει ότι πρώτα περιγράφεις τον στόχο, έπειτα βλέπεις αν ο στόχος ταιριάζει με την πραγματικότητα, μετά δίνεις το οκ για να γίνει η αλλαγή και στο τέλος καθαρίζεις. Δεν είναι μόνο θέμα ευκολίας. Είναι τρόπος να αποφεύγεις τις εκπλήξεις που κοστίζουν χρόνο και λάθη.
Ένα δεύτερο πράγμα που κάνει σωστά είναι ο έλεγχος πριν την αλλαγή. Η εντολή preview διαβάζει την τρέχουσα κατάσταση και το σχέδιο που έχεις γράψει και δείχνει τι θα γίνει αν προχωρήσεις. Αυτό είναι το σημείο που σώζει χρόνο και ζημιές. Αν το σχέδιο δεν είναι σωστό, το βλέπεις πριν ανοίξεις λογαριασμό σε υπηρεσίες που μετά θα πρέπει να μαζεύεις με το χέρι.
Το τρίτο είναι η σύνδεση με πολλούς παρόχους. Ο όρος πάροχος σημαίνει το πακέτο που ξέρει να μιλά σε μια συγκεκριμένη υπηρεσία, όπως AWS, Azure, GCP ή Kubernetes. Το Pulumi έχει εκατοντάδες τέτοιους παρόχους, οπότε δεν μένει δεμένο σε έναν μόνο κόσμο. Αυτό είναι σημαντικό γιατί η πραγματική υποδομή σπάνια ζει σε ένα μόνο cloud ή σε μία μόνο κατηγορία υπηρεσίας.
Το τέταρτο είναι ότι κρατά ιστορικό αλλαγών. Δεν κοιτά μόνο το τελικό αποτέλεσμα. Θυμάται τι ενημερώθηκε, πότε και από ποιον. Για ομάδες αυτό σημαίνει λιγότερες εικασίες όταν κάτι αλλάξει ξαφνικά και αρχίσει το κυνήγι του φταίχτη.
Τι δεν κάνει
Το Pulumi δεν είναι μαγικό κουμπί που φτιάχνει σωστή αρχιτεκτονική από μόνο του. Αν γράψεις κακή περιγραφή, θα πάρεις κακή υποδομή με πιο κομψό τρόπο. Το εργαλείο επιβάλλει ροή, όχι κρίση. Αυτό είναι βασικό, γιατί αλλιώς η υπόσχεση της αυτοματοποίησης γίνεται δικαιολογία για να χτίζεις πιο γρήγορα λάθος πράγματα.
Δεν είναι ούτε απλό shell script που τρέχεις και ξεχνάς το αύριο. Χρειάζεται backend για να αποθηκεύει την κατάσταση. Αυτός ο backend μπορεί να είναι ο λογαριασμός σου στο Pulumi Cloud ή ένα τοπικό αρχείο. Με τοπικό backend θέλει passphrase για να κρατήσει τα μυστικά της κατάστασης. Στη δοκιμή μας το pulumi new σταμάτησε εκεί όταν δεν είχε δοθεί η PULUMI_CONFIG_PASSPHRASE. Με τη μεταβλητή ορισμένη, το pulumi stack init dev προχώρησε.
Δεν είναι επίσης εργαλείο που κρύβει τα μυστικά σου από μόνο του. Τα μυστικά ζουν μέσα στη ροή της κατάστασης και θέλουν προσοχή στο πώς τα αποθηκεύεις και ποιος τα διαβάζει. Αν το δίκτυο, το backend ή τα δικαιώματα είναι πρόχειρα, το Pulumi δεν θα σε σώσει από αυτό.
Τέλος, δεν είναι προϊόν που αντικαθιστά τη γνώση του cloud. Αν δεν ξέρεις τι είναι subnet, policy, role ή region, το Pulumi θα σε βοηθήσει να τα γράψεις, αλλά όχι να τα καταλάβεις από το μηδέν. Εκεί είναι εργαλείο, όχι δάσκαλος.
Πώς το χρησιμοποιείς
Η εγκατάσταση είναι απλή από την πλευρά του χρήστη και βαριά μόνο στο κατέβασμα. Το επίσημο αρχείο για Windows που δοκιμάσαμε ξεδιπλώνεται σε μεγάλο φάκελο γιατί κουβαλά και τους βοηθούς γλωσσών. Αυτό δεν είναι πρόβλημα στη χρήση. Είναι υπενθύμιση ότι το ένα εργαλείο στηρίζει πολλές γλώσσες και πρέπει να φέρει μαζί του ό,τι χρειάζεται για να δουλέψει τοπικά.
Κατεβάζεις το Pulumi από τη σελίδα εγκατάστασης και ελέγχεις ότι το binary τρέχει.
pulumi version
Μετά συνδέεις το CLI με έναν backend. Αν δεν θέλεις cloud λογαριασμό, μπαίνεις τοπικά.
pulumi login --local
Για νέο έργο, διαλέγεις template. Το YAML είναι καλό όταν θέλεις να δεις τη λογική καθαρά.
pulumi new yaml --name trap-proj -y
Αν δουλεύεις με local backend, δίνεις passphrase για να μη σταματήσει το αρχείο κατάστασης στα μυστικά.
set PULUMI_CONFIG_PASSPHRASE=your-passphrase
Μετά αρχικοποιείς στοίβα.
pulumi stack init dev
Και πριν πας παρακάτω, βλέπεις τι θα αλλάξει.
pulumi preview
Αυτό είναι αρκετό για να ξεκινήσεις. Στη συνέχεια βάζεις κώδικα στο αρχείο του έργου, ορίζεις config, και όταν είσαι έτοιμος τρέχεις apply. Η λογική είναι πάντα ίδια: γράφεις, ελέγχεις, εφαρμόζεις, καθαρίζεις.
Κάθε εντολή έχει τη δουλειά της. Η version σου λέει ποιο δυαδικό αρχείο έχεις μπροστά σου και αν μιλάς με το σωστό εργαλείο. Το login –local δένει το CLI με τοπικό backend και κρατά την κατάσταση στον δίσκο, χωρίς να περνάς από cloud λογαριασμό. Το new φτιάχνει το σκαρίφημα του έργου και τα πρώτα αρχεία. Το passphrase προστατεύει το τοπικό state, ώστε ό,τι θεωρείται μυστικό να μη μένει ξεκρέμαστο. Το stack init στήνει μια νέα στοίβα για το περιβάλλον που διάλεξες. Το preview σου δείχνει τη διαφορά πριν γίνει αλλαγή. Αν ξέρεις αυτές τις έξι κινήσεις, ξέρεις ήδη το βασικό μονοπάτι του Pulumi.
Πώς το οδηγείς από το κέλυφος
Δεν είναι MCP server. Είναι εργαλείο γραμμής εντολών με υποεντολές. Αυτό σημαίνει ότι το δουλεύεις όπως κάθε άλλο CLI: ανοίγεις τερματικό, μπαίνεις στον φάκελο του έργου και καλείς την εντολή που θέλεις. Δεν χρειάζεται να το δηλώσεις πουθενά ως υπηρεσία, ούτε να στήσεις ξεχωριστό μεσολαβητή.
Η βασική χρήση φαίνεται έτσι.
pulumi up
Αν θέλεις να μαζέψεις ό,τι δημιούργησες, το ίδιο απλό.
pulumi destroy
Το σημαντικό είναι να θυμάσαι ότι το Pulumi περιμένει να έχεις έργο με αρχείο ρύθμισης και στοίβα. Δεν είναι εντολή που τρέχεις στον αέρα. Θέλει φάκελο, αρχεία και κατάσταση. Αυτό το κάνει χρήσιμο σε πραγματική δουλειά, αλλά όχι αυτοτελές παιχνίδι.
Η δοκιμή μας με τα χέρια
Στη δοκιμή μας το πρώτο πράγμα που φάνηκε ήταν ότι η έκδοση αντιστοιχούσε αμέσως σε αυτή που δηλωνόταν στις πηγές. Το pulumi version απάντησε αμέσως με v3.274.1. Αυτό δεν είναι εντυπωσιακό μόνο ως νούμερο. Είναι σημαντικό γιατί σημαίνει ότι το εργαλείο ανοίγει γρήγορα και δεν ζητά περίεργη προετοιμασία πριν αρχίσεις να δουλεύεις.
Μετά κοιτάξαμε τοπική είσοδο χωρίς cloud λογαριασμό. Το pulumi login --local δούλεψε και έβαλε την κατάσταση σε τοπικό αρχείο. Αυτό είναι πρακτικό για δοκιμές και μικρά έργα. Σου επιτρέπει να πειραματιστείς χωρίς να ανοίγεις λογαριασμούς και χωρίς να μπεις αμέσως στην πολιτική μιας πλατφόρμας.
Το σημείο που έδειξε το πραγματικό του όριο ήταν το pulumi new yaml --name trap-proj -y. Το έργο δημιουργήθηκε, αλλά η ροή σταμάτησε στο μήνυμα ότι χρειάζεται passphrase στη μεταβλητή PULUMI_CONFIG_PASSPHRASE. Αυτό δεν είναι bug της στιγμής. Είναι η συμπεριφορά που περιμένεις όταν κρατάς μυστικά τοπικά. Με τη μεταβλητή ορισμένη, το pulumi stack init dev πέρασε και η στοίβα στήθηκε.
Μετά ήρθε το preview. Εκεί φάνηκε η χρησιμότητα του εργαλείου χωρίς να κάνει καμία πραγματική αλλαγή. Το pulumi preview τελείωσε σε 0,95 δευτερόλεπτα και έδειξε ένα στοιχείο προς δημιουργία, δηλαδή τον ίδιο τον πόρο της στοίβας. Αυτό είναι το είδος της απάντησης που θέλεις πριν δώσεις το πράσινο φως. Βλέπεις τι θα υπάρξει πριν υπάρξει στ’ αλήθεια.
Σημαντικό είναι και τι δεν χρειάστηκε. Δεν βάλαμε cloud credentials, δεν σηκώσαμε πραγματικό resource, δεν χρεώθηκε τίποτα. Η δοκιμή έμεινε σε τοπική κατάσταση και σε preview. Αν ήθελες πραγματικό deploy, θα χρειαζόσουν λογαριασμό στον πάροχο που θα διάλεγες, τα κατάλληλα δικαιώματα, και πιο προσεκτικό έλεγχο των πόρων που θα άγγιζες. Εκεί αλλάζει και το ρίσκο. Από το «τι θα δημιουργηθεί» περνάς στο «τι θα πληρωθεί, τι θα μείνει ζωντανό και ποιος θα το διαχειρίζεται μετά».
Ένα ακόμα χρήσιμο σημείο ήταν η λίστα υποεντολών. Το εργαλείο δεν σε κλείνει σε μια ή δύο ενέργειες. Δίνει new, config, stack, console, import, refresh, state, install, up, destroy, preview, cancel, env και τις εντολές του Pulumi Cloud. Αυτό λέει πολλά για τη φιλοσοφία του. Δεν είναι μόνο για στήσιμο. Είναι και για διαχείριση, επανέλεγχο, καθαρισμό και καθημερινή συντήρηση.
Η δοκιμή μας έδειξε επίσης κάτι ακόμη: το Pulumi είναι γρήγορο όταν το βάλεις σε καθαρή διαδρομή, αλλά δεν σε αφήνει να προσπεράσεις βασικά πράγματα. Θέλει backend. Θέλει στοίβα. Θέλει καθαρή ρύθμιση. Αυτό μπορεί να φαίνεται αυστηρό την πρώτη φορά, αλλά σε πραγματικό έργο είναι ακριβώς το είδος της αυστηρότητας που θες.
Τι κοστίζει
Εδώ μετράμε τι πληρώνει κάποιος σε tokens, χώρο και χρήμα για να χρησιμοποιήσει το Pulumi.
Tokens: μηδέν. Το Pulumi δεν είναι διακομιστής που δηλώνεις σε ένα μοντέλο — δεν φορτώνει κανένα σχήμα εργαλείων στο πλαίσιο κανενός μοντέλου. Το καλείς από το κέλυφος, το αποτέλεσμα μένει στο τερματικό σου ή στα αρχεία του έργου, και το μοντέλο δεν βλέπει τίποτα από αυτό αν δεν του το δώσεις εσύ. Αυτό δεν είναι εκτίμηση: βγαίνει από τη ροή, γιατί δεν υπάρχει διακομιστής να δηλώσεις πουθενά.
Χώρος: το βαρύτερο κομμάτι. Το επίσημο αρχείο για Windows είναι 103.639.556 bytes (περίπου 98,8 MB) και ξεδιπλώνεται σε φάκελο 288 MB, γιατί μέσα κουβαλά και τους βοηθούς για bun, .NET, Go, Node.js, Python και YAML. Αν δουλεύεις μία μόνο γλώσσα, το μεγαλύτερο μέρος αυτού του χώρου κάθεται αχρησιμοποίητο στον δίσκο — αυτό είναι το πραγματικό τίμημα του «μία εντολή, όλες οι γλώσσες».
Χρήμα: το εργαλείο δωρεάν, ο λογαριασμός όχι πάντα. Ο κώδικας είναι ελεύθερος με άδεια Apache-2.0: χωρίς κλειδί, χωρίς συνδρομή, χωρίς λογαριασμό αν μείνεις σε τοπικό backend. Το Pulumi Cloud και τα εργαλεία συνεργασίας έχουν εμπορικές βαθμίδες — αυτό είναι δηλωμένο από τον κατασκευαστή, δεν το τιμολογήσαμε. Και το πραγματικό κόστος δεν είναι το λογισμικό: είναι η υποδομή που θα στήσεις με αυτό, που χρεώνεται από τον πάροχο cloud και όχι από το Pulumi.
Και ο χρόνος: στη δοκιμή μας το preview γύρισε σε 0,95 δευτερόλεπτα χωρίς κανένα cloud credential — δηλαδή βλέπεις τι πρόκειται να γίνει πριν δεσμεύσεις οτιδήποτε.
Πότε αξίζει
Δεν μιλάμε για πείραμα. Στο GitHub το αποθετήριο pulumi/pulumi έχει 25.899 αστέρια και 1.514 forks, με 2.493 ανοιχτά issues και τελευταίο push στις 11/11/2026· η άδεια είναι Apache-2.0 και η τελευταία έκδοση v3.274.1, δημοσιευμένη στις 5/11/2026. Στο npm το πακέτο @pulumi/pulumi μετρά 5.094.472 λήψεις την εβδομάδα, και στο PyPI η έκδοση είναι 3.274.1 με Requires-Python 3.10 και πάνω. Δεν είναι πείραμα που το δοκιμάζει ένας άνθρωπος μόνος του.
Αξίζει όταν έχεις υποδομή που αλλάζει συχνά και δεν θέλεις κάθε αλλαγή να μοιάζει με μικρό αυτοσχέδιο έργο. Αξίζει όταν η ομάδα σου γράφει ήδη κώδικα σε μία από τις γλώσσες που υποστηρίζει και θες το ίδιο μυαλό να φτιάχνει και την υποδομή και την εφαρμογή. Αξίζει επίσης όταν θες έλεγχο πριν από το deploy και καθαρό ξεκαθάρισμα μετά το τέλος.
Δεν αξίζει όταν έχεις ένα μικρό στατικό site που δεν αλλάζει. Εκεί το Pulumi είναι περισσότερη πειθαρχία από όση χρειάζεσαι, γιατί δεν έχεις συνεχή αλλαγή να διαχειριστείς. Δεν αξίζει ούτε όταν μιλάμε για έναν μόνο server που στήθηκε μία φορά και μένει ίδιος για καιρό. Τότε η κατάσταση, τα stacks και η επιπλέον δομή προσθέτουν βάρος χωρίς να σου επιστρέφουν αρκετό όφελος.
Για ομάδες που κάνουν σοβαρή υποδομή, όμως, το Pulumi έχει νόημα. Σε αφήνει να γράφεις λιγότερα κουμπιά και περισσότερη πρόθεση. Και αυτό, όταν το κάνεις καλά, γλιτώνει λάθη που μετά κοστίζουν περισσότερο από τον χρόνο που πήρε να στηθεί σωστά από την αρχή.
Τέλος
Το Pulumi είναι από τα εργαλεία που γίνονται καλά όταν τα χρησιμοποιείς με καθαρό πλάνο. Δεν κρύβει την πολυπλοκότητα της υποδομής. Την κάνει γραπτή και άρα ελέγξιμη. Αυτό είναι το κέρδος του. Αν θες να θυμάσαι λιγότερα κλικ και περισσότερες αποφάσεις, εδώ είσαι στο σωστό μέρος.
Πηγές:
https://github.com/pulumi/pulumi
https://www.pulumi.com/docs/iac/
https://www.pulumi.com/docs/iac/get-started/
Εγκατάσταση
5 ΒΗΜΑΤΑ- pulumi version
- pulumi login --local
- pulumi new yaml --name trap-proj -y
- pulumi stack init dev
- pulumi preview