ansible roles integration with jenkins devops
Poglobljen pregled modulov Ansible Roles, Integration with Jenkins ter Ansible S3 in EC2:
V 2. delu od serija o vajeh Ansible , spoznali smo, kako se Ans1ible playbooks uporabljajo za izvajanje več nalog in za dosego vseh ciljnih strojev ali strežnikov.
Priporočeno branje => Eksponentne serije DevOps Training
Ansible playbooks so predvsem datoteke YAML, ki vsebujejo več nalog v eni sami ogromni datoteki, ki ni modularna in večkrat uporabna. Če pa morate razbiti celotno konfiguracijo in biti bolj modularni ter za večkratno uporabo, bodo vloge Ansible v veliko pomoč.
V tej vaji Ansible , si bomo ogledali vloge Ansible, Integriraj Ansible z Jenkinsom za neprekinjeno dostavo z vidika DevOps in najpomembneje module Ansible S3 in EC2 za upravljanje primerkov AWS EC2 (Ustvari in zaključi primerke EC2).
Kaj se boste naučili:
- Odgovorne vloge
- Jenkinsova integracija z Ansible
- Upravljajte predmete AWS S3 z možnostjo Ansible
- Zagotovite primerek AWS EC2 z uporabo programa Ansible
- Končanje primerkov EC2
- Povzetek
- Priporočeno branje
Odgovorne vloge
Z vlogami Ansible lahko svoje spremenljivke, naloge, vodnike itd. Razvrstite v skupine, kar poveča vnovično uporabo in zagotovo zmanjša sintaksne napake. Pomaga odstraniti nered iz celotne kode.
Odgovorne vloge so podobne modulom v lutkah in kuharskih knjigah v kuharju.
Če želite ustvariti vloge, uporabite ansible-galaksija ukaz, ki ima vse predloge za njegovo ustvarjanje.
Primer scenarija
Že večino svojega življenja sem specialist za DevOps in delam samo na področju CI in CD.
Tako bi bil na primer pri neprekinjeni dostavi, kjer uvajam novo zgradbo svoje aplikacije J2EE (datoteka WAR) za tomcat, naslednji koraki:
- Ustavite aplikacijo
- Odstranite aplikacijo
- Uvedite novo zgradbo aplikacije
- Zaženite aplikacijo
Tako bi ustvaril vlogo z vsaj 4 nalogami in eno glavno datoteko, ki jo kliče. Na ta način naredim svojo kodo bolj modularno in ponovno uporabno. Poimenujmo torej to vlogo kot mačka in ga ustvarite.
$ cd /etc/ansible/roles $ sudo ansible-galaxy init tomcat --offline 
Ko je vloga ustvarjena, lahko vidite strukturo imenikov, ki jo je ustvarila.
Glavne komponente, ki jih bomo uporabili v tem poglavju, vključujejo:
- naloge / main.yml - To je izhodišče za naloge, ustvarjene za vlogo. Z datoteko main.yml lahko pokažete na druge datoteke opravil.
- čigar - S tem določite vse uporabljene spremenljivke.
- meta - S tem določite podatke o sebi ali avtorju.
1. korak: ustvarite glavni seznam vseh nalog
Uredite naloge / main.yml datoteko in dodajte spodnjo kodo. Glede na zgoraj omenjeni primer opredeljujemo 4 različne naloge. V večini primerov bo aplikacija za razmestitev tudi zagnala aplikacijo, zato zadnja od zagonske aplikacije morda ne bo 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 2. korak: Ustvarite vse 4 datoteke v skladu s scenarijem
V spodnjih nalogah dejanje: ec2_facts se uporablja za pridobivanje dejstev iz oddaljenih primerkov EC2 in njihovo priklic v igrah / nalogah
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 - -qopravila / 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 - -qopravila / razmestitev_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/webappsV kodi za razmestitev, če se za izdelavo datoteke WAR uporablja JENKINS, morate navesti izvorni imenik datoteke WAR v kopirati modul in cilj je ciljni strežnik webapps lokacija 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 - -q3. korak: Določite spremenljivke
Uredite vars / main.yml datoteko in dodajte kodo, kot je prikazano spodaj.
--- # vars file for tomcat tomcat_user: tomcat tomcat_pwd: tomcat4. korak: Določite podatke v metamapi
Uredite datoteko meta / main.yml in dodajte svoje podatke, kot so avtor, opis in podjetje.
pl sql vprašanja za intervju z odgovori
galaxy_info: author: V Niranjan description: Devops specialist company: 5. korak: Ustvarite glavno datoteko site.yml
Nazadnje ustvarite glavno datoteko site.yml, da pokličete ustvarjeno vlogo, ki bo nato pomagala razporediti aplikacijo na strežnike ali seznam gostiteljev, kot je na datoteki inventarja. Ustvari datoteko kot /etc/ansible/site.yml
--- - hosts: webservers become: true roles: - apache6. korak: zaženite datoteko playbook site.yml
$ ansible-playbook site.yml

