ansible roles integration with jenkins devops
Podrobný pohľad na možné role, integráciu s Jenkinsom a moduly Ansible S3 a EC2:
V časti 2 z séria výučbových programov Ansible , dozvedeli sme sa, ako sa knižky Ans1ible používajú na vykonávanie viacerých úloh a na získanie všetkých cieľových strojov alebo serverov do konkrétneho požadovaného stavu.
Odporúčané čítanie => Exponenciálna séria školení DevOps
Možné príručky sú predovšetkým súbory YAML, ktoré obsahujú viac úloh v jednom obrovskom súbore, ktorý nie je modulárny a opakovane použiteľný. Ale ak potrebujete rozobrať celú svoju konfiguráciu a byť modulárnejší a opakovane použiteľný, potom role Ansible veľmi pomôžu.
V tomto výučbe Ansible , pozrieme sa na role Ansible, Integrujeme Ansible s Jenkinsom na nepretržité doručovanie z pohľadu DevOps a najdôležitejšie sa pozrieme na moduly Ansible S3 a EC2 na správu inštancií AWS EC2 (vytváranie a ukončovanie inštancií EC2).
Čo sa dozviete:
- Možné úlohy
- Jenkinsova integrácia s Ansible
- Spravujte objekty AWS S3 pomocou Ansible
- Poskytnite inštanciu AWS EC2 pomocou Ansible
- Ukončenie inštancií EC2
- Zhrnutie
- Odporúčané čítanie
Možné úlohy
Pomocou rolí Ansible môžete zoskupiť svoje premenné, úlohy, obslužné nástroje atď., Čo zvyšuje opätovnú použiteľnosť a určite redukuje syntaktické chyby. Pomáha to odbúrať celý kód.
Možné úlohy sú podobné modulom v Bábkových a kuchárskych knihách v kuchári.
Na vytváranie rolí používate ansible-galaxy príkaz, ktorý má všetky šablóny na jeho vytvorenie.
Príklad scenára
Väčšinu svojho života som špecialista na DevOps a pracujem iba v oblasti CI a CD.
Takže napríklad v Continuous Delivery, kde nasadzujem nové zostavenie svojej aplikácie J2EE (súbor WAR) do kocoura, budú moje kroky nasledovné:
- Zastavte aplikáciu
- Odinštalujte aplikáciu
- Nasadiť nové zostavenie aplikácie
- Spustite aplikáciu
Takže by som vytvoril rolu s minimálne 4 úlohami a jedným hlavným súborom, ktorý by ju volal. Týmto spôsobom robím svoj kód modulárnejším a opakovane použiteľným. Túto úlohu teda nazvime ako kocúr a vytvorte to.
$ cd /etc/ansible/roles $ sudo ansible-galaxy init tomcat --offline
Po vytvorení roly môžete vidieť štruktúru adresárov, ktorú vytvorila.
Medzi hlavné komponenty, ktoré v tejto časti použijeme, patria:
- úlohy / main.yml - Toto je východiskový bod pre úlohy vytvorené pre danú rolu. Súbor main.yml môžete použiť na ukážku na ďalšie súbory úloh.
- ktorého - Týmto sa definujú všetky použité premenné.
- meta - Toto slúži na definovanie informácií o sebe alebo autorovi.
Krok 1: Vytvorte hlavný zoznam všetkých úloh
Upravte úlohy / main.yml súbor a pridajte nasledujúci kód. Podľa vyššie uvedeného príkladu scenára definujeme 4 rôzne úlohy. Vo väčšine prípadov aplikáciu na nasadenie tiež spustí, takže sa nemusí vyžadovať posledná z počiatočných aplikácií.
--- # tasks file for tomcat - import_tasks: stop_app.yml - import_tasks: uninstall_app.yml - import_tasks: deploy_app.yml - import_tasks: start_app.yml
Krok 2: Vytvorte všetky 4 súbory podľa scenára
V nižšie uvedených úlohách akcia: ec2_facts sa používa na získanie faktov zo vzdialených inštancií EC2 a na ich vyvolanie v hrách / úlohách
súbor tasks / 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
tasks / 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
tasks / 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
V kóde nasadenia, ak sa na zostavenie súboru WAR použije JENKINS, musíte zadať zdrojový adresár súboru WAR v kópia modul a cieľom je umiestnenie webapps cieľového servera 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
Krok 3: Definujte premenné
Upravte vars / main.yml súbor a pridajte kód, ako je uvedené nižšie.
--- # vars file for tomcat tomcat_user: tomcat tomcat_pwd: tomcat
Krok 4: Definujte informácie v priečinku meta
Upravte súbor meta / main.yml a pridajte svoje informácie, ako napríklad autor, popis a spoločnosť.
c ++ previesť char * na int
galaxy_info: author: V Niranjan description: Devops specialist company:
Krok 5: Vytvorte hlavný súbor site.yml
Na záver vytvorte hlavný súbor site.yml, ktorý zavolá vytvorenú rolu, čo pomôže nasadiť aplikáciu na servery alebo zoznam hostiteľov podľa súboru inventára. Vytvorte súbor ako /etc/ansible/site.yml
--- - hosts: webservers become: true roles: - apache
Krok 6: Spustite súbor playbooku site.yml
$ ansible-playbook site.yml
Spustite webovú adresu Tomcat, aby ste zistili, či bola aplikácia nasadená a spustená.
HTTP: //: portno / manager
Jenkinsova integrácia s Ansible
V tejto časti uvidíme, ako je možné integrovať Jenkins do Ansible. Súbor WAR zostavený pomocou procesu zostavenia sa použije na nasadenie do Tomcat na cieľovom počítači pomocou programu Ansible. Rolu Ansible vytvorenú v predchádzajúcej časti v Jenkins budeme nazývať pomocou pluginu Ansible.
Po dokončení zostavenia sa teda nasadenie súboru WAR automaticky spustí pomocou programu Ansible.
Ponechávam to jednoduché a nenastavil som Sonar, Artifactory alebo Junit počas nepretržitých integračných aktivít, ktoré je tiež možné vykonať.
Krok 1: Vytvorte úlohu Jenkins a nakonfigurujte repo SCM pomocou kódu v GitHub
Krok 2: Nakonfigurujte zostavenie
Krok 3: Vytvorte adresár rolí v pracovnom priestore Jenkins
Krok 4: Vytvorte rolu kocúra v umiestnení pracovného priestoru Jenkins pomocou príkazu uvedeného nižšie
$ sudo ansible-galaxy init tomcat - offline
Postupujte podľa pokynov v predchádzajúcej časti a vytvorte všetky súbory pre úlohy, vary, meta a hlavná stránka.yml.
java vs. c ++
Hlavný site.yml súbor je vytvorený v / var / lib / Jenkins / workspace / adresár.
Krok 5: Nakonfigurujte krok Jenkinsovho procesu po zostavení tak, aby vyvolal príručku Ansible a zavolal súbor site.yml. Uložte prácu.
Krok 6: Spustite úlohu zostavenia a spustite webovú adresu Tomcat, aby ste overili, či je aplikácia nasadená správne.
Spravujte objekty AWS S3 pomocou Ansible
Ansible S3 module can be used to get or put a file to or from the S3 bucket. Aby sme mohli používať tento modul, budeme si musieť nainštalovať a nakonfigurovať hlasovať modul pythonu, ktorý slúži ako API (rozhranie aplikačného programu) na prístup k AWS. Toto musí byť nainštalované na Možný riadiaci stroj.
V systéme Redhat Linux
$ sudo yum install -y python python-dev python-pip
Na Ubuntu
$ apt-get install -y python python-dev python-pip
Po dokončení vyššie uvedeného nainštalujte boto
$ sudo pip install boto boto3
Ak nemôžete nainštalovať, budete musieť povoliť EPEL repo. Postup je uvedený v časti 1 série článkov v časti inštalácia zodpovedných.
Po vykonaní vyššie uvedeného musíme tiež poskytnúť poverenia používateľa AWS. Môžete exportovať premenné prostredia AWS Access a Secret Key
export AWS_ACCESS_KEY_ID='AK123' export AWS_SECRET_ACCESS_KEY='abc123'
Ak aj po nastavení vyššie uvedených premenných prostredia dostanete chybu, pretože poverenia sa nenašli, môžete to isté určiť aj v príručke.
Pozrime sa teraz na niekoľko príkladov toho, ako používať Ansible s segmentmi S3 a neskôr na vytváranie a ukončovanie inštancií.
Príklad 1:Vytvorte prázdne vedro s priečinkom
--- - 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
Poznámka: Tu je vytvorený režim pre vytváranie segmentu a povolenie môže byť verejné čítanie alebo verejné čítanie a zápis
Spustite príručku a pozrite si segment, ktorý bol v ňom vytvorený s vývojovým priečinkom.
Príklad 2:Ak chcete skopírovať (nahrať) súbor do vedra 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
Objekt je tu súbor vytvorený v segmente. Môže to byť súbor alebo priečinok. V tomto prípade ide o súbor. Zdrojom je súbor, ktorý sa vyberie z lokálneho počítača, ktorým je riadiaci stroj Ansible.
Poznámka:Tu je nastavený režim pre nahrávanie objektu
Spustite príručku a pozrite sa na vedro S3.
Príklad 3:Získajte (stiahnite) súbor z úložiska 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
Poznámka:Tu je režim pripravený na stiahnutie objektu
Príklad 4:Odstráňte objekt alebo súbor z bloku 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
Poznámka:Tu je režim delobj pre vymazanie objektu
Príklad 5:Odstráňte vedro a všetok obsah
--- - hosts: localhost become: true tasks: - name: Delete an S3 bucket s3: aws_access_key= aws_secret_key= bucket=ansiblevnbucket mode=delete
Poznámka:Tu je režim odstránenia pre skupinu odstránenia
Poskytnite inštanciu AWS EC2 pomocou Ansible
Na záver vám ponechám jednu z najdôležitejších vlastností programu Ansible, ktorou je vytvorenie alebo roztočenie inštancie AWS EC2 a tiež spôsob ukončenia inštancie. Samozrejme nezabudnite na inštaláciu hlasovať čo je nevyhnutná podmienka a tiež zabezpečiť export používateľov „AWS_ACCESS_KEY_ID“ a „AWS_SECRET_ACCESS_KEY“.
V prípade, že export nefunguje, nezabudnite pridať to isté do kódu, ako je uvedené nižšie.
aký je rozdiel medzi vonkajším spojením a ľavým spojením
Nasledujúci kód vám ukáže, ako vytvoriť inštanciu EC2 spolu s vytvorením skupiny zabezpečenia a páru kľúčov.
- Vytvorte skupinu zabezpečenia
- Vytvorte pár kľúčov a súbor PEM
- Vytvorte inštanciu EC2
- Uložte IP adresu inštancie EC2 do zodpovedajúceho súboru inventára
Predpokladám, že používatelia vykonávajúci toto cvičenie sú oboznámení s konceptmi AWS EC2.
Pridajte do súboru nasledujúci kód a spustite ho, aby ste overili vytvorenie inštancie EC2 v konzole AWS. Pretože je kód veľký, je rozdelený na 2 stránky, ale nezabudnite ho uložiť do jedného súboru 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}}'
Spustite príručku
Súbor inventára / etc / ansible / hosts aktualizovaný so súkromnou IP
Prihláste sa do inštancie
ssh -i „vniranjan.pem“ ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
(Poznámka:Pre zväčšenie kliknite na nasledujúci obrázok)
Bola vytvorená skupina zabezpečenia
Pár kľúčov bol vytvorený
Ukončenie inštancií EC2
V tejto časti sa dozvieme viac o ukončení inštancií EC2.
Na nasledujúcej obrazovke vidíte, že sú spustené 2 inštancie a kroky na ich ukončenie budú v tomto poradí:
- Ukončite inštancie EC2 pomocou ID inštancie
- Odstrániť skupinu zabezpečenia
- Odstráňte pár kľúčov
Príručka na ukončenie obidvoch inštancií 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}}'
Zhrnutie
V súčasnosti sa väčšina IT organizácií pozerá na akési odlišnosti, ktoré by im pomohli získať podnikanie a prezentovať to isté svojim zákazníkom. Povedal by som, že automatizácia je určite jedným z kľúčových rozdielov.
S nástrojmi ako Ansible zastávam názor, že by ste mali byť schopní automatizovať väčšinu opakujúcich sa manuálnych úloh.
Takže to, čo sme sa z toho dozvedeli Trojdielna séria výučbových programov Ansible vitríny Ansible ako veľmi populárny a výkonný nástroj na správu konfigurácií, ktorý pomáha v rôznych oblastiach automatizácie od automatizácie úloh, nasadenia aplikácií a poskytovania cloudov. Týmto hovoríme predovšetkým o orchestrácii IT.
Dúfam, že sa vám páčili rôzne výukové programy Ansible, a som si istý, že by ste už teraz získali obrovské vedomosti o koncepte.
Ďalej sa naučíme, ako integrovať Jenkins so selénom, ktoré je tiež súčasťou našej tréningovej série DevOps.
Výukový program PREV | NEXT Tutorial
Odporúčané čítanie
- Výukový program Ansible: Inštalácia a použitie s modulmi Ansible
- Nepretržitá integrácia do DevOps
- Nepretržité doručovanie v DevOps
- Integrácia Jenkinsa so Selenium WebDriver: Podrobný návod
- Čo je testovanie integrácie (návod s príkladom testovania integrácie)
- Integrácia selénu s JMeter
- Automatizácia úloh pomocou Ansible Playbooks a Ansible Vaults s príkladmi
- Nepretržité nasadenie v DevOps