CLOUD CONCEPT
Νερατζιωτίσσης 15, Μαρούσι, Αθήνα, 15124, Αττική
+30 211 8005 401
info@c2.gr
Η Ansible είναι ένα εργαλείο που μπορεί να αυτοματοποιεί μια εργασία και να την εκτελεί σε διάφορα συστήματα. Αυτό γίνεται με τη χρήση των playbooks.
Τα playbooks είναι αρχεία που περιέχουν script γραμμένα σε YAML. Σε ένα playbook ορίζουμε τους hosts στους οποίους θα εκτελεστεί ένα script.
Έτσι, αν θέλουμε να εγκαταστήσουμε ένα πρόγραμμα σε 10 διαφορετικούς server, δεν χρειάζεται να επαναλάβουμε την ίδια διαδικασία 10 φορές. Φτιάχνουμε ένα playbook, γράφουμε το script που θα κάνει εγκατάσταση το πρόγραμμά μας και ορίζουμε τους 10 hosts. Μόλις εκτελέσουμε το playbook με μια εντολή, το πρόγραμμα θα εγκατασταθεί σε όλους τους servers.
---
- hosts: virtual hosts
tasks:
- name: Installs nginx web server
apt: pkg=nginx state=installed update_cache=tru
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
Το playbook ξεκινά με --- . Αυτό είναι οδηγία προς την YAML να δει το παρακάτω κείμενο ως κανονικό document. Στο ίδιο αρχείο μπορούμε να έχουμε πολλαπλά documents τα οποια θα χωρίζονται με --- .
Τώρα που το playbook είναι έτοιμο, το καλούμε με την εντολή:
ansible-playbook playbook.yml
Για παράδειγμα, αν θέλουμε να κάνουμε install και start up τον Nginx σε όλους τους Hosts, μπορούμε να τρέξουμε την εντολή:
ansible-playbook nginx.yml
Εφόσον μέσα στο playbook έχουμε ορίσει τους hosts, όταν εκτελούμε μια εντολή, δεν χρειάζεται να τους ξαναορίζουμε. Αν όμως θελήσουμε το playbook να εκτελεστεί μόνο για έναν host, τότε αυτό θα γίνει έτσι:
ansible-playbook -l host_subset playbook.yml
Ομοίως, αν θέλαμε να κάνουμε install τον Nginx μόνο στον host3 θα τρέχαμε την:
ansible-playbook -l host3 nginx.yml
Ως τώρα, το playbook που φτιάξαμε απλά κάνει Install και startup τον Nginx. Αυτό όμως από μόνο του δεν είναι χρήσιμο. Ας δοκιμάσουμε να κάνουμε και άλλα πράγματα με το playbook.
Μπορούμε να στείλουμε ένα αρχείο από τον Ansible Server σε έναν host προσθέτοντας τις εξής γραμμές:
---
- hosts: virtual hosts
tasks:
- name: Installs nginx web server
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
- name: Upload default index.html for host
copy: src=static_files/index.html dest=/usr/share/nginx/www/ mode=0644
handlers:
- name: start nginx
service: name=nginx state=started
Όμως το αρχείο αυτό δεν το έχουμε φτιάξει. Στο τωρινό μας directory, φτιάχνουμε το directory static_files και μέσα σε αυτό φτιάχνουμε τη σελίδα index:
mkdir static_files
vi static_files/index.html
Μέσα στο HTML αρχείο γράφουμε τα εξής:
Και το αποθηκεύουμε!
Τώρα όταν ξανατρέξουμε το playbook, θα αντικαταστήσει την αρχική σελίδα του Nginx με την σελίδα index που μόλις φτιάξαμε σε όλους τους Hosts.
Κάθε φορά που κάνουμε κάτι install και configure σε έναν remote host, πρέπει να ξέρουμε αν αυτό έγινε με επιτυχία. Για αυτό, για κάθε εργασία που γίνεται σε έναν remote host, μπορούμε να κάνουμε register το αποτέλεσμα (επιτυχία ή αποτυχία) σε μια μεταβλητή που μπορούμε να τσεκάρουμε με την χρήση της εντολής register.
Για παράδειγμα, μπορούμε να πούμε στο playbook να κάνει upload ένα αρχείο index.php . Αν η εργασία αυτή αποτύχει, τότε θα κάνουμε upload ένα index.html αρχείο αντί για αυτό.
---
- hosts: virtual hosts
tasks:
- name: Installs nginx web server
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
- name: Upload default index.php for host
copy: src=static_files/index.php dest=/usr/share/nginx/www/ mode=0644
register: php
ignore_errors: True
- name: Remove index.html for host
command: rm /usr/share/nginx/www/index.html
when: php|success
- name: Upload default index.html for host
copy: src=static_files/index.html dest=/usr/share/nginx/www/ mode=0644
when: php|failed
handlers:
- name: start nginx
service: name=nginx state=started
Επειδή δεν έχουμε φτιάξει κάποιο php αρχείο, το πρώτο task θα αποτύχει, οπότε αναμένουμε να γίνει upload το index.html σε όλους τους hosts.
Στην Cloud Concept στόχο αποτελεί η αδιάλειπτη τεχνική υποστήριξη των αναγκών σας, η προσφορά managed υπηρεσιών υψηλού επιπέδου και η παροχή πρόσβασης σε χρήσιμες προτάσεις για την αποδοτική διαχείριση των δεδομένων σας.
Μάθετε περισσότερα για τις υπηρεσίες μας εδώ.
Ακολουθήστε μας σε LinkedIn, Facebook, & Instagram για να μένετε ενημερωμένοι!