Workshop-Wiki · Griechisch

Βέλτιστες πρακτικές: Ansible

Η αναφορά συνοψίζει δοκιμασμένες πρακτικές εργασίας για έργα Ansible. Διακρίνει τεχνικές συστάσεις, κανόνες review, απαιτήσεις ασφάλειας και λειτουργική ωριμότητα.

Workshop-Beispiele als ZIP
Lernstand in der Web-App

Kapitel als gelesen markieren, Lesefortschritt sehen und Praxismodule abhaken: Diese Funktionen stehen nach Aktivierung der optionalen Web-App zur Verfügung. Der Workshop-Fortschritt ergibt sich automatisch aus den Kapiteln aller Dokumentseiten. Deine Auswahl bleibt auf diesem Gerät; es gibt kein Konto und keinen Serverabgleich. Eine Installation ist nicht erforderlich. Beim Widerruf in den Datenschutz-Einstellungen wird der Lernstand gelöscht.

Lesefortschritt0%
0%
0 / 18 Kapitel gelesen
Weitere SprachfassungDeutsch ↗Englisch ↗

Βέλτιστες πρακτικές: Ansible

Ενημέρωση: 15 Ιουλίου 2026

Η αναφορά συνοψίζει δοκιμασμένες πρακτικές εργασίας για έργα Ansible. Διακρίνει τεχνικές συστάσεις, κανόνες review, απαιτήσεις ασφάλειας και λειτουργική ωριμότητα.

1. Στόχος

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Στόχος»

Μια πλήρης επεξεργασία του θέματος «Στόχος» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Στόχος»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Στόχος»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Στόχος» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Στόχος»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Στόχος» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Στόχος»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Στόχος»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Στόχος»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Στόχος»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Στόχος» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

01 / 18

2. Δομή έργου

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Δομή έργου»

Μια πλήρης επεξεργασία του θέματος «Δομή έργου» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Δομή έργου»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Δομή έργου»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Δομή έργου» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Δομή έργου»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Δομή έργου» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Δομή έργου»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Δομή έργου»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Δομή έργου»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Δομή έργου»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Δομή έργου» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

02 / 18

3. Σχεδιασμός inventory

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Σχεδιασμός inventory»

Μια πλήρης επεξεργασία του θέματος «Σχεδιασμός inventory» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Σχεδιασμός inventory»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Σχεδιασμός inventory»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Σχεδιασμός inventory» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Σχεδιασμός inventory»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Σχεδιασμός inventory» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Σχεδιασμός inventory»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Σχεδιασμός inventory»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Σχεδιασμός inventory»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Σχεδιασμός inventory»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Σχεδιασμός inventory» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

03 / 18

4. Σχεδιασμός playbook

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Σχεδιασμός playbook»

Μια πλήρης επεξεργασία του θέματος «Σχεδιασμός playbook» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Σχεδιασμός playbook»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Σχεδιασμός playbook»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Σχεδιασμός playbook» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Σχεδιασμός playbook»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Σχεδιασμός playbook» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Σχεδιασμός playbook»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Σχεδιασμός playbook»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Σχεδιασμός playbook»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Σχεδιασμός playbook»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Σχεδιασμός playbook» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

04 / 18

5. Επιλογή module

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Επιλογή module»

Μια πλήρης επεξεργασία του θέματος «Επιλογή module» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Επιλογή module»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Επιλογή module»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Επιλογή module» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Επιλογή module»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Επιλογή module» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Επιλογή module»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Επιλογή module»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Επιλογή module»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Επιλογή module»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Επιλογή module» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

05 / 18

6. Idempotence

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Idempotence»

Μια πλήρης επεξεργασία του θέματος «Idempotence» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Idempotence»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Idempotence»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Idempotence» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Idempotence»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Idempotence» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Idempotence»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Idempotence»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Idempotence»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Idempotence»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Idempotence» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

06 / 18

7. Μοντέλο variables

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Μοντέλο variables»

Μια πλήρης επεξεργασία του θέματος «Μοντέλο variables» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Μοντέλο variables»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Μοντέλο variables»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Μοντέλο variables» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Μοντέλο variables»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Μοντέλο variables» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Μοντέλο variables»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Μοντέλο variables»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Μοντέλο variables»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Μοντέλο variables»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Μοντέλο variables» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

07 / 18

8. Templates

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Templates»

Μια πλήρης επεξεργασία του θέματος «Templates» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Templates»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Templates»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Templates» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Templates»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Templates» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Templates»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Templates»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Templates»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Templates»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Templates» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

08 / 18

9. Roles

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Roles»

Μια πλήρης επεξεργασία του θέματος «Roles» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Roles»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Roles»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Roles» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Roles»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Roles» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Roles»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Roles»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Roles»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Roles»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Roles» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

