Πώς να χρησιμοποιήσετε μαριονέτες για αυτοματοποίηση υποδομής πληροφορικής;

Ένα πρακτικό μάθημα μαριονέτας που μιλά για τη σύνταξη μιας μαριονέτας και τη χρήση ενός μανιφέστου για την αυτοματοποίηση και τη συντήρηση της υποδομής πληροφορικής ενός οργανισμού.

Προηγουμένως, οι διαχειριστές συστήματος χρησιμοποίησαν σενάρια κελύφους για να εκτελέσουν τους διακομιστές τους και αυτή η μέθοδος είχε μηδενική επεκτασιμότητα. Είναι δύσκολο να τροποποιείτε συνεχώς σενάρια για εκατοντάδες ή χιλιάδες διακομιστές που αλλάζουν συνεχώς και τις διαμορφώσεις του συστήματος.



Σε αυτό το άρθρο στις μαριονέτες ενότητες & εκδηλώσεις ας δούμε πώς θα μπορούσαμε να χρησιμοποιήσουμε μαριονέτες για την αυτοματοποίηση της εγκατάστασης διακομιστή, της εγκατάστασης προγράμματος και της διαχείρισης συστήματος.



Αυτό το ιστολόγιο θα καλύψει τα ακόλουθα θέματα:

Εισαγωγή στον Προγραμματισμό Μαριονετών

Μαριονέτα είναι ένα από τα δημοφιλή εργαλεία DevOps που χρησιμοποιείται ευρέως για τη διαχείριση των ρυθμίσεων. Χρησιμοποιείται για την πραγματοποίηση συνοχή στην υποδομή. Το Puppet μπορεί να ορίσει την υποδομή ως κώδικα, να διαχειριστεί πολλούς διακομιστές και να επιβάλει τη διαμόρφωση του συστήματος, βοηθώντας έτσι στην αυτοματοποίηση της διαδικασίας διαχείρισης της υποδομής.



Η μαριονέτα έχειτη δική του γλώσσα διαμόρφωσης, Μαριονέτα DSL . Όπως και με άλλα προγράμματα DevOps, Puppet αυτοματοποιεί τις αλλαγές, εξαλείφοντας τις μη αυτόματες αλλαγές που βασίζονται στο σενάριο. Ωστόσο, το Puppet δεν είναι απλώς μια άλλη γλώσσα κελύφους, ούτε είναι μια καθαρή γλώσσα προγραμματισμού, όπως η PHP. Αντ 'αυτού, η μαριονέτα χρησιμοποιείπρος το δηλωτική προσέγγιση βάσει μοντέλου στον αυτοματισμό πληροφορικής. Αυτό δίνει τη δυνατότητα στο Puppet να ορίσει την υποδομή ως κώδικα και να επιβάλει τη διαμόρφωση του συστήματος με προγράμματα.

Πριν ξεκινήσετε με το demo, ας δούμε μερικές βασικές πτυχές του προγραμματισμού κουκλοθέατρου.

πώς να ανοίξετε aws cli

Βασικοί όροι στον Προγραμματισμό Κουκλοθέατρου

Εκδηλώσεις

