ansible roles integration with jenkins devops
Een diepgaande blik op Ansible Roles, Integration with Jenkins en Ansible S3 en EC2 modules:
In deel 2 van de serie over Ansible-tutorials we leerden hoe Ans1ible playbooks worden gebruikt om meerdere taken uit te voeren en alle doelmachines of servers in een bepaalde gewenste staat te krijgen.
Aanbevolen lezen => Exponentiële DevOps-trainingsserie
Ansible-playbooks zijn voornamelijk YAML-bestanden die meerdere taken bevatten in één groot bestand dat niet modulair en herbruikbaar is. Maar als u uw volledige configuratie moet opsplitsen en modulair en herbruikbaar moet zijn, zullen Ansible-rollen veel helpen.
In deze Ansible Tutorial , zullen we Ansible-rollen bekijken, Ansible integreren met Jenkins voor continue levering vanuit een DevOps-oogpunt en vooral kijken naar Ansible S3- en EC2-modules voor het beheren van AWS EC2-instances (Create and Terminate EC2-instances).
Wat je leert:
- Ansible-rollen
- Jenkins-integratie met Ansible
- Beheer AWS S3-objecten met Ansible
- Richt een AWS EC2-instantie in met Ansible
- EC2-instanties beëindigen
- Overzicht
- Aanbevolen literatuur
Ansible-rollen
Met Ansible-rollen kunt u uw variabelen, taken, handlers enz. Groeperen, die de herbruikbaarheid vergroten en zeker syntaxisfouten verminderen. Het helpt om de hele code overzichtelijk te houden.
Ansible-rollen zijn vergelijkbaar met modules in Puppet en kookboeken in Chef.
Om rollen aan te maken gebruik je de ansible-melkweg commando dat alle sjablonen heeft om het te maken.
Voorbeeldscenario
Ik ben het grootste deel van mijn leven DevOps-specialist geweest en heb alleen in CI en CD gewerkt.
Dus bijvoorbeeld in Continuous Delivery, waar ik een nieuwe build van mijn J2EE-applicatie (WAR-bestand) implementeer om mijn stappen te doorbreken, zijn mijn stappen als volgt:
- Stop de applicatie
- Verwijder de applicatie
- Implementeer de nieuwe build van een applicatie
- Start de applicatie
Dus ik zou een rol maken met ten minste 4 taken en één hoofdbestand dat het noemt. Op deze manier maak ik mijn code modulair en herbruikbaar. Dus laten we deze rol noemen als kater en creëer het.
Zodra de rol is gemaakt, kunt u de directorystructuur zien die deze heeft gemaakt.
De belangrijkste componenten die we in deze sectie zullen gebruiken, zijn onder meer:
- taken / main.yml - Dit is het startpunt voor taken die voor de rol zijn gemaakt. U kunt het bestand main.yml gebruiken om naar de andere taakbestanden te verwijzen.
- van wie - Dit is om alle gebruikte variabelen te definiëren.
- meta - Dit is om informatie over uzelf of de auteur te definiëren.
Stap 1: Maak de hoofdlijst met alle taken
Bewerk het taken / main.yml bestand en voeg de onderstaande code toe. Volgens het hierboven genoemde voorbeeldscenario definiëren we 4 verschillende taken. In de meeste gevallen zal de implementatietoepassing ook de applicatie starten, zodat de laatste van de startende applicatie mogelijk niet nodig is.
Stap 2: Maak alle 4 bestanden volgens het scenario
In de onderstaande taken actie: ec2_facts wordt gebruikt om feiten van externe EC2-instanties te krijgen en deze in toneelstukken / taken op te roepen
taken / stop_app.yml bestand
taken / uninstall_app.yml
taken / deploy_app.yml
In de implementatiecode als JENKINS wordt gebruikt om het WAR-bestand te bouwen, moet u de brondirectory van het WAR-bestand opgeven in de kopiëren module en de bestemming is de doelserver webapps locatie van tomcat.
task / start_app.yml
Stap 3: definieer variabelen
Bewerk het vars / main.yml bestand en voeg de code toe zoals hieronder getoond.
Stap 4: Definieer informatie in de metamap
Bewerk het meta / main.yml-bestand en voeg uw informatie toe, zoals auteur, beschrijving en bedrijf.
alternatief voor ccleaner voor Windows 10
Stap 5: Maak een hoofdbestand site.yml
Maak ten slotte het hoofdbestand site.yml om de gecreëerde rol aan te roepen, die op zijn beurt zal helpen om de applicatie op de servers of een lijst met hosts te implementeren volgens het inventarisbestand. Maak het bestand aan als /etc/ansible/site.yml
Stap 6: voer het playbook-bestand site.yml uit
$ ansible-playbook site.yml
Start de Tomcat-URL om te zien of de applicatie is geïmplementeerd en gestart.
HTTP: //: portno / manager
Jenkins-integratie met Ansible
In deze sectie zullen we zien hoe Jenkins kan worden geïntegreerd met Ansible. Het WAR-bestand dat is gemaakt met behulp van het bouwproces, wordt gebruikt om met Ansible naar Tomcat op de doelcomputer te implementeren. We zullen de Ansible-rol aanroepen die in de vorige sectie in Jenkins is gemaakt met behulp van de Ansible-plug-in.
Dus zodra de build is voltooid, wordt de implementatie van het WAR-bestand automatisch geactiveerd met Ansible.
Ik houd dit simpel en heb Sonar of Artifactory of Junit niet geconfigureerd tijdens de continue integratieactiviteiten die ook kunnen worden gedaan.
Stap 1: Maak een Jenkins-taak en configureer de SCM-opslagplaats met behulp van de code in GitHub
Stap 2: Configureer de build
Stap 3: Maak een rollenmap binnen de Jenkins-werkruimte
Stap 4: Maak de tomcat-rol in de Jenkins-werkruimte met de onderstaande opdracht
$ sudo ansible-galaxy init tomcat –offline
Volg de procedure zoals in het vorige gedeelte om alle bestanden voor te maken taken, vars, meta en de hoofdsite.yml.
beste systeemoptimalisatie voor Windows 10
De belangrijkste site.yml bestand is gemaakt in / var / lib / Jenkins / workspace / directory.
Stap 5: Configureer de post-buildstap van Jenkins om het Ansible-playbook op te roepen en het bestand site.yml aan te roepen. Sla de baan op.
Stap 6: Activeer de build-taak en start de Tomcat-URL om te controleren of de applicatie correct is geïmplementeerd.
Beheer AWS S3-objecten met Ansible
De Ansible S3-module kan worden gebruikt om een bestand van of naar een S3-bucket te halen of te plaatsen. Om deze module te gebruiken, moeten we installeren en configureren stemmen module van python die fungeert als een API (Application Program Interface) om toegang te krijgen tot AWS. Dit moet op het Ansible controlemachine.
Op Redhat Linux
Op Ubuntu
Zodra het bovenstaande is voltooid, installeert u boto
Als u niet kunt installeren, moet u EPEL-opslagplaats inschakelen. De procedure is te vinden in deel 1 van de artikelreeks in de sectie Ansible installeren.
Zodra het bovenstaande is gebeurd, moeten we ook AWS-gebruikersreferenties opgeven. U kunt de omgevingsvariabelen AWS Access en Secret Key exporteren
Als u in het geval dat u zelfs na het instellen van de bovenstaande omgevingsvariabelen een foutmelding krijgt omdat de inloggegevens niet zijn gevonden, dan kunt u hetzelfde ook specificeren in het playbook.
Laten we nu eens kijken naar enkele voorbeelden van het gebruik van Ansible met S3-buckets en later om instanties te maken en te beëindigen.
Voorbeeld 1:Maak een lege bucket met een map
Notitie: Hier wordt de modus gemaakt voor het maken van een bucket en de toestemming kan openbaar worden gelezen of openbaar worden geschreven
Voer het playbook uit en bekijk de bucket die is gemaakt met de ontwikkelingsmap erin.
Voorbeeld 2:Om een bestand naar S3-bucket te kopiëren (uploaden)
Hier is het object het bestand dat in de bucket is gemaakt. Het kan een bestand of map zijn. In dit geval is het een bestand. De bron is het bestand dat wordt opgehaald van de lokale machine, de Ansible-besturingsmachine.
Notitie:Hier wordt de modus geplaatst voor het uploaden van objecten
Voer het playbook uit en kijk naar de S3-bucket.
Voorbeeld 3:Download (download) het bestand uit de S3-bucket
Notitie:Hier is de modus het download-object
Voorbeeld 4:Verwijder een object of bestand uit S3-bucket
Notitie:Hier is de modus delobj voor het verwijderen van objecten
Voorbeeld 5:Verwijder een bucket en alle inhoud
Notitie:Hier is de modus delete voor de delete bucket
Richt een AWS EC2-instantie in met Ansible
Ten slotte laat ik u een van de belangrijkste functies van Ansible achter, namelijk het maken of opstarten van een AWS EC2-instantie en ook hoe u de instantie kunt beëindigen. Vergeet natuurlijk niet te installeren stemmen wat een vereiste is en zorg er ook voor dat de gebruiker 'AWS_ACCESS_KEY_ID' en 'AWS_SECRET_ACCESS_KEY' wordt geëxporteerd.
Als de export niet werkt, zorg er dan voor dat u dezelfde code toevoegt aan de onderstaande code.
qa tester interviewvragen en antwoorden
De onderstaande code laat zien hoe u een EC2-instantie maakt, samen met het maken van een beveiligingsgroep en een sleutelpaar.
- Maak een beveiligingsgroep
- Maak een sleutelpaar en het PEM-bestand
- Maak een EC2-instantie
- Sla het IP-adres van het EC2-exemplaar op in het ansible-inventarisbestand
Ik neem aan dat de gebruikers die deze oefening doen, goed thuis zijn in de AWS EC2-concepten.
Voeg de onderstaande code toe aan een bestand en voer dezelfde code uit om het maken van de EC2-instantie in de AWS-console te verifiëren. Omdat de code groot is, is deze opgesplitst in 2 pagina's, maar zorg ervoor dat u alles opslaat in een enkel yml-bestand.
Voer het playbook uit
/ etc / ansible / hosts inventarisbestand bijgewerkt met privé IP
Log in op de instantie
ssh -i 'vniranjan.pem' ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
Notitie:Klik op onderstaande afbeelding voor een vergrote weergave)
Beveiligingsgroep gemaakt
Sleutelpaar gemaakt
EC2-instanties beëindigen
In dit gedeelte laten we meer weten over het beëindigen van EC2-instanties.
In het volgende scherm kun je zien dat er 2 instances actief zijn en dat de stappen voor het beëindigen in de volgende volgorde zouden zijn:
- Beëindig de EC2-instanties met behulp van instantie-ID's
- Verwijder beveiligingsgroep
- Sleutelpaar verwijderen
Playbook om beide EC2-instanties te beëindigen
Overzicht
Tegenwoordig kijken de meeste IT-organisaties naar een soort onderscheidende factoren om zaken binnen te halen en hetzelfde aan hun klanten te laten zien. Ik zou zeggen dat automatisering absoluut een van de belangrijkste onderscheidende factoren is.
Met tools als Ansible ben ik van mening dat je de meeste repetitieve handmatige taken moet kunnen automatiseren.
Dus wat we hiervan hebben geleerd 3-delige Ansible Tutorial-serie toont Ansible als een zeer populaire en krachtige tool voor configuratiebeheer die helpt bij verschillende automatiseringsgebieden, variërend van taakautomatisering, applicatie-implementatie en cloudprovisioning. Daarbij hebben we het vooral over IT-orkestratie.
Ik hoop dat je genoten hebt van de reeks Ansible-tutorials en ik ben er zeker van dat je inmiddels een enorme kennis van het concept zou hebben opgedaan.
Vervolgens zullen we leren hoe we Jenkins kunnen integreren met Selenium, dat ook deel uitmaakt van onze DevOps-trainingsserie.
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- Ansible-zelfstudie: installatie en gebruik met Ansible-modules
- Continue integratie in DevOps
- Continue levering in DevOps
- Integratie van Jenkins met Selenium WebDriver: stapsgewijze zelfstudie
- Wat is integratietests (zelfstudie met voorbeeld van integratietests)
- Integratie van selenium met JMeter
- Taakautomatisering met behulp van Ansible Playbooks en Ansible Vaults met voorbeelden
- Continue implementatie in DevOps