09 / 18

10. Collections

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Collections»

Μια πλήρης επεξεργασία του θέματος «Collections» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Collections»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Collections»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Collections» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Collections»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Collections» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Collections»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Collections»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Collections»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Collections»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Collections» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

10 / 18

11. Secrets

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Secrets»

Μια πλήρης επεξεργασία του θέματος «Secrets» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Secrets»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Secrets»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Secrets» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Secrets»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Secrets» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Secrets»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Secrets»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Secrets»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Secrets»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Secrets» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

11 / 18

12. Κλιμάκωση δικαιωμάτων

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Κλιμάκωση δικαιωμάτων»

Μια πλήρης επεξεργασία του θέματος «Κλιμάκωση δικαιωμάτων» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Κλιμάκωση δικαιωμάτων»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Κλιμάκωση δικαιωμάτων»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Κλιμάκωση δικαιωμάτων» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Κλιμάκωση δικαιωμάτων»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Κλιμάκωση δικαιωμάτων» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Κλιμάκωση δικαιωμάτων»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Κλιμάκωση δικαιωμάτων»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Κλιμάκωση δικαιωμάτων»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Κλιμάκωση δικαιωμάτων»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Κλιμάκωση δικαιωμάτων» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

12 / 18

13. CI και linting

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «CI και linting»

Μια πλήρης επεξεργασία του θέματος «CI και linting» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «CI και linting»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «CI και linting»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «CI και linting» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «CI και linting»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «CI και linting» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «CI και linting»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «CI και linting»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «CI και linting»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «CI και linting»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «CI και linting» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

13 / 18

14. Δοκιμές με Molecule

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Δοκιμές με Molecule»

Μια πλήρης επεξεργασία του θέματος «Δοκιμές με Molecule» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Δοκιμές με Molecule»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Δοκιμές με Molecule»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Δοκιμές με Molecule» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Δοκιμές με Molecule»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Δοκιμές με Molecule» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Δοκιμές με Molecule»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Δοκιμές με Molecule»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Δοκιμές με Molecule»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Δοκιμές με Molecule»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Δοκιμές με Molecule» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

14 / 18

15. Runbooks

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Runbooks»

Μια πλήρης επεξεργασία του θέματος «Runbooks» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Runbooks»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Runbooks»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Runbooks» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Runbooks»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Runbooks» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Runbooks»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Runbooks»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Runbooks»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Runbooks»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Runbooks» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

15 / 18

16. Anti-patterns

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Anti-patterns»

Μια πλήρης επεξεργασία του θέματος «Anti-patterns» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Anti-patterns»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Anti-patterns»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Anti-patterns» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Anti-patterns»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Anti-patterns» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Anti-patterns»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Anti-patterns»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Anti-patterns»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Anti-patterns»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Anti-patterns» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

16 / 18

17. Λίστα ελέγχου review

Αναλυτική προσέγγιση και παράδειγμα υποβολής για το θέμα «Λίστα ελέγχου review»

Μια πλήρης επεξεργασία του θέματος «Λίστα ελέγχου review» περιλαμβάνει τεχνικό artifact και σύντομη εξήγηση του πεδίου. Το artifact μπορεί να είναι inventory, playbook, role, template, Vault file με δοκιμαστικές τιμές, CI configuration ή αρχείο evidence. Η εξήγηση τεκμηριώνει γιατί επιλέχθηκε αυτή η διαδρομή και ποια εναλλακτική εξετάστηκε.

Μέρος υποβολής Περιεχόμενο Ελάχιστη ποιότητα
Περιγραφή στόχου Τι πρέπει να ισχύει μετά την εκτέλεση Μετρήσιμο, χωρίς κρυφές παραδοχές
Evidence πεδίου εφαρμογής Ποιοι hosts επηρεάζονται Έξοδος από --list-hosts ή inventory graph
Υλοποίηση Ποια αρχεία άλλαξαν Μικρά YAML files που μπορούν να ελεγχθούν
Validation Πώς ελέγχθηκε Syntax check, check mode, diff, πραγματική και δεύτερη εκτέλεση
Απόφαση κινδύνου Τι μπορεί να πάει στραβά Εξετάζονται privileges, secrets, εξωτερικές εξαρτήσεις και rollback

Ελάχιστα artifacts για το θέμα «Λίστα ελέγχου review»

text
submission/
  inventory/hosts.yml
  playbooks/site.yml
  evidence.md
  cleanup.md

Για roles ή collections, η δομή επεκτείνεται:

text
submission/
  ansible.cfg
  collections/requirements.yml
  inventory/hosts.yml
  roles/<role>/defaults/main.yml
  roles/<role>/tasks/main.yml
  roles/<role>/handlers/main.yml
  playbooks/site.yml
  evidence.md

