ansible roles integration with jenkins devops
Μια σε βάθος ματιά στα τμήματα Ansible Roles, Integration with Jenkins, και Ansible S3 και EC2:
Στο μέρος 2 απο σειρές για Ansible tutorials , μάθαμε πώς τα βιβλία παιχνιδιών Ans1ible χρησιμοποιούνται για την εκτέλεση πολλαπλών εργασιών και για να φέρουμε όλους τους υπολογιστές-στόχους ή τους διακομιστές σε μια συγκεκριμένη επιθυμητή κατάσταση.
Συνιστώμενη ανάγνωση => Εκθετική σειρά προπόνησης DevOps
Τα αναγνωρίσιμα βιβλία αναπαραγωγής είναι κυρίως αρχεία YAML που περιέχουν πολλές εργασίες σε ένα τεράστιο αρχείο που δεν είναι αρθρωτό και επαναχρησιμοποιήσιμο. Αλλά αν πρέπει να διαλύσετε ολόκληρη τη διαμόρφωσή σας και να είστε πιο αρθρωτοί και επαναχρησιμοποιήσιμοι, τότε οι ρόλοι Ansible θα βοηθήσουν πολύ.
Σε αυτό το Ansible Tutorial , θα εξετάσουμε τους ρόλους Ansible, Integrate Ansible with Jenkins για συνεχή παράδοση από άποψη DevOps και το πιο σημαντικό θα δούμε τις μονάδες Ansible S3 και EC2 για τη διαχείριση παρουσιών AWS EC2 (Δημιουργία και τερματισμός παρουσιών EC2).
Τι θα μάθετε:
- Αβίαστοι ρόλοι
- Jenkins Integration with Ansible
- Διαχείριση αντικειμένων AWS S3 με το Ansible
- Παρέχετε μια παρουσία AWS EC2 χρησιμοποιώντας το Ansible
- Τερματισμός παρουσιών EC2
- Περίληψη
- Συνιστώμενη ανάγνωση
Αβίαστοι ρόλοι
Με ρόλους Ansible μπορείτε να ομαδοποιήσετε τις μεταβλητές, τις εργασίες, τους χειριστές κ.λπ., οι οποίες αυξάνουν την επαναχρησιμοποίηση και σίγουρα μειώνουν τα συντακτικά λάθη. Βοηθά στην αποσυμπίεση ολόκληρου του κώδικα.
Οι ρόλοι των κατηγοριών είναι παρόμοιοι με τις ενότητες στο Puppet και τα βιβλία μαγειρικής στο Chef.
Για να δημιουργήσετε ρόλους, χρησιμοποιείτε το άσβεστος γαλαξίας εντολή που έχει όλα τα πρότυπα για τη δημιουργία της.
Παράδειγμα σεναρίου
Είμαι ειδικός του DevOps για το μεγαλύτερο μέρος της ζωής μου και εργάζομαι μόνο σε CI και CD.
Έτσι, για παράδειγμα σε συνεχή παράδοση, όπου αναπτύσσω μια νέα έκδοση της εφαρμογής J2EE (αρχείο WAR) για να ταιριάξω τα βήματά μου θα ήταν τα εξής:
- Σταματήστε την εφαρμογή
- Απεγκαταστήστε την εφαρμογή
- Αναπτύξτε τη νέα έκδοση μιας εφαρμογής
- Ξεκινήστε την εφαρμογή
Έτσι θα δημιουργούσα έναν ρόλο με τουλάχιστον 4 εργασίες και ένα κύριο αρχείο που θα το καλούσε. Με αυτόν τον τρόπο κάνω τον κωδικό μου πιο αρθρωτό και επαναχρησιμοποιήσιμο. Ας ονομάσουμε λοιπόν αυτόν τον ρόλο ως γάτος και δημιουργήστε το.
$ cd /etc/ansible/roles $ sudo ansible-galaxy init tomcat --offline
Μόλις δημιουργηθεί ο ρόλος, μπορείτε να δείτε τη δομή καταλόγου που έχει δημιουργήσει.
Τα κύρια συστατικά που θα χρησιμοποιήσουμε σε αυτήν την ενότητα περιλαμβάνουν:
- task / main.yml - Αυτό είναι το σημείο εκκίνησης για εργασίες που δημιουργούνται για το ρόλο. Μπορείτε να χρησιμοποιήσετε το αρχείο main.yml για να δείξετε στα άλλα αρχεία εργασιών.
- του οποίου - Αυτό είναι για τον καθορισμό τυχόν μεταβλητών που χρησιμοποιούνται.
- μετα - Αυτό είναι για τον καθορισμό πληροφοριών για τον εαυτό σας ή τον συγγραφέα.
Βήμα 1: Δημιουργήστε την κύρια λίστα όλων των εργασιών
Επεξεργαστείτε το task / main.yml αρχείο και προσθέστε τον παρακάτω κωδικό. Σύμφωνα με το παράδειγμα σεναρίου που αναφέρθηκε παραπάνω, ορίζουμε 4 διαφορετικές εργασίες. Στις περισσότερες περιπτώσεις, η εφαρμογή ανάπτυξης θα ξεκινήσει επίσης την εφαρμογή, οπότε ενδέχεται να μην απαιτείται η τελευταία από την εφαρμογή εκκίνησης.
--- # tasks file for tomcat - import_tasks: stop_app.yml - import_tasks: uninstall_app.yml - import_tasks: deploy_app.yml - import_tasks: start_app.yml
Βήμα 2: Δημιουργήστε και τα 4 αρχεία σύμφωνα με το σενάριο
Στις παρακάτω εργασίες δράση: ec2_facts χρησιμοποιείται για τη λήψη γεγονότων από απομακρυσμένες περιπτώσεις EC2 και την κλήση τους σε παιχνίδια / εργασίες
Εργασίες / αρχείο stop_app.yml
--- - name: Gather EC2 instance metadata action: ec2_facts - name: Stop application on {{ansible_hostname}} command: wget 'http://{{tomcat_user}}:{{tomcat_pwd}}@{{ansible_ec2_public_ipv4}}:8080/manager/text/ stop ?path=/HelloWorld-Maven' -O - -q
task / uninstall_app.yml
--- - name: Gather EC2 instance metadata action: ec2_facts - name: Undeploy application on {{ansible_hostname}} command: wget 'http://{{tomcat_user}}:{{tomcat_pwd}}@{{ansible_ec2_public_ipv4}}:8080/manager/text/undeploy?path=/HelloWorld-Maven' -O - -q
task / deploy_app.yml
--- - name: Deploy the new WAR file to target servers copy: src=/var/lib/jenkins/workspace/Demo-Maven-Project/target/HelloWorld-Maven.war dest=/home/ansible/tomcat/webapps
Στον κώδικα ανάπτυξης εάν το JENKINS χρησιμοποιείται για τη δημιουργία του αρχείου WAR, τότε πρέπει να παρέχετε τον κατάλογο προέλευσης του αρχείου WAR στο αντίγραφο ενότητα και ο προορισμός είναι η τοποθεσία webapps του διακομιστή προορισμού του tomcat.
task / start_app.yml
--- - name: Gather EC2 instance metadata action: ec2_facts - name: Start application on {{ansible_hostname}} command: wget 'http://{{tomcat_user}}:{{tomcat_pwd}}@{{ansible_ec2_public_ipv4}}:8080/manager/text/start?path=/HelloWorld-Maven' -O - -q
Βήμα 3: Ορίστε μεταβλητές
Επεξεργαστείτε το vars / main.yml αρχείο και προσθέστε τον κωδικό όπως φαίνεται παρακάτω.
--- # vars file for tomcat tomcat_user: tomcat tomcat_pwd: tomcat
Βήμα 4: Ορίστε πληροφορίες στο φάκελο meta
Επεξεργαστείτε το αρχείο meta / main.yml και προσθέστε τις πληροφορίες σας όπως συγγραφέας, περιγραφή και εταιρεία.
tcp ip ερωτήσεις και απαντήσεις συνέντευξης pdf
galaxy_info: author: V Niranjan description: Devops specialist company:
Βήμα 5: Δημιουργήστε ένα κύριο αρχείο site.yml
Τέλος, δημιουργήστε το κύριο αρχείο site.yml για να καλέσετε το ρόλο που δημιουργήθηκε το οποίο με τη σειρά του θα βοηθήσει στην ανάπτυξη της εφαρμογής στους διακομιστές ή σε μια λίστα κεντρικών υπολογιστών σύμφωνα με το αρχείο αποθέματος. Δημιουργήστε το αρχείο ως /etc/ansible/site.yml
--- - hosts: webservers become: true roles: - apache
Βήμα 6: Εκτελέστε το αρχείο playbook site.yml
$ ansible-playbook site.yml
Εκκινήστε το Tomcat URL για να δείτε αν η εφαρμογή έχει αναπτυχθεί και ξεκινήσει.
HTTP: //: portno / manager
Jenkins Integration with Ansible
Σε αυτήν την ενότητα, θα δούμε πώς η Jenkins μπορεί να ενσωματωθεί στο Ansible. Το αρχείο WAR που δημιουργήθηκε χρησιμοποιώντας τη διαδικασία κατασκευής θα χρησιμοποιηθεί για ανάπτυξη στο Tomcat στο μηχάνημα προορισμού χρησιμοποιώντας το Ansible. Θα καλέσουμε τον ρόλο Ansible που δημιουργήθηκε στην προηγούμενη ενότητα στο Jenkins χρησιμοποιώντας το πρόσθετο Ansible.
Έτσι, μόλις ολοκληρωθεί η κατασκευή, η ανάπτυξη του αρχείου WAR θα ενεργοποιείται αυτόματα χρησιμοποιώντας το Ansible.
Διατηρώ αυτό το απλό και δεν έχω διαμορφώσει το Sonar ή το Artifactory ή το Junit κατά τη διάρκεια των δραστηριοτήτων συνεχούς ολοκλήρωσης που μπορούν επίσης να γίνουν.
Βήμα 1: Δημιουργήστε μια εργασία Jenkins και διαμορφώστε το repo SCM χρησιμοποιώντας τον κωδικό στο GitHub
Βήμα 2: Διαμορφώστε το build
Βήμα 3: Δημιουργία καταλόγου ρόλων στον χώρο εργασίας Jenkins
Βήμα 4: Δημιουργήστε το ρόλο του tomcat στην τοποθεσία του χώρου εργασίας Jenkins χρησιμοποιώντας την παρακάτω εντολή
$ sudo ansible-galaxy init tomcat –offline
Ακολουθήστε τη διαδικασία όπως στην προηγούμενη ενότητα για να δημιουργήσετε όλα τα αρχεία για εργασίες, vars, meta και το κύριο site.yml.
ερωτήσεις και απαντήσεις σε συνεντεύξεις υπηρεσιών διαδικτύου
Το κύριο site.yml το αρχείο δημιουργήθηκε στο / var / lib / Jenkins / χώρος εργασίας / Ευρετήριο.
Βήμα 5: Διαμορφώστε το βήμα μετά τη δημιουργία του Jenkins για να καλέσετε το βιβλίο αναπαραγωγής Ansible και να καλέσετε το αρχείο site.yml. Αποθηκεύστε τη δουλειά.
Βήμα 6: Ενεργοποιήστε την εργασία κατασκευής και ξεκινήστε τη διεύθυνση URL του Tomcat για να επαληθεύσετε εάν η εφαρμογή έχει αναπτυχθεί σωστά.
Διαχείριση αντικειμένων AWS S3 με το Ansible
Η ενότητα Ansible S3 μπορεί να χρησιμοποιηθεί για τη λήψη ή την τοποθέτηση ενός αρχείου σε ή από έναν κάδο S3. Για να χρησιμοποιήσουμε αυτήν την ενότητα θα πρέπει να εγκαταστήσουμε και να διαμορφώσουμε ψήφος ενότητα του python που λειτουργεί ως API (διεπαφή προγράμματος εφαρμογής) για πρόσβαση στο AWS. Αυτό πρέπει να εγκατασταθεί στο Μη αποδεκτή μηχανή ελέγχου.
Στο Redhat Linux
$ sudo yum install -y python python-dev python-pip
Στο Ubuntu
$ apt-get install -y python python-dev python-pip
Μόλις ολοκληρωθούν τα παραπάνω, εγκαταστήστε το boto
$ sudo pip install boto boto3
Εάν δεν μπορείτε να εγκαταστήσετε τότε θα πρέπει να ενεργοποιήσετε το EPEL repo. Η διαδικασία βρίσκεται στο μέρος 1 της σειράς άρθρων στην ενότητα εγκατάστασης anible.
Μόλις ολοκληρωθούν τα παραπάνω, πρέπει επίσης να παρέχουμε διαπιστευτήρια χρήστη AWS. Μπορείτε να εξαγάγετε τις μεταβλητές περιβάλλοντος πρόσβασης AWS και Secret Key
export AWS_ACCESS_KEY_ID='AK123' export AWS_SECRET_ACCESS_KEY='abc123'
Εάν σε περίπτωση ακόμη και μετά τον καθορισμό των παραπάνω μεταβλητών περιβάλλοντος, λάβετε ένα σφάλμα καθώς τα διαπιστευτήρια δεν βρέθηκαν, τότε μπορείτε επίσης να καθορίσετε το ίδιο στο playbook.
Ας δούμε τώρα μερικά παραδείγματα για το πώς να χρησιμοποιήσετε το Ansible με κάδους S3 και αργότερα για να δημιουργήσετε και να τερματίσετε παρουσίες.
Παράδειγμα 1:Δημιουργήστε έναν κενό κάδο με ένα φάκελο
--- - hosts: localhost become: true tasks: - name: Create an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket object=/development mode=create permission=public-read region=ap-south-1
Σημείωση: Εδώ δημιουργείται η λειτουργία για τη δημιουργία κάδου και η άδεια μπορεί να είναι δημόσια ανάγνωση ή δημόσια ανάγνωση
Εκτελέστε το βιβλίο αναπαραγωγής και δείτε τον κάδο που δημιουργήθηκε με το φάκελο ανάπτυξης μέσα σε αυτό.
Παράδειγμα 2:Για να αντιγράψετε (ανεβάσετε) ένα αρχείο στον κάδο S3
--- - hosts: localhost become: true tasks: - name: Copy file to S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansibleniru object=/niru.txt src=/home/ansible/niru.txt mode=put
Εδώ το αντικείμενο είναι το αρχείο που δημιουργήθηκε μέσα στον κάδο. Μπορεί να είναι ένα αρχείο ή φάκελος. Σε αυτήν την περίπτωση, είναι ένα αρχείο. Η πηγή είναι το αρχείο που παραλαμβάνεται από την τοπική μηχανή που είναι η μηχανή ελέγχου Ansible.
Σημείωση:Εδώ τίθεται ο τρόπος για τη μεταφόρτωση αντικειμένου
Εκτελέστε το βιβλίο αναπαραγωγής και δείτε τον κάδο S3.
Παράδειγμα 3:Λήψη (λήψη) του αρχείου από τον κάδο S3
--- - hosts: localhost become: true tasks: - name: Download file from S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansibleniru object=/niru.txt dest=/home/ansible/niranjan.txt mode=get
Σημείωση:Εδώ η λειτουργία είναι αντικείμενο λήψης
Παράδειγμα 4:Διαγράψτε ένα αντικείμενο ή ένα αρχείο από τον κάδο S3
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket aws_s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket object=/development/niranjan.txt mode=delobj
Σημείωση:Εδώ η λειτουργία είναι delobj για αντικείμενο διαγραφής
Παράδειγμα 5:Διαγράψτε έναν κάδο και όλα τα περιεχόμενα
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket mode=delete
Σημείωση:Εδώ η λειτουργία διαγράφεται για τον κάδο διαγραφής
Παρέχετε μια παρουσία AWS EC2 χρησιμοποιώντας το Ansible
Τέλος, θα σας αφήσω ένα από τα πιο σημαντικά χαρακτηριστικά του Ansible που είναι να δημιουργήσετε ή να δημιουργήσετε μια παρουσία AWS EC2 και επίσης πώς να τερματίσετε την παρουσία. Φυσικά, μην ξεχάσετε να το εγκαταστήσετε ψήφος που είναι προαπαιτούμενο και διασφαλίζει επίσης την εξαγωγή του χρήστη 'AWS_ACCESS_KEY_ID' και 'AWS_SECRET_ACCESS_KEY'.
Σε περίπτωση που η εξαγωγή δεν λειτουργεί βεβαιωθείτε ότι προσθέτετε το ίδιο στον κώδικα όπως φαίνεται παρακάτω.
συχνές ερωτήσεις και απαντήσεις στη συνέντευξη
Ο παρακάτω κώδικας θα σας δείξει πώς να δημιουργήσετε μια παρουσία EC2 μαζί με τη δημιουργία ομάδας ασφαλείας και ζεύγους κλειδιών.
- Δημιουργήστε μια ομάδα ασφαλείας
- Δημιουργήστε ζεύγος κλειδιών και το αρχείο PEM
- Δημιουργία παρουσίας EC2
- Αποθηκεύστε τη διεύθυνση IP της παρουσίας EC2 στο αναλώσιμο αρχείο αποθέματος
Υποθέτω ότι οι χρήστες που κάνουν αυτήν την άσκηση είναι καλά εξοικειωμένοι με τις έννοιες AWS EC2.
Προσθέστε τον παρακάτω κώδικα σε ένα αρχείο και εκτελέστε τον ίδιο για να επαληθεύσετε τη δημιουργία παρουσίας EC2 στην κονσόλα AWS. Δεδομένου ότι ο κώδικας είναι μεγάλος, χωρίζεται σε 2 σελίδες, αλλά φροντίστε να αποθηκεύσετε όλα σε ένα αρχείο yml.
--- - hosts: localhost become: true gather_facts: False vars: region: ap-south-1 instance_type: t2.micro ami: ami-5b673c34 # RedHat Linux 7.5 hosts_file: /etc/ansible/hosts tasks: - name: Create security group ec2_group: aws_access_key: aws_secret_key: name: 'vniranjan' description: 'V Niranjan Security Group' region: '{{ region }}' rules: - proto: tcp from_port: 22 to_port: 22 cidr_ip: 0.0.0.0/0 - name: Create an EC2 key ec2_key: aws_access_key: aws_secret_key: name: 'vniranjan' region: '{{ region }}' register: ec2_key - name: Save private key (PEM file) copy: content='{{ec2_key.key.private_key}}' dest=/home/ansible/vniranjan.pem mode=0600 when: ec2_key.changed - name: Create an ec2 instance ec2: aws_access_key: aws_secret_key: key_name: vniranjan group: vniranjan # security group name instance_type: '{{ instance_type}}' image: '{{ ami }}' wait: true region: '{{ region }}' count: 1 # default count_tag: Name: Demo instance_tags: Name: Demo register: ec2 - name: Save IP to inventory file lineinfile: dest: '{{hosts_file}}' insertafter: '(webservers)' line: '{{item.private_ip}}' with_items: '{{ec2.instances}}'
Εκτελέστε το βιβλίο αναπαραγωγής
Το αρχείο αποθέματος / etc / ansible / hosts ενημερώθηκε με ιδιωτική διεύθυνση IP
Συνδεθείτε στην παρουσία
ssh -i 'vniranjan.pem' ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
(Σημείωση:Κάντε κλικ στην παρακάτω εικόνα για μεγέθυνση)
Η ομάδα ασφαλείας δημιουργήθηκε
Το ζεύγος κλειδιών δημιουργήθηκε
Τερματισμός παρουσιών EC2
Σε αυτήν την ενότητα ας μάθουμε περισσότερα σχετικά με τον τερματισμό παρουσιών EC2.
Στην παρακάτω οθόνη μπορείτε να δείτε ότι εκτελούνται 2 παρουσίες και τα βήματα τερματισμού θα ήταν με την ακόλουθη σειρά:
- Τερματίστε τις παρουσίες EC2 χρησιμοποιώντας τα αναγνωριστικά παρουσίας
- Κατάργηση ομάδας ασφαλείας
- Αφαιρέστε το ζεύγος κλειδιών
Playbook για τερματισμό και των δύο παρουσιών EC2
--- - hosts: localhost gather_facts: false connection: local vars: instance_ids: - 'i-05945003313d20603' # Replace these with your EC2 instance id’s - 'i-0ce5ce5820bddf610' region: ap-south-1 keypair_name: vniranjan securitygroup_name: vniranjan tasks: - name: Terminate EC2 instance ec2: aws_access_key: aws_secret_key: instance_ids: '{{instance_ids}}' region: '{{region}}' state: absent wait: true - name: Remove EC2 Key ec2_key: aws_access_key: aws_secret_key: name: '{{keypair_name}}' state: absent region: '{{region}}' - name: Remove Security Group ec2_group: aws_access_key: aws_secret_key: name: '{{securitygroup_name}}' state: absent region: '{{region}}'
Περίληψη
Σήμερα, οι περισσότεροι από τους οργανισμούς πληροφορικής αναζητούν κάποιους τύπους διαφοροποιητών για να κερδίσουν επιχειρήσεις και να παρουσιάσουν το ίδιο στους πελάτες τους. Θα έλεγα ότι ο αυτοματισμός είναι σίγουρα ένας από τους βασικούς διαφοροποιητές.
Με εργαλεία όπως το Ansible, πιστεύω ότι θα πρέπει να μπορείτε να αυτοματοποιήσετε τις περισσότερες από τις επαναλαμβανόμενες μη αυτόματες εργασίες.
Έτσι τι μάθαμε από αυτό 3-μέρος σειρά Ansible Tutorial παρουσιάζει το Ansible ως ένα πολύ δημοφιλές και ισχυρό εργαλείο διαχείρισης διαμόρφωσης που βοηθά σε διάφορους τομείς αυτοματοποίησης, από αυτοματοποίηση εργασιών, ανάπτυξη εφαρμογών και παροχή cloud. Με αυτόν τον τρόπο, μιλάμε κυρίως για ενορχήστρωση πληροφορικής.
Ελπίζω να απολαύσατε το φάσμα των μαθημάτων Ansible και είμαι βέβαιος ότι θα έχετε αποκτήσει τεράστια γνώση για την ιδέα μέχρι τώρα.
Στη συνέχεια, θα μάθουμε πώς να Ενσωματώσουμε το Jenkins στο Selenium, το οποίο είναι επίσης μέρος της εκπαιδευτικής μας σειράς DevOps.
Εκπαιδευτικό πρόγραμμα PREV | ΕΠΟΜΕΝΟ Φροντιστήριο
Συνιστώμενη ανάγνωση
- Ansible Tutorial: Εγκατάσταση και χρήση με Ansible Modules
- Συνεχής ενοποίηση σε DevOps
- Συνεχής παράδοση σε DevOps
- Ενσωμάτωση της Jenkins με το Selenium WebDriver: Εκμάθηση βήμα προς βήμα
- Τι είναι ο Έλεγχος Ενσωμάτωσης (Tutorial with Integration Test παράδειγμα)
- Ενσωμάτωση σεληνίου με JMeter
- Αυτοματοποίηση εργασιών χρησιμοποιώντας βιβλία Playable Ansible και υποκαταστήματα Ansible με παραδείγματα
- Συνεχής ανάπτυξη σε DevOps