ansible roles integration with jenkins devops
Dubinski pregled odgovornih uloga, integracije s Jenkinsom i modula Ansible S3 i EC2:
U drugom dijelu od serija o tutorijalima za Ansible , naučili smo kako se Ans1ible playbooks koriste za izvršavanje višestrukih zadataka i dovođenje svih ciljnih strojeva ili poslužitelja u određeno željeno stanje.
Preporučeno čitanje => Eksponencijalne serije obuke za DevOps
Ansible playbooks su prvenstveno YAML datoteke koje sadrže više zadataka u jednoj velikoj datoteci koja nije modularna i može se ponovno koristiti. Ali ako trebate razbiti cijelu konfiguraciju i biti modularniji i višekratno upotrebljivi, uloge Ansible puno će vam pomoći.
U ovom odgovornom vodiču , osvrnut ćemo se na uloge Ansible, integrirati Ansible s Jenkinsom za kontinuiranu isporuku s gledišta DevOpsa i najvažnije na module Ansible S3 i EC2 za upravljanje AWS EC2 instancama (Stvaranje i ukidanje instanci EC2).
Što ćete naučiti:
- Odgovorljive uloge
- Jenkinsova integracija s Ansibleom
- Upravljajte objektima AWS S3 pomoću programa Ansible
- Osigurajte AWS EC2 instancu pomoću Ansible
- Završavanje instanci EC2
- Sažetak
- Preporučena literatura
Odgovorljive uloge
Pomoću odgovornih uloga možete grupirati svoje varijable, zadatke, rukovatelje itd., Što povećava ponovnu upotrebu i zasigurno smanjuje sintaksne pogreške. Pomaže u uklanjanju nereda cijelog koda.
Odgovorne uloge slične su modulima u Lutkama i kuharicama u Kuharu.
Da biste stvorili uloge, koristite ansible-galaksija naredba koja ima sve predloške za njezino stvaranje.
Primjer scenarija
Većinu svog života bio sam specijalist za DevOps i radio sam samo na CI i CD-u.
Tako bi, primjerice, u kontinuiranoj isporuci, gdje postavljam novu verziju svoje J2EE aplikacije (WAR datoteka) za tomcat moje korake, bili sljedeći:
- Zaustavite aplikaciju
- Deinstalirajte aplikaciju
- Primijenite novu verziju aplikacije
- Pokrenite aplikaciju
Dakle, stvarao bih ulogu s najmanje 4 zadatka i jednom glavnom datotekom koja je zove. Na ovaj način svoj kod činim modularnijim i ponovljivim. Pa nazovimo ovu ulogu kao mačak i stvoriti ga.
$ cd /etc/ansible/roles $ sudo ansible-galaxy init tomcat --offline 
Jednom kada je uloga stvorena, možete vidjeti strukturu direktorija koju je kreirala.
Glavne komponente koje ćemo koristiti u ovom odjeljku uključuju:
- zadaci / glavni.iml - Ovo je polazna točka za zadatke stvorene za ulogu. Datoteku main.yml možete koristiti za usmjeravanje na druge datoteke zadataka.
- čija - Ovo definira bilo koje korištene varijable.
- meta - Ovo služi za definiranje podataka o sebi ili autoru.
Korak 1: Stvorite glavni popis svih zadataka
Uredite zadaci / glavni.iml datoteku i dodajte donji kod. Prema gore spomenutom primjeru, definiramo 4 različita zadatka. U većini slučajeva aplikacija za postavljanje također će pokrenuti aplikaciju, pa posljednja od početne aplikacije možda neće biti potrebna.
--- # tasks file for tomcat - import_tasks: stop_app.yml - import_tasks: uninstall_app.yml - import_tasks: deploy_app.yml - import_tasks: start_app.yml Korak 2: Stvorite sve 4 datoteke prema scenariju
U zadacima u nastavku radnja: ec2_facts koristi se za dobivanje činjenica iz udaljenih instanci EC2 i njihovo pozivanje u igrama / zadacima
zadaci / datoteka 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 - -qzadaci / deinstaliraj_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 - -qzadaci / 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/webappsU kodu za razmještavanje ako se JENKINS koristi za izgradnju WAR datoteke, tada morate osigurati izvorni direktorij WAR datoteke u kopirati modul i odredište je ciljni poslužitelj webapps lokacija tomcat.
zadatak / 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 - -qKorak 3: Definirajte varijable
Uredite vars / glavni.iml datoteku i dodajte kôd kao što je prikazano u nastavku.
--- # vars file for tomcat tomcat_user: tomcat tomcat_pwd: tomcatKorak 4: Definirajte podatke u metamapi
Uredite datoteku meta / main.yml i dodajte svoje podatke poput autora, opisa i tvrtke.
kako pokrenuti json datoteku
galaxy_info: author: V Niranjan description: Devops specialist company: Korak 5: Stvorite glavnu datoteku site.yml
Na kraju, stvorite glavnu datoteku site.yml da biste pozvali stvorenu ulogu, što će zauzvrat pomoći u postavljanju aplikacije na poslužitelje ili na popis hostova prema datoteci inventara. Stvorite datoteku kao /etc/ansible/site.yml
--- - hosts: webservers become: true roles: - apacheKorak 6: Pokrenite datoteku playbook datoteke site.yml
$ ansible-playbook site.yml