Αναμενόμενα κριτήρια βαθμολόγησης για το θέμα «Λίστα ελέγχου review»

Μια λύση που μπορεί να ελεγχθεί πρέπει να είναι κατανοητή και σε άτομα που δεν την εκτέλεσαν. Screenshots ή έξοδος terminal χωρίς σχόλια δεν αρκούν. Καλό evidence δηλώνει context, command, σχετική έξοδο και αξιολόγηση. Αν ένα module συμπεριφέρεται διαφορετικά στο check mode, ο περιορισμός τεκμηριώνεται ρητά.

Μεταφορά σε πραγματικές ομάδες

Σε ομαδικό πλαίσιο, το θέμα «Λίστα ελέγχου review» συνδέεται με code review, branch rules, CI, ευθύνη για roles, release notes και λειτουργική έγκριση. Χρήση κοντά σε production τεκμηριώνει επίσης υπεύθυνους, maintenance window, monitoring, alerting και κριτήρια rollback.

Πρακτική σημασία του θέματος «Λίστα ελέγχου review»

Η ενότητα δεν είναι απλώς ορισμός. Στο workshop, το θέμα «Λίστα ελέγχου review» ελέγχεται με συγκεκριμένη ροή: εξετάστε το inventory, αποδείξτε τους target hosts, ελέγξτε το playbook, προσομοιώστε την αλλαγή, εκτελέστε την, αξιολογήστε δεύτερη εκτέλεση και τεκμηριώστε το cleanup. Έτσι φαίνεται αν το Ansible μοντελοποιεί πράγματι desired state ή αν μια εντολή πέτυχε μόνο μία φορά.

Ερώτηση review Αναμενόμενη απάντηση
Ποιοι hosts επηρεάζονται; Τεκμηριώνονται pattern, group, --limit και έξοδος inventory.
Ποιες πηγές δεδομένων ισχύουν; Είναι γνωστά group_vars, host_vars, defaults, extra vars και facts.
Ποια privileges απαιτούνται; Το become εφαρμόζεται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται.
Πώς αποδεικνύεται η επιτυχία; Υπάρχουν syntax check, check mode, diff, play recap και δεύτερη εκτέλεση.

Παράδειγμα ροής για το θέμα «Λίστα ελέγχου review»

bash
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --list-hosts
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
ansible-playbook -i inventory/hosts.yml playbooks/site.yml

Η ροή είναι σκόπιμα πλήρης. Σε πραγματικές ομάδες, ορισμένα βήματα αυτοματοποιούνται αλλά δεν παραλείπονται. Το CI μπορεί να εκτελεί syntax checks και linting· ο έλεγχος πεδίου εφαρμογής, privileges, ροών secrets και κινδύνου rollout παραμένει ανθρώπινο engineering task.

Κριτήρια review για το θέμα «Λίστα ελέγχου review»

  • Το inventory και τα patterns είναι στενότερα από το all, εκτός αν τεκμηριώνεται λόγος.
  • Προτιμώνται modules από ansible.builtin ή ελεγμένες collections.
  • Τα shell ή command tasks περιλαμβάνουν changed_when, failed_when ή σαφή αιτιολόγηση.
  • Οι variables τοποθετούνται προβλέψιμα και δεν αλληλοκαλύπτονται απροσδόκητα.
  • Τα secrets δεν εμφανίζονται ως plaintext, σε diffs, debug tasks ή CI logs.
  • Το playbook μπορεί να εκτελείται επανειλημμένα χωρίς περιττές αλλαγές.
  • Τεκμηριώνεται cleanup, fix-forward ή ελεγχόμενη αποδοχή του target state.

Συνηθισμένες αστοχίες για το θέμα «Λίστα ελέγχου review»

Αστοχία Αιτία Διάγνωση
Στοχεύθηκαν λάθος hosts Παρανοήθηκε το pattern ή το inventory --list-hosts, ansible-inventory --host
unreachable Πρόβλημα SSH, user, Python ή δικτύου -vvvv, δοκιμή SSH, inventory variables
Απρόσμενη αλλαγή Το module δεν είναι idempotent ή η πηγή δεδομένων είναι λάθος Δεύτερη εκτέλεση, diff, έλεγχος variables
Διαρροή secret Debug, diff ή log χωρίς κατάλληλο περιορισμό Ελέγξτε no_log, Vault και CI artifacts.
Δεν εκτελείται handler Δεν υπάρχει αποτέλεσμα changed ή το όνομα του handler είναι λάθος Ελέγξτε το αποτέλεσμα task και το όνομα handler.

Λειτουργική σημείωση για το θέμα «Λίστα ελέγχου review»