Zaženite Tomcat URL in preverite, ali je bila aplikacija nameščena in zagnana.
HTTP: //: portno / manager

Jenkinsova integracija z Ansible
V tem poglavju bomo videli, kako je mogoče Jenkinsa integrirati z Ansible. Datoteka WAR, zgrajena s postopkom gradnje, bo uporabljena za razmestitev v Tomcat na ciljni napravi s pomočjo programa Ansible. Vlogo Ansible, ustvarjeno v prejšnjem razdelku v Jenkinsu, bomo poklicali z vtičnikom Ansible.
Ko bo gradnja končana, se bo uvedba datoteke WAR samodejno sprožila z uporabo programa Ansible.
To ohranjam preprosto in nisem konfiguriral Sonarja ali Artifactoryja ali Junita med neprekinjenimi integracijskimi aktivnostmi, ki jih je mogoče tudi izvesti.
1. korak: Ustvarite Jenkinsovo nalogo in z uporabo kode v GitHub konfigurirajte repozit SCM

2. korak: Konfigurirajte gradnjo

3. korak: v delovnem prostoru Jenkins ustvarite imenik vlog

4. korak: Ustvari vlogo tomcat na mestu delovnega prostora Jenkins z uporabo spodnjega ukaza
$ sudo ansible-galaxy init tomcat –offline

Sledite postopku kot v prejšnjem razdelku, da ustvarite vse datoteke za naloge, vars, meta in glavno spletno mesto.iml.
ukaz ls v unixu s primeri
Glavni site.yml datoteka je ustvarjena v / var / lib / Jenkins / delovni prostor / imenik.
5. korak: Konfigurirajte Jenkinsov korak po izdelavi, da prikličete knjigo Ansible in pokličete datoteko site.yml. Shrani službo.

6. korak: Sprožite gradbeno opravilo in zaženite Tomcat URL, da preverite, ali je aplikacija pravilno nameščena.

Upravljajte predmete AWS S3 z možnostjo Ansible
Modul Ansible S3 se lahko uporablja za pridobivanje datotek v vedro S3 ali iz njega. Za uporabo tega modula bomo morali namestiti in konfigurirati glasovati modul pythona, ki deluje kot API (vmesnik aplikacijskega programa) za dostop do AWS. To je treba namestiti na Odgovorni nadzorni stroj.
Na Redhatu Linux
$ sudo yum install -y python python-dev python-pipNa Ubuntuju
$ apt-get install -y python python-dev python-pipKo je zgoraj navedeno, namestite boto
$ sudo pip install boto boto3Če namestitve ne morete namestiti, boste morali omogočiti repo EPEL. Postopek najdete v 1. delu serije člankov v oddelku za namestitev ansible.
Ko je zgoraj navedeno, moramo zagotoviti tudi poverilnice uporabnikov AWS. Spremenljivki okolja AWS Access in Secret Key lahko izvozite
export AWS_ACCESS_KEY_ID='AK123' export AWS_SECRET_ACCESS_KEY='abc123'Če v primeru, da tudi po nastavitvi zgornjih spremenljivk okolja dobite napako, ker poverilnic ni mogoče najti, lahko isto določite tudi v knjigi predvajanja.
Oglejmo si zdaj nekaj primerov, kako uporabiti Ansible s segmenti S3 in kasneje za ustvarjanje in zaključevanje primerkov.
Primer 1:Ustvarite prazno vedro z mapo
--- - 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-1Opomba: Tu je način ustvarjen za ustvarjanje vedra in dovoljenje je lahko javno branje ali javno branje-pisanje
Zaženite knjigo iger in si oglejte vedro, ustvarjeno z razvojno mapo v njem.