Ένα πρόγραμμα μαριονέτα ονομάζεται δηλωτικό και έχει όνομα αρχείου με .pp επέκταση. Το προεπιλεγμένο κύριο μανιφέστο του Puppet είναι /etc/puppet/manifests/site.pp . (Αυτό ορίζεικαθολικές διαμορφώσεις συστήματος, όπως διαμόρφωση LDAP, διακομιστές DNS ή άλλες διαμορφώσεις που ισχύουν για κάθε κόμβο.



Μαθήματα

Μέσα σε αυτές τις εκδηλώσεις ονομάζονται μπλοκ κώδικα τάξεις άλλες μονάδες μπορούν να καλέσουν. Οι τάξεις διαμορφώνουν μεγάλα ή μεσαία κομμάτια λειτουργικότητας, όπως όλα τα πακέτα, τα αρχεία διαμόρφωσης και τις υπηρεσίες που απαιτούνται για την εκτέλεση μιας εφαρμογής. Τα μαθήματα διευκολύνουν την επαναχρησιμοποίηση του κουκλοθέατρου και βελτιώνουν την αναγνωσιμότητα.

Πόροι

Ο κουκλοθέατρο αποτελείται κυρίως από δηλώσεις πόρων. ΕΝΑ πόρος περιγράφει ένα συγκεκριμένο στοιχείο σχετικά με την επιθυμητή κατάσταση του συστήματος. Για παράδειγμα, μπορεί να περιλαμβάνει ότι πρέπει να υπάρχει ένα συγκεκριμένο αρχείο ή να εγκατασταθεί ένα πακέτο.

Ενότητες κουκλοθέατρου

Εκτός από το κύριοsite.ppδηλωτικό,αποθηκεύει εκδηλώσειςσε ενότητες .

Όλος ο κώδικας μαριονετών μας είναι οργανωμένος σε ενότητες που είναι τα βασικά δομικά στοιχεία της μαριονέτας που μπορούμε να επαναχρησιμοποιήσουμε και να μοιραστούμε. Κάθε ενότητα διαχειρίζεται μια συγκεκριμένη εργασία στην υποδομή, όπως η εγκατάσταση και η διαμόρφωση ενός λογισμικού.

Οι ενότητες περιέχουν τάξεις μαριονετών, καθορισμένους τύπους, εργασίες, σχέδια εργασιών, χωρητικότητα, τύπους πόρων και πρόσθετα, για παράδειγμα, προσαρμοσμένους τύπους ή γεγονότα. Εγκαταστήστε λειτουργικές μονάδες στο Puppetενότητα-διαδρομή. Η μαριονέτα φορτώνει όλο το περιεχόμενο από κάθε ενότητα στη διαδρομή ενότητας, καθιστώντας αυτόν τον κώδικα διαθέσιμο για χρήση.

Ενότητες - Προγραμματισμός κουκλοθέατρου - EdurekaΤο Puppetlabs έχει προκαθορισμένες λειτουργικές μονάδες από τις οποίες μπορούμε να τις χρησιμοποιήσουμε αμέσως κατεβάζοντάς τις PuppetForge . Θα μπορούσατε επίσης να δημιουργήσετε μια προσαρμοσμένη μαριονέτα ενότητα που ταιριάζει στις απαιτήσεις σας.

Ροή εργασίας του προγράμματος κουκλοθέατρου

Θα χρησιμοποιήσουμε τη δηλωτική γλώσσα του Puppet για να περιγράψουμε την επιθυμητή κατάσταση του συστήματος σε αρχεία που ονομάζονται μανιφέστο. Οι εκδηλώσεις περιγράφουν πώς πρέπει να διαμορφώσετε τους πόρους του δικτύου και του λειτουργικού σας συστήματος, όπως αρχεία, πακέτα και υπηρεσίες.

Η μαριονέτα συγκεντρώνει εκδηλώσεις σε καταλόγους και εφαρμόζει κάθε κατάλογο στον αντίστοιχο κόμβο του για να διασφαλίσει ότι η διαμόρφωση του tαυτός ο κόμβος είναι σωστόςσε όλη την υποδομή σας.

Επίδειξη: Αυτοματοποίηση της εγκατάστασης του Apache & MySQL

Αυτό το άρθρο σχετικά με τις ενότητες μαριονετών είναι πρακτικό που θα δείξει δύο τρόπους χρήσης μιας μονάδας κουκλοθέατρου και επίσης θα σας διδάξει πώς να το κάνετε αυτοματοποίηση την εγκατάσταση ενός διακομιστή διαμορφωμένου με αυτές τις δύο ενότητες.

Αρχικά, βεβαιωθείτε ότι έχετε έτοιμη μια υποδομή κουκλοθέατρου που θα περιλαμβάνει έναν κύριο διακομιστή κουκλοθέατρου και 2 αντιπροσώπους κουκλοθέατρου.

  • Puppet Master: Ubuntu 18.04
  • Πράκτορας 1: Ubuntu 18.04
  • Πράκτορας 2:CentOS7

Ακολουθεί μια περιγραφή του τι θα επιτύχουμε σε αυτό το πρακτικό:


Ας ξεκινήσουμε με τα πρακτικά:

Δημιουργία μονάδας από το μηδέν

Σε αυτήν την ενότητα μαριονετών, θα ασχοληθούμε με εργασίες όπως η λήψη του πακέτου Apache, η διαμόρφωση αρχείων και η ρύθμιση εικονικών κεντρικών υπολογιστών.

  • Από το Puppet Master, μεταβείτε στον κατάλογο της μονάδας Puppet και δημιουργήστε τον κατάλογο Apache:
    cd / etc / puppet / modules sudo mkdir apache
  • Από μέσα στον κατάλογο apache, δημιουργήστε υποκαταλόγους: δηλωτικά, πρότυπα, αρχεία και παραδείγματα.
    cd apache sudo mkdir {εκδηλώσεις, πρότυπα, αρχεία, παραδείγματα}
  • Μεταβείτε στον κατάλογο δηλωτικών:
    εκδηλώσεις cd
  • Από εδώ, θα χωρίσουμε την ενότητα σε τάξεις με βάση τους στόχους αυτής της ενότητας κώδικα.

init.pp -> για λήψη του πακέτου Apache

params.pp -> για να ορίσετε τυχόν μεταβλητές και παραμέτρους

config.pp -> για τη διαχείριση τυχόν αρχείων διαμόρφωσης για την υπηρεσία Apache.

vhosts.pp -> για να ορίσετε τους εικονικούς κεντρικούς υπολογιστές.

Αυτή η ενότητα θα χρησιμοποιήσει επίσης Γεια (ένα ενσωματωμένο σύστημα αναζήτησης δεδομένων διαμόρφωσης κλειδιού-τιμής, που χρησιμοποιείται για το διαχωρισμό δεδομένων από τον κουκλοθέατρο) δεδομένα, για την αποθήκευση μεταβλητών για κάθε κόμβο.

Βήμα 1: Λήψη του πακέτου Apache

Δημιουργία κλάσης init.pp

Τώρα θα δημιουργήσουμε έναinit.ppαρχείο στον κατάλογο manifests για να κρατήσετε το πακέτο apache.
Καθώς έχουμε 2 διαφορετικά λειτουργικά συστήματα (ubuntu και CentOS7) που χρησιμοποιούν διαφορετικά ονόματα πακέτων για το Apache, θα πρέπει να χρησιμοποιήσουμε μια μεταβλητή$ apachename.

/etc/puppetlabs/code/environments/production/modules/apache/manifests/init.pp

class apache {πακέτο {'apache': name => $ apachename, sure => present,}}

πακέτο πόρος επιτρέπει τη διαχείριση ενός πακέτου. Αυτό χρησιμοποιείται για την προσθήκη, την αφαίρεση ή τη διασφάλιση ότι υπάρχει ένα πακέτο.

Στις περισσότερες περιπτώσεις, το όνομα του πόρου (απάχης, παραπάνω) θα πρέπει να είναι το όνομα του πακέτου που διαχειρίζεται. Λόγω των διαφορετικών συμβάσεων ονομασίας,ονομάζουμε το πραγματικό όνομα του πακέτουμε το όνομα αναφορά. Έτσι όνομα , ζητά την ακόμη μη καθορισμένη μεταβλητή$ apachename.

εξασφαλίζω Η αναφορά διασφαλίζει ότι το πακέτο είναιπαρόν.

Δημιουργία αρχείου params.pp

οparams.ppαρχείο θα καθορίσει τις απαραίτητες μεταβλητές. Ενώ θα μπορούσαμε να ορίσουμε αυτές τις μεταβλητές μέσα στοinit.ppαρχείο, καθώς περισσότερες μεταβλητές θα πρέπει να χρησιμοποιούνται εκτός του ίδιου του τύπου πόρου, χρησιμοποιώντας έναparams.ppΤο αρχείο επιτρέπει τον καθορισμό των μεταβλητών στοανδηλώσεις και χρησιμοποιούνται σε πολλές κατηγορίες.

Δημιουργώ έναparams.ppαρχείο και τον ακόλουθο κώδικα.

/etc/puppetlabs/code/environments/production/modules/apache/manifests/params.pp

class apache :: params {if $ :: osfamily == 'RedHat' {$ apachename = 'httpd'} elsif $ :: osfamily == 'Debian' {$ apachename = 'apache2'} άλλο {απέτυχε ('αυτό δεν είναι μια υποστηριζόμενη διανομή. ')}}

Έξω από το πρωτότυπο init.ppτάξη, κάθε όνομα κλάσης πρέπει να διαχωριστεί απόαπάχης. Αυτό το λέμε ως apache :: params . Το όνομα μετά τη διπλή άνω και κάτω τελεία πρέπει να μοιράζεται ένα όνομα με το αρχείο. ΕναανΗ δήλωση χρησιμοποιείται για τον καθορισμό των παραμέτρων, αντλώντας από τις πληροφορίες που παρέχονται από Παράγοντας , Η Puppet διαθέτει εγκατάσταση facter ως μέρος της ίδιας της εγκατάστασής της. Εδώ, ο Facter θα κατεβάσει την οικογένεια του λειτουργικού συστήματος (osfamily), για να διακρίνει εάν είναικόκκινο καπέλοήΜε βάση το Debian.

Με τις παραμέτρους που έχουν οριστεί τελικά, πρέπει να καλέσουμε το params.pp αρχείο και τις παραμέτρους σεinit.pp. Για να γίνει αυτό, πρέπει να προσθέσουμε τις παραμέτρους μετά το όνομα της τάξης, αλλά πριν από το άνοιγμα του σγουρού βραχίονα({).

Ετσι τοinit.ppπου δημιουργήσαμε νωρίτερα πρέπει να μοιάζει με αυτό:

class apache ($ apachename = $ :: apache :: params :: apachename,) κληρονομικά :: apache :: params {πακέτο {'apache': name => $ apachename, sure => present,}}

Η συμβολοσειρά τιμής $ :: apache :: params :: τιμή λέει στη μαριονέτα να τραβήξει τις τιμές από το απάχης ενότητες, παραμάς κλάση, ακολουθούμενο από το όνομα παραμέτρου. Το θραύσμα κληρονομιά :: apache :: params επιτρέπει γιαinit.ppνα κληρονομήσουν αυτές τις τιμές.

Βήμα 2: Διαχείριση αρχείων διαμόρφωσης

Το αρχείο διαμόρφωσης Apache θα είναι διαφορετικό ανάλογα με το αν εργάζεστε σε ένα σύστημα που βασίζεται σε Red Hat ή Debian.

Μπορείτε να βρείτε τα ακόλουθα αρχεία εξάρτησης στο τέλος αυτής της επίδειξης:httpd.conf(Κόκκινο καπέλο),apache2.conf(Ντέμπιαν).

  • Αντιγράψτε το περιεχόμενο του httpd.conf καιapache2.confσε ξεχωριστά αρχεία και αποθηκεύστε τα στο αρχεία Ευρετήριοστο / etc / puppetlabs / code / περιβάλλοντα / παραγωγή / ενότητες / apache / αρχεία .
  • Επεξεργαστείτε και τα δύο αρχεία καθιστώ ανίκανο κρατήσει ζωντανή. Θα πρέπει να προσθέσετε τη γραμμή KeepAlive Απενεργοποιημένο στοhttpd.confαρχείο. Εάν δεν θέλετε να αλλάξετε αυτήν τη ρύθμιση, πρέπει να προσθέσουμε ένα σχόλιο στην κορυφή του καθενόςαρχείο:
    /etc/puppetlabs/code/environments/production/modules/apache/files/httpd.conf
Η διαχείριση αυτού του αρχείου γίνεται από μαριονέτα

Προσθέστε αυτά τα αρχεία στοinit.ppαρχείο, οπότε η Puppet θα γνωρίζει τη θέση αυτών των αρχείων τόσο στον κύριο διακομιστή όσο και στους κόμβους πράκτορα. Για να το κάνουμε αυτό, χρησιμοποιούμε το αρχείο πόρος.

/etc/puppetlabs/code/environments/production/modules/apache/manifests/init.pp

αρχείο {'config-file': path => $ conffile, sure => file, source => $ confsource,}

Επειδή έχουμε τα αρχεία διαμόρφωσης σε δύο διαφορετικές τοποθεσίες, δίνουμε στον πόρο το γενικό όνομα αρχείο διαμόρφωσης με το αρχείο μονοπάτι ορίζεται ως παράμετρος με τομονοπάτιΧαρακτηριστικό.

εξασφαλίζω διασφαλίζει ότι είναι αρχείο.

πηγή παρέχει την τοποθεσία στο Master Puppet των αρχείων που δημιουργήθηκαν παραπάνω.

Ανοιξε τοparams.ppαρχείο.

Ορίζουμε το $ conffile και $ confsourceμεταβλητές εντός τουανδήλωση:

/etc/puppetlabs/code/environments/production/modules/apache/manifests/params.pp

αν $ :: osfamily == 'RedHat' {... $ conffile = '/etc/httpd/conf/httpd.conf' $ confsource = 'puppet: ///modules/apache/httpd.conf'} elsif $: : osfamily == 'Debian' {... $ conffile = '/etc/apache2/apache2.conf' $ confsource = 'puppet: ///modules/apache/apache2.conf'} άλλο {...

Πρέπει να προσθέσουμε τις παραμέτρους στην αρχή τουαπάχηςδήλωση τάξης στοinit.ppαρχείο, παρόμοιο με το προηγούμενο παράδειγμα.

Όταν αλλάζει το αρχείο διαμόρφωσης, πρέπει να γίνει επανεκκίνηση του Apache. Για να αυτοματοποιήσουμε αυτό, μπορούμε να χρησιμοποιήσουμε τον πόρο υπηρεσίαςσε συνδυασμό με το κοινοποιώ χαρακτηριστικό, το οποίο θα καλέσει τον πόρο να εκτελείται κάθε φορά που αλλάζει το αρχείο διαμόρφωσης:

/etc/puppetlabs/code/environments/production/modules/apache/manifests/init.pp

αρχείο {'config-file': path => $ conffile, sure => file, source => $ confsource, notify => Service ['apache-service'],} service {'apache-service': name => $ apachename, hasrestart => true,}

υπηρεσία Ο πόρος χρησιμοποιεί την ήδη δημιουργημένη παράμετρο που καθόρισε το όνομα Apache στα συστήματα Red Hat και Debian.
επανεκκίνηση Το χαρακτηριστικό χρησιμοποιείται για την ενεργοποίηση της επανεκκίνησης της καθορισμένης υπηρεσίας.

Βήμα 3: Δημιουργήστε τα εικονικά αρχεία κεντρικού υπολογιστή

Ανάλογα με τη διανομή του συστήματός σας, τα αρχεία του εικονικού κεντρικού υπολογιστή θα διαχειρίζονται διαφορετικά. Εξαιτίας αυτού, θα ενσωματώσουμε τον κώδικα για εικονικούς κεντρικούς υπολογιστές σε έναανδήλωση, παρόμοια με αυτήν που χρησιμοποιείται στοparams.ppτάξη αλλά περιέχει πραγματικούς πόρους μαριονέτας.

  • Από μέσα στοapache / εκδηλώσεις /κατάλογο, δημιουργία και άνοιγμα avhosts.ppαρχείο. Προσθέστε το σκελετό τουανδήλωση:

/etc/puppetlabs/code/environments/production/modules/apache/manifests/vhosts.pp

τι είναι ένα μεταπτυχιακό πιστοποιητικό
class apache :: vhosts {if $ :: osfamily == 'RedHat' {} elsif $ :: osfamily == 'Debian' {} άλλο {}}

Η τοποθεσία του εικονικού κεντρικού αρχείου στον διακομιστή CentOS 7 είναι/etc/httpd/conf.d/vhost.conf . Πρέπει να δημιουργήσετε το αρχείο ως πρότυπο στο Master Puppet. Κάντε το ίδιο για το αρχείο εικονικών κεντρικών υπολογιστών του Ubuntu, στο οποίο βρίσκεται/etc/apache2/sites-available/example.com.conf, αντικαθιστώνταςexample.comμε το FQDN του διακομιστή.

  • Μεταβείτε στο πρότυπα αρχείο εντός του απάχης ενότητα και, στη συνέχεια, δημιουργήστε δύο αρχεία για τους εικονικούς κεντρικούς υπολογιστές σας:

Για συστήματα Red Hat:
/etc/puppetlabs/code/environments/production/modules/apache/templates/vhosts-rh.conf.erb

ServerAdmin ServerName ServerAlias ​​www. DocumentRoot / var / www // public_html / ErrorLog /var/www//logs/error.log CustomLog /var/www//logs/access.log σε συνδυασμό

Για συστήματα Debian:
/etc/puppet/modules/apache/templates/vhosts-deb.conf.erb

ServerAdmin ServerName ServerAlias ​​www. DocumentRoot / var / www / html // public_html / ErrorLog /var/www/html//logs/error.log CustomLog /var/www/html//logs/access.log σε συνδυασμόΑπαιτήστε όλα τα δεδομένα

Χρησιμοποιούμε μόνο δύο μεταβλητές σε αυτά τα αρχεία: διεύθυνση ηλεκτρονικού ταχυδρομείου και όνομα διακομιστή . Θα τα ορίσουμε σε βάση κόμβου προς κόμβο, μέσα στοsite.ppαρχείο.

  • Επιστροφή στοvhosts.ppαρχείο. Τα πρότυπα που δημιουργήθηκαν μπορούν τώρα να αναφέρονται στον κώδικα:

/etc/puppetlabs/code/environments/production/modules/apache/manifests/vhosts.pp

class apache :: vhosts {if $ :: osfamily == 'RedHat' {file {'/etc/httpd/conf.d/vhost.conf': sure => file, content => πρότυπο ('apache / vhosts-rh .conf.erb '),}} elsif $ :: osfamily ==' Debian '{file {' /etc/apache2/sites-available/$servername.conf ': sure => file, content => template (' apache /vhosts-deb.conf.erb '),}} αλλιώς {fail ('Αυτή δεν είναι μια υποστηριζόμενη διανομή.')}}

Και οι δύο οικογένειες διανομής καλούν στοαρχείοπόρος και πάρτε τον τίτλο της τοποθεσίας του εικονικού κεντρικού υπολογιστή στην αντίστοιχη διανομή. Για το Debian, αυτό σημαίνει για άλλη μια φορά την αναφορά του$ όνομα διακομιστήαξία. οπεριεχόμενοΤο χαρακτηριστικό καλεί τα αντίστοιχα πρότυπα.

  • Και τα δύο εικονικά αρχεία κεντρικού υπολογιστή αναφέρονται σε δύο καταλόγους. Δεν είναι στα συστήματα από προεπιλογή. Μπορούμε να τα δημιουργήσουμε με τη χρήση τουαρχείοπόρος, καθένας εντός τουανδήλωση. Το πλήρεςvhosts.confτο αρχείο πρέπει να μοιάζει:

/etc/puppetlabs/code/environments/production/modules/apache/manifests/vhosts.pp

class apache :: vhosts {if $ :: osfamily == 'RedHat' {file {'/etc/httpd/conf.d/vhost.conf': sure => file, content => πρότυπο ('apache / vhosts-rh .conf.erb '),} αρχείο {[' / var / www / $ servername ',' / var / www / $ servername / public_html ',' / var / www / $ servername / log ',]: sure => κατάλογος,}} elsif $ :: osfamily == 'Debian' {file {'/etc/apache2/sites-available/$servername.conf': sure => file, content => template ('apache / vhosts-deb. conf.erb '),} αρχείο {[' / var / www / $ servername ',' / var / www / $ servername / public_html ',' / var / www / $ servername / logs ',]: memastikan => κατάλογος ,}} αλλιώς {fail ('Αυτή δεν είναι μια υποστηριζόμενη διανομή.')}}

Βήμα 4: Δοκιμάστε τη λειτουργική μονάδα

  • Μεταβείτε στοapache / εκδηλώσεις /κατάλογο, εκτελέστε το αναλυτής μαριονετών σε όλα τα αρχεία για να βεβαιωθείτε ότι η κωδικοποίηση Puppet είναι χωρίς σφάλμα:

sudo / opt / puppetlabs / bin / puppet parser επικύρωση init.pp params.pp vhosts.pp

Θα πρέπει να επιστρέψει άδειο, χωρίς προβλήματα.

  • Μεταβείτε στο παραδείγματα κατάλογο εντός τουαπάχηςμονάδα μέτρησης. Δημιουργήστε έναinit.ppαρχείο και συμπεριλάβετε τις δημιουργημένες τάξεις. Αντικαταστήστε τις τιμές για$ όνομα διακομιστήκαι$ adminemailμε το δικό σας:

/etc/puppetlabs/code/environments/production/modules/apache/examples/init.pp

serveremail = 'webmaster@example.com' $ servername = 'puppet.example.com' include apache include apache :: vhosts
  • Δοκιμάστε τη μονάδα εκτελώντας ισχύει μαριονέτα με την - Όχι ετικέτα:
    ισχύουν sudo / opt / puppetlabs / bin / puppet --noop init.pp

Δεν πρέπει να επιστρέφει σφάλματα και έξοδο που θα ενεργοποιεί ανανεώσεις από συμβάντα. Για να εγκαταστήσετε και να ρυθμίσετε το apache στο Master Puppet, εκτελέστε ξανά χωρίς- Όχι, εάν το επιθυμείτε.

  • Πλοηγηθείτε πίσω στον κύριο κατάλογο Puppet και μετά στοεκδηλώνεταιντοσιέ (δεναυτό που υπάρχει στη μονάδα Apache).

cd / etc / puppetlabs / code / περιβάλλοντα / παραγωγή / μανιφέστο

Δημιουργώ έναsite.ppαρχείο,και συμπεριλάβετε τη μονάδα Apache για κάθε κόμβο παράγοντα. Εισαγάγετε επίσης τις μεταβλητές για τοδιεύθυνση ηλεκτρονικού ταχυδρομείου και όνομα διακομιστήΠαράμετροι. Τα δικα σουsite.ppπρέπει να μοιάζει με τα ακόλουθα:

/etc/puppetlabs/code/environments/production/manifests/site.pp

κόμβος 'puppet-agent-ubuntu.example.com' {$ adminemail = 'webmaster@example.com' $ servername = 'puppet.example.com' include apache include apache :: vhosts} κόμβος 'puppet-agent-centos.example .com '{$ adminemail =' webmaster@example.com '$ servername =' puppet.example.com 'include apache include apache :: vhosts}

Από προεπιλογή, η υπηρεσία παράγοντα Puppet στους διαχειριζόμενους κόμβους σας θα ελέγχει αυτόματα με τον κύριο μία φορά κάθε 30 λεπτά και θα εφαρμόζει νέες διαμορφώσεις από τον κύριο. Μπορείτε επίσης να καλέσετε με μη αυτόματο τρόπο τη διαδικασία του πράκτορα Puppet μεταξύ των αυτόματων εκτελέσεων πράκτορα. Για να εκτελέσετε μη αυτόματα τη νέα λειτουργική μονάδα στους κόμβους πράκτορα, συνδεθείτε στους κόμβους και εκτελέστε:

πίνακας αντικειμένων σε Java

sudo / opt / puppetlabs / bin / puppet agent -t

Τώρα που έχουμε μάθει πώς να δημιουργούμε μια ενότητα από το μηδέν, ας μάθουμε πώς να χρησιμοποιούμε μια προϋπάρχουσα ενότητα από τη μαριονέτα σφυρηλάτηση κουκλών.

Χρησιμοποιήστε μια ενότητα από το PuppetForge

Κουκλοθέατρο έχει ήδη πολλές λειτουργικές μονάδες για να εκτελεστεί ο διακομιστής. Μπορούμε να τα διαμορφώσουμε εξίσου εκτενώς με μια ενότητα που δημιουργήσατε και μπορούμε να εξοικονομήσουμε χρόνο αφού δεν χρειάζεται να δημιουργήσουμε τη μονάδα από την αρχή.

Βεβαιωθείτε ότι είστε στο / etc / puppetlabs / code / περιβάλλοντα / παραγωγή / ενότητες κατάλογο και εγκαταστήστε το Η ενότητα MySQL της Puppet Forge από PuppetLabs. Αυτό θα εγκαταστήσει επίσης τυχόν προϋποθέσεις.

cd / etc / puppetlabs / code / περιβάλλοντα / παραγωγή / ενότητες

sudo / opt / puppetlabs / bin / puppet module install puppetlabs-mysql

Χρησιμοποιήστε το Hiera για να δημιουργήσετε βάσεις δεδομένων

Πριν δημιουργήσετε τα αρχεία διαμόρφωσης για τη μονάδα MySQL, σκεφτείτε ότι ενδέχεται να μην θέλετε να χρησιμοποιήσετε τις ίδιες τιμές σε όλους τους κόμβους πρακτόρων. Για να παρέχουμε στην Puppet τα σωστά δεδομένα ανά κόμβο, χρησιμοποιούμε Hiera. Θα χρησιμοποιήσετε διαφορετικό κωδικό πρόσβασης ρίζας ανά κόμβο, δημιουργώντας έτσι διαφορετικές βάσεις δεδομένων MySQL.

  • Μεταβείτε στο/ κλπ / μαριονέτακαι δημιουργήστε το αρχείο διαμόρφωσης της Hierahiera.yamlστο κεντρικόμαριονέταΕυρετήριο. Θα χρησιμοποιήσετε τις προεπιλεγμένες τιμές της Hiera:

/etc/puppetlabs/code/environments/production/hiera.yaml

--- έκδοση: 5 ιεραρχία: - όνομα: Κοινή διαδρομή: common.yaml προεπιλογές: data_hash: yaml_data datadir: data
  • Δημιουργήστε το αρχείοκοινό.αμίλ. Θα καθορίσει την προεπιλογή ρίζα κωδικός πρόσβασης για τη MySQL:

/etc/puppetlabs/code/environments/production/common.yaml

mysql :: server :: root_password: 'κωδικός πρόσβασης'

Χρησιμοποιούμε τοκοινό.αμίλαρχείοόταν μια μεταβλητή δεν ορίζεται αλλού. Αυτό σημαίνει ότι όλοι οι διακομιστές θα μοιράζονται τον ίδιο κωδικό πρόσβασης ρίζας MySQL. Αυτοί οι κωδικοί πρόσβασης μπορούν επίσης να κατακερματιστούν για να αυξήσουν την ασφάλεια.

  • Για να χρησιμοποιήσετε τις προεπιλογές της μονάδας MySQL μπορείτε να προσθέσετε ένα συμπεριλάβετε «:: mysql :: server» γραμμή προς τοsite.ppαρχείο. Ωστόσο, σε αυτό το παράδειγμα, θα παρακάμψετε ορισμένες από τις προεπιλογές της μονάδας για να δημιουργήσετε μια βάση δεδομένων για καθέναν από τους κόμβους σας.

Επεξεργαστείτε τοsite.ppαρχείο με τις ακόλουθες τιμές:

κόμβος 'Puppetagent-ubuntu.example.com' {$ adminemail = 'webmaster@example.com' $ servername = 'hostname.example.com' include apache include apache :: vhosts include mysql :: server mysql :: db {'mydb_ $ {fqdn} ': user =>' myuser ', password =>' mypass ', dbname =>' mydb ', host => $ :: fqdn, grant => [' SELECT ',' UPDATE '], tag = > $ domain,}} κόμβος 'Puppetagent-centos.example.com' {$ adminemail = 'webmaster@example.com' $ servername = 'hostname.example.com' include apache include apache :: vhosts include mysql :: server mysql :: db {'mydb _ $ {fqdn}': user => 'myuser', password => 'mypass', dbname => 'mydb', host => $ :: fqdn, grant => ['SELECT', ' ΕΝΗΜΕΡΩΣΗ '], tag => $ domain,}}

Αυτοματοποίηση της εγκατάστασης των Μαριονετών Μονάδων από το κουκλοθέατρο έως το κουκλοθέατρο

  • Μπορείτε να εκτελέσετε αυτές τις ενημερώσεις με μη αυτόματο τρόπο σε κάθε κόμβο μέσω SSH σε κάθε κόμβο και εκδίδοντας την ακόλουθη εντολή:

sudo / opt / puppetlabs / bin / puppet agent -t

  • Διαφορετικά, η υπηρεσία παράγοντα Puppet στους διαχειριζόμενους κόμβους σας θα ελέγχει αυτόματα με τον κύριο μία φορά κάθε 30 λεπτά και θα εφαρμόζει τυχόν νέες διαμορφώσεις από τον κύριο.

Ο κατάλογος εφαρμόστηκε με επιτυχία στον πράκτορα Ubuntu

Ο κατάλογος εφαρμόστηκε με επιτυχία στον πράκτορα CentOS

Έτσι, γίνεται ολόκληρη η εγκατάσταση αυτοματοποιημένο στους κόμβους πράκτορα εφαρμόζοντας απλά τον κατάλογο.Μπορείτε να βρείτε τα αρχεία κώδικα και τις εξαρτήσεις που χρησιμοποιούνται για αυτήν την επίδειξη εδώ .

Ελπίζω ότι αυτό το demo σας βοήθησε να αποκτήσετε μια ξεκάθαρη ιδέα για μαριονέτες και εκδηλώσεις και τη χρήση τους για την αυτοματοποίηση της υποδομής πληροφορικής.Σε αυτήν την περίπτωση, η εργασία σας γίνεται τόσο εύκολη, απλώς καθορίστε τις διαμορφώσεις στο Puppet Master και οι πράκτορες Puppet θα αξιολογήσουν αυτόματα το κύριο μανιφέστο και θα εφαρμόσουν τη λειτουργική μονάδα που καθορίζει τις ρυθμίσεις Apache και MySQL. Εάν έχετε κολλήσει με οποιαδήποτε απορία, μη διστάσετε να τα δημοσιεύσετε .

Εάν το βρήκατε Εκμάθηση μαριονετών σχετικό, δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα Εκπαίδευσης Πιστοποίησης Edureka DevOps βοηθά τους μαθητές να αποκτήσουν εμπειρία σε διάφορες διαδικασίες και εργαλεία DevOps όπως Puppet, Jenkins, Nagios και GIT για την αυτοματοποίηση πολλαπλών βημάτων στο SDLC.