Για χρήση κοντά σε production, το lab πρέπει να εξελιχθεί σε runbook. Το runbook ορίζει target systems, υπεύθυνους, προϋποθέσεις, κριτήρια διακοπής, αναμενόμενη διάρκεια, validation, monitoring και cleanup. Χωρίς αυτά, ένα playbook είναι εκτελέσιμο αλλά δεν είναι λειτουργικά ώριμο.

Το θέμα «Λίστα ελέγχου review» αποτελεί πρακτικό δομικό στοιχείο του Ansible workshop. Το desired state πρέπει να περιγράφεται, να εφαρμόζεται σε ελεγχόμενο scope και να επαληθεύεται πριν και μετά την εκτέλεση. Μια αξιόπιστη ροή Ansible απαντά σε τέσσερις ερωτήσεις: ποιοι hosts στοχεύονται, ποια αλλαγή γίνεται, ποια privileges απαιτούνται και πώς μετριέται η επιτυχία.

Πτυχή Σημασία στο workshop Έλεγχος
Scope Inventory, pattern, --limit, tags και environment επιλέγουν τα target systems. ansible-inventory --graph, ansible-playbook --list-hosts
State Τα modules πρέπει να μοντελοποιούν desired state με επαναλήψιμα αποτελέσματα. Δεύτερη εκτέλεση χωρίς περιττές αλλαγές
Privileges Το become χρησιμοποιείται μόνο στο task που απαιτεί δικαιώματα root και αιτιολογείται. Δεν υπάρχουν εκτεταμένα privileges χωρίς review.
Evidence Τεκμηριώνονται έξοδος, diffs και σύνοψη. Play recap, diff, αρχείο evidence

Τυπικές εντολές:

bash
ansible --version
ansible-config dump --only-changed
ansible-inventory -i inventory/hosts.yml --graph
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --syntax-check
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check --diff

Για το review, ένα playbook είναι έτοιμο όταν αποδεικνύει το target scope, αποκαλύπτει τις πηγές δεδομένων του, προστατεύει ευαίσθητες τιμές, περιγράφει πιθανές αστοχίες και παραμένει σταθερό σε δεύτερη εκτέλεση. Αν ένα module δεν υποστηρίζει πλήρως check mode ή diff mode, ο περιορισμός πρέπει να αναφέρεται στο runbook.

Συνηθισμένα λάθη είναι τα υπερβολικά ευρεία patterns όπως all, οι ασαφείς πηγές variables, η χρήση shell χωρίς idempotence, τα secrets σε debug output, η απουσία σχεδίου rollback και η ανάμειξη lab και production inventory.

17 / 18

Πηγές και περαιτέρω ανάγνωση

  • Official Ansible Community Documentation: https://docs.ansible.com/
  • Ansible Getting Started: https://docs.ansible.com/projects/ansible/latest/getting_started/index.html
  • Inventory Guide: https://docs.ansible.com/projects/ansible/latest/inventory_guide/index.html
  • Playbook Guide: https://docs.ansible.com/projects/ansible/latest/playbook_guide/index.html
  • Module Index: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html
  • Vault Guide: https://docs.ansible.com/projects/ansible/latest/vault_guide/index.html
  • Ansible Lint: https://ansible.readthedocs.io/projects/lint/
  • Molecule: https://ansible.readthedocs.io/projects/molecule/
  • AWX: https://github.com/ansible/awx
  • Red Hat Certifications: https://www.redhat.com/en/services/certifications
18 / 18

ANS · Orthevs Academy

31 Module als durchgängiger Lernpfad.

Die Reihenfolge bleibt unverändert: von der Laborgrundstruktur über fachliche Grundlagen und Betriebsmodelle bis zum abschließenden Troubleshooting. Die technischen Verzeichnisnamen werden bewusst beibehalten.

Orthevs – Engineering als Grundlage für das, was als Nächstes kommt.

Orthevs als App

Orthevs installieren

Die Orthevs Web-App kann auf unterstützten Mobilgeräten und Desktop-Browsern installiert werden.

iPhone und iPad

Öffnen Sie Orthevs in Safari. Tippen Sie auf Teilen, dann auf ‚Zum Home-Bildschirm‘. Aktivieren Sie gegebenenfalls ‚Als Web-App öffnen‘ und tippen Sie auf ‚Hinzufügen‘.

Android

Für die Web-App öffnen Sie das Browsermenü und wählen ‚App installieren‘ oder ‚Zum Startbildschirm hinzufügen‘. Bestätigen Sie die Installation.

Desktop-Browser

Öffnen Sie das Browsermenü oder das Installationssymbol in der Adressleiste und wählen Sie ‚App installieren‘ beziehungsweise ‚Zum Dock hinzufügen‘.

Die Web-App-Installation hängt vom Browser ab. Falls kein Installationsdialog erscheint, nutzen Sie die angezeigten Schritte im Browser.