2. primer:Če želite kopirati (naložiti) datoteko v vedro 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 Tu je objekt datoteka, ustvarjena v vedru. Lahko je datoteka ali mapa. V tem primeru gre za datoteko. Vir je datoteka, ki jo prevzame lokalna naprava, ki je nadzorni stroj Ansible.
Opomba:Tu je vstavljen način za nalaganje predmeta
Zaženite knjigo iger in si oglejte vedro S3.

3. primer:Datoteko dobite iz vedra 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 Opomba:Tu je način get for download object
Primer 4:Iz segmenta S3 izbrišite predmet ali datoteko
--- - 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 Opomba:Tu je način delobj za brisanje predmeta
Primer 5:Izbrišite vedro in vso vsebino
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket mode=delete Opomba:Tu je način brisanja za vedro za brisanje
Zagotovite primerek AWS EC2 z uporabo programa Ansible
Na koncu vam bom pustil eno najpomembnejših lastnosti Ansible, ki je ustvariti ali zaviti primerek AWS EC2 in tudi, kako ga končati. Seveda ne pozabite namestiti glasovati kar je predpogoj in zagotavlja tudi izvoz uporabnika “AWS_ACCESS_KEY_ID” in “AWS_SECRET_ACCESS_KEY”.
Če izvoz ne deluje, ga dodajte v kodo, kot je prikazano spodaj.
neto vprašanja in odgovori za izkušene
Spodnja koda vam bo pokazala, kako ustvariti primerek EC2, skupaj z varnostno skupino in parom ključev.
- Ustvarite varnostno skupino
- Ustvarite par ključev in datoteko PEM
- Ustvari primerek EC2
- Shranite naslov IP primerka EC2 v datoteko inventarja ansible
Predvidevam, da so uporabniki, ki izvajajo to vajo, dobro seznanjeni s koncepti AWS EC2.
V datoteko dodajte spodnjo kodo in jo zaženite, da preverite ustvarjanje primerka EC2 v konzoli AWS. Ker je koda velika, je razdeljena na 2 strani, vendar poskrbite, da boste vse shranili v eno datoteko 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}}'Zaženite knjigo iger

/ etc / ansible / gosti datoteko inventarja, posodobljeno z zasebnim IP-jem

Prijavite se v primerek
ssh -i “vniranjan.pem” ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
(Opomba:Za povečan pogled kliknite spodnjo sliko)

Ustvarjena varnostna skupina

Ustvarjen je bil par ključev

Končanje primerkov EC2
V tem razdelku bomo vedeli več o zaključevanju primerkov EC2.
Na naslednjem zaslonu lahko vidite, da se izvajata 2 primerka in koraki za zaključek bi bili v naslednjem vrstnem redu:
- Zaključite primerke EC2 z ID-ji primerka
- Odstranite varnostno skupino
- Odstranite par ključev

Playbook za ukinitev obeh primerov 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}}'Povzetek
Danes večina organizacij IT išče nekakšne razlikovalce, s katerimi želi pridobiti posel in to predstaviti svojim strankam. Rekel bi, da je avtomatizacija zagotovo eden ključnih razlik.
Z orodji, kot je Ansible, menim, da bi morali biti sposobni avtomatizirati večino ponavljajočih se ročnih nalog.
Torej, kaj smo se iz tega naučili 3-delna serija Ansible Tutorial razstavlja Ansible kot zelo priljubljeno in zmogljivo orodje za upravljanje konfiguracije, ki pomaga na različnih področjih avtomatizacije, od avtomatizacije opravil, uvajanja aplikacij in zagotavljanja oblaka. Pri tem govorimo predvsem o orkestraciji IT.
Upam, da vam je bila všeč vrsta vadnic Ansible in prepričan sem, da bi do zdaj že pridobil neizmerno znanje o konceptu.
Nato se bomo naučili, kako Jenkinsa integrirati s selenom, ki je prav tako del naše serije treningov DevOps.
PREV Vadnica | NASLEDNJA Vadnica
Priporočeno branje
- Ansible Vadnica: Namestitev in uporaba z Ansible moduli
- Nenehna integracija v DevOps
- Neprekinjena dostava v DevOps
- Integracija Jenkinsa s selenium WebDriver: Vadnica po korakih
- Kaj je integracijsko testiranje (Vadnica s primerom integracijskega testiranja)
- Integracija selena z JMeter
- Avtomatizacija opravil z uporabo Ansible Playbooks in Ansible Vault s primeri
- Neprekinjena razmestitev v DevOps