2 minutes
Ansible
Η Ansible είναι ένα εργαλείο για configuration management στην λογική των Chef, Puppet και Salt. Ο βασικός λόγος της δημιουργίας της ήταν η ανάγκη για ένα agent-less automation framework και αυτό ήταν που οδήγησε στην υιοθέτησή της από μεγάλη μερίδα μηχανικών δικτύου που ήθελαν να αυτοματοποιήσουν τις εργασίες τους χωρίς όμως να έχουν την δυνατότητα εγκατάστασης agents στον εξοπλισμό τους. Παρακάτω γίνεται μια απόπειρα αποδελτίωσης των θετικών και των αρνητικών του εργαλείου ούτως ώστε η καθεμία να αποφασίσει μόνη της αν αξίζει να ασχοληθεί. TL;DR, η Ansible είναι μια καλή επιλογή για σχετικά αρχάριους στον χώρο του αυτοματισμού δικτύων με σχετικά ήπια καμπύλη εκμάθησης. Είναι επαρκής για απλές επαναλαμβανόμενες δουλειές αλλά αργή και ανίκανη να φέρει εις πέρας πολύπλοκα tasks.
Θετικά:
- Agentless: δεν απαιτείται εγκατάσταση agent στον εξοπλισμό - η σύνδεση σε δικτυακά μηχανήματα συνήθως γίνεται μέσω SSH.
- Παραλληλισμός: το ίδιο task μπορεί να τρέχει παράλληλα σε πολλαπλά hosts.
- Inventory & variable inheritance: ο μηχανισμός με τον οποίο η Ansible ομαδοποιεί hosts και μοιράζεται μεταβλητές μεταξύ τους είναι πολύ ισχυρός και επεκτάσιμος. Αυτό την κάνει καλή επιλογή για πολύπλοκα περιβάλλοντα με πολλαπλά sites, prod/dev/test segments, κτλ.
- Ecosystem: υπάρχει μεγάλος πλούτος από libraries (modules, roles, collections στην «διάλεκτο» της Ansible) που κάνουν εύκολη την δουλειά του administrator.
Ούτε κρύο, ούτε ζέστη:
- DSL: Η Ansible «μιλάει» μια δική της γλώσσα (Domain Specific Language) που πατάει πάνω στην YAML. Από την μία, αυτό την κάνει αρκετά πιο απλή στην κατανόηση από τους ανθρώπους που δεν έχουν έκθεση σε αρχές προγραμματισμού. Από την άλλη, αυτό την κάνει αρκετά πιο περιοριστική για τους ανθρώπους που σκαμπάζουν. Επιπλέον, ένα κοινό επιχείρημα κατά των διαφόρων DSLs (Ansible, Terraform, etc) είναι πως, αντί να μαθαίνεις να γράφεις μια proper γλώσσα προγραμματισμού, μαθαίνει μια proprietary γλώσσα με de-facto περιορισμένο scope. Έκαστος εφ’ ω ετάχθη…
- Break-out to Python: Στο σημείο που ζορίζει το πράγμα και η Ansible δεν μπορεί να κάνει τα μαγκαϊβεριλίκια που θέλεις, κάνεις break-out σε Python. Τα θετικά/αρνητικά του συγκεκριμένου fact είναι άσκηση για το σπίτι…
- Delivery mechanism: Το GUI add-on (AWX) είναι ένας good-enough μηχανισμός για delivery.
Αρνητικά της Ansible:
- SLOWWW: Είναι αργή! Ακόμη και αν φτάσεις στο σημείο να κάνεις τα πιο advanced κόλπα (forks, strategies, async) η Ansible παραμένει πολύ αργή!!!
- No event-driven mechanism: Δεν έχει μηχανισμό για event-driven automation.
- Complex tasks: Είναι απαράδεκτη για complex tasks με πολύ περιορισμένες δυνατότητες για loops, conditionals και παρόμοια structures.