Pokrenite Tomcat URL da biste vidjeli je li aplikacija postavljena i pokrenuta.
HTTP: //: portno / manager

Jenkinsova integracija s Ansibleom
U ovom ćemo odjeljku vidjeti kako Jenkins može biti integriran s Ansible. Datoteka WAR izgrađena korištenjem procesa gradnje koristit će se za postavljanje u Tomcat na ciljnom računalu pomoću Ansiblea. Pozvat ćemo ulogu Ansible stvorenu u prethodnom odjeljku u Jenkinsu pomoću dodatka Ansible.
Dakle, nakon završetka gradnje, postavljanje WAR datoteke automatski će se pokrenuti pomoću Ansiblea.
Držim ovo jednostavno i nisam konfigurirao Sonar ili Artifactory ili Junit tijekom kontinuiranih integracijskih aktivnosti koje se također mogu obaviti.
Korak 1: Stvorite Jenkinsov posao i konfigurirajte SCM repo pomoću koda u GitHubu

Korak 2: Konfigurirajte izgradnju

Korak 3: Stvorite direktorij uloga u Jenkinsovom radnom prostoru

Korak 4: Stvorite ulogu tomcat na mjestu radnog prostora Jenkins pomoću naredbe prikazane u nastavku
$ sudo ansible-galaxy init tomcat –offline

Slijedite postupak kao u prethodnom odjeljku za stvaranje svih datoteka za zadaci, vars, meta i glavna stranica.yml.
kako otvoriti bin datoteke windows 10
Glavni mjestu.yml datoteka je kreirana u / var / lib / Jenkins / radni prostor / imenik.
Korak 5: Konfigurirajte Jenkinsov korak nakon izrade da biste pozvali knjigu Ansible i nazvali datoteku site.yml. Spremi posao.

Korak 6: Pokrenite posao izrade i pokrenite Tomcat URL kako biste provjerili je li aplikacija pravilno raspoređena.

Upravljajte objektima AWS S3 pomoću programa Ansible
Ansible S3 modul može se koristiti za dobivanje ili stavljanje datoteke u ili iz segmenta S3. Da bismo koristili ovaj modul, trebat ćemo instalirati i konfigurirati glasanje modul pythona koji djeluje kao API (sučelje aplikacijskog programa) za pristup AWS-u. Ovo mora biti instalirano na Odgovorni upravljački stroj.
Na Redhatu Linux
$ sudo yum install -y python python-dev python-pipNa Ubuntuu
$ apt-get install -y python python-dev python-pipNakon što je gore navedeno, instalirajte boto
$ sudo pip install boto boto3Ako ne možete instalirati, morat ćete omogućiti EPEL repo. Postupak se može naći u 1. dijelu serije članaka u odjeljku o instalaciji ansible.
Nakon što je gore navedeno, također moramo pružiti vjerodajnice za AWS. Možete izvesti varijable okruženja AWS Access i Secret Key
export AWS_ACCESS_KEY_ID='AK123' export AWS_SECRET_ACCESS_KEY='abc123'Ako u slučaju da čak i nakon postavljanja gore navedenih varijabli okruženja dobijete pogrešku jer vjerodajnice nisu pronađene, možete ih isto navesti i u knjizi za igru.
Pogledajmo sada neke primjere kako koristiti Ansible sa S3 segmentima, a kasnije i za stvaranje i ukidanje instanci.
Primjer 1:Stvorite praznu kantu s mapom
--- - 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-1Bilješka: Ovdje je način stvoren za stvaranje segmenta, a Dopuštenje može biti javno čitano ili javno čitanje-pisanje
Pokrenite knjigu priručnika i pregledajte skup koji je stvoren s razvojnom mapom u njemu.


Primjer 2:Da biste kopirali (prenijeli) datoteku u S3 segment
--- - 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 Ovdje je objekt datoteka stvorena unutar segmenta. To može biti datoteka ili mapa. U ovom je slučaju riječ o datoteci. Izvor je datoteka preuzeta s lokalnog računala koji je upravljački stroj Ansible.
Bilješka:Ovdje se stavlja način za prijenos objekta
Pokrenite knjigu s igrama i pogledajte kantu S3.

Primjer 3:Nabavite (preuzmite) datoteku iz segmenta 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 Bilješka:Ovdje je način get for download objekt
Primjer 4:Izbrišite objekt ili datoteku iz S3 segmenta
--- - 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 Bilješka:Ovdje je način djelobj za brisanje objekta
Primjer 5:Izbrišite skup i sav sadržaj
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket mode=delete Bilješka:Ovdje je način brisanja za skup za brisanje
Osigurajte AWS EC2 instancu pomoću Ansible
Na kraju, ostavit ću vam jednu od najvažnijih značajki Ansiblea, a to je stvaranje ili zavrtanje AWS EC2 instance i također kako prekinuti instancu. Naravno, ne zaboravite instalirati glasanje što je preduvjet, a također osigurava izvoz korisnika 'AWS_ACCESS_KEY_ID' i 'AWS_SECRET_ACCESS_KEY'.
U slučaju da izvoz ne uspije, dodajte isti u kod kao što je prikazano dolje.
koja je razlika između vanjskog i lijevog spoja
Kôd u nastavku pokazat će vam kako stvoriti instancu EC2 uz stvaranje sigurnosne grupe i para ključeva.
- Stvorite sigurnosnu grupu
- Stvorite par ključeva i PEM datoteku
- Stvorite instancu EC2
- Spremite IP adresu instance EC2 u datoteku inventara ansible
Pretpostavljam da su korisnici koji rade ovu vježbu dobro upućeni u koncepte AWS EC2.
Dodajte donji kod u datoteku i pokrenite isti da biste provjerili stvaranje instance EC2 u AWS konzoli. Budući da je kôd velik, podijeljen je na 2 stranice, ali osigurajte da sve spremite u jednu yml datoteku.
--- - 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}}'Pokrenite knjigu s igrama

/ etc / ansible / domaćin datoteka inventara ažurirana privatnom IP adresom

Prijavite se na instancu
ssh -i 'vniranjan.pem' ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
(Bilješka:Kliknite na donju sliku za uvećani prikaz)

Stvorena sigurnosna grupa

Ključni par stvoren

Završavanje instanci EC2
U ovom odjeljku saznajmo više o prekidu instanci EC2.
Na sljedećem zaslonu možete vidjeti da su pokrenuta 2 primjerka i koraci za prekid bit će sljedećim redoslijedom:
- Prekinite EC2 instance pomoću ID-a instance
- Uklonite sigurnosnu grupu
- Uklonite par ključeva

Playbook za prekidanje obje instance 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}}'Sažetak
Danas većina IT organizacija gleda na nekakve diferencijatore kako bi pobijedila u poslu i predstavila isto svojim klijentima. Rekao bih da je automatizacija definitivno jedna od ključnih razlika.
Pomoću alata poput Ansible smatram da biste trebali moći automatizirati većinu ponavljajućih ručnih zadataka.
Stoga ono što smo iz ovoga naučili Trodijelna serija Ansible Tutorial prikazuje Ansible kao vrlo popularan i moćan alat za upravljanje konfiguracijom koji pomaže u različitim područjima automatizacije, od automatizacije zadataka, primjene aplikacija i pružanja usluga u oblaku. Stoga prvenstveno govorimo o IT orkestraciji.
Nadam se da vam se svidio niz tutorijala za Ansible i siguran sam da biste do sada stekli neizmjerno znanje o konceptu.
Dalje ćemo naučiti kako integrirati Jenkinsa sa selenom koji je također dio naše serije obuke DevOps.
Preporučena literatura
- Vodič za Ansible: Instalacija i upotreba s Ansible modulima
- Neprekidna integracija u DevOps
- Kontinuirana isporuka u DevOpsu
- Integracija Jenkinsa s Selenium WebDriver: Vodič korak po korak
- Što je integracijsko testiranje (Vodič s primjerom integracijskog testiranja)
- Integracija selena s JMeterom
- Automatizacija zadataka korištenjem Ansible Playbooks i Ansible trezora s primjerima
- Kontinuirano postavljanje u DevOps