task automation using ansible playbooks
Leer taakautomatisering met behulp van Ansible-playbooks en Ansible-kluizen voor het beveiligen van gevoelige gegevens:
In onze vorige Ansible-tutorial # 1 , we leerden over de verschillende componenten van Ansible en hoe we deze tool met verschillende modules kunnen installeren en configureren. We hebben ook gezien hoe de modules worden gebruikt om een functie of taak uit te voeren.
In dit deel zullen we kijken naar taakautomatisering met behulp van Ansible-playbooks en Ansible-kluizen om gevoelige gegevens te beveiligen.
Voorgesteld lezen => Leergids over DevOps
qa manager interviewvragen antwoorden pdf
Wat je leert:
Ansible Playbooks
We hebben gezien hoe u afzonderlijke taken of eenmalige taken kunt uitvoeren met behulp van modules, maar wat als u meerdere taken moet uitvoeren? Playbooks helpen om ze op een gescripte manier uit te voeren.
Playbooks definiëren variabelen, configuraties, implementatiestappen, wijzen rollen toe en voeren meerdere taken uit. Voor Bijv. KOPIE / VERWIJDER bestanden en mappen, installeer pakketten, start services. Dus voornamelijk playbooks worden gedefinieerd om de stappen naar meerdere machines of servers te orkestreren en ze allemaal in een bepaalde gewenste staat te krijgen.
Playbook is geschreven in YAML-indeling met de bestandsextensie .yml. Men moet heel voorzichtig zijn met het formaat en de uitlijning, wat het erg gevoelig maakt.
Het bevat de volgende secties:
- Elk playbook begint met 3 koppeltekens ‘-‘
- Host-sectie - Definieert de doelmachines waarop het playbook moet draaien. Dit is gebaseerd op het Ansible-inventarisatiedossier.
- Variabele sectie - Dit is optioneel en kan alle variabelen declareren die nodig zijn in het playbook. We zullen ook enkele voorbeelden bekijken.
- Taken sectie - Deze sectie geeft een overzicht van alle taken die op de doelcomputer zouden moeten worden uitgevoerd. Het specificeert het gebruik van modules. Elke taak heeft een naam die een kleine beschrijving is van wat de taak zal doen en die wordt weergegeven terwijl het playbook wordt uitgevoerd.
Bijvoorbeeld,
Als we Tomcat moeten installeren en configureren, zal dit uit de volgende taken bestaan:
- Download en installeer Tomcat
- Configureer Tomcat
- Start Tomcat
Evenzo een anderVoorbeeldvoor het gebruik van Tomcat die wordt gebruikt bij de continue levering van DevOps, kunnen de taken als volgt zijn:
- Stop de applicatie
- Verwijder de applicatie
- Installeer een nieuwe versie van het WAR-bestand.
- Start de applicatie
Voorbeeldformaat van Playbook
Bekijk in het bovenstaande script de uitlijning vanaf de bovenkant en deze moet worden onderhouden, anders krijg je syntaxisfouten.
Gebruik de volgende opdracht om een playbook uit te voeren
Om het playbook te controleren op syntaxisfouten
Om de lijst met hosts te bekijken
Playbooks met voorbeelden maken
In dit gedeelte zullen we meerdere voorbeelden zien van hoe u playbooks kunt maken die u mogelijk regelmatig moet gebruiken. Deze playbooks moeten worden gemaakt en uitgevoerd vanaf de besturingscomputer.
Sla alle onderstaande playbooks op in een .yml-bestand en voer ze uit zoals hieronder wordt weergegeven.
Voorbeeld 1: Maak het bestand op de doelmachines of servers zoals vermeld in het inventarisbestand en de webservergroep, sla de onderstaande code op met de extensie .yml en voer het playbook uit.
In het bovenstaande voorbeeld hebben we de het dossier module om het bestand te maken.
Voorbeeld 2: Maak een map met de modus als 775 en eigenaar / groep als Ansible.
Voorbeeld 3: Maak meerdere mappen. Om met één enkele taak meerdere mappen te maken, kunt u de lus gebruiken met_items uitspraak. Dus wanneer u het onderstaande playbook uitvoert, wordt het geïnterpreteerd als 3 verschillende taken.
Voorbeeld 4: Maak een gebruiker aan. Laten we eens kijken naar de gebruiker module om gebruikers in het playbook te maken en te verwijderen.
Voorbeeld 5: Verwijder gebruiker. Het verwijderen van een gebruiker is heel eenvoudig en hiervoor is de extensie staat ingesteld op afwezig Dit is gelijk aan de userdel commando in Linux.
In het bovenstaande playbook, verwijderen = ja verwijdert de homedirectory en force = ja verwijdert de bestanden in de directory.
Voorbeeld 6: Kopieer inhoud naar een bestand met behulp van de kopieermodule.
Als u een bestand naar de doelmachines of servers moet kopiëren, gebruikt u de src en dest in de kopieermodule.
Bijvoorbeeld,
Voorbeeld 7: Vervang alle instanties van een string.
Gebruik makend van vervangen module kunnen we een woord vervangen door een ander woord. De vervangmodule heeft drie parameters nodig, namelijk ‘pad’, ‘regexp’ (om het specifieke woord te vinden) en ‘vervangen’ (een ander woord voor vervanging opgeven).
Voorbeeld 8: Archiveer of ZIP-bestanden en mappen
Met behulp van de Ansible archief module kun je bestanden of mappen comprimeren naar ‘zip’, ‘.gz’ of ‘bz2’ formaat.
Notitie De bestanden of mappen die gecomprimeerd moeten worden, moeten beschikbaar zijn op de doelservers en de pakketten voor tar, bzip2, gzip, zip-bestand moeten erop geïnstalleerd zijn. U kunt een aparte playbook-taak hebben om deze pakketten te installeren.
Het bovenstaande playbook zal het bestand niranjan.txt naar het bestand niranjan.zip zippen
Het bovenstaande playbook zal meerdere bestanden naar het bestand niranjan.zip zippen.
Het bovenstaande playbook zal alle bestanden in de / home / ansible directory zippen.
Voorbeeld 9: Werken met datum en tijdstempel
Het gebruik van de systeemdatum en -tijdstempel helpt bij bepaalde status- of logboekdoeleinden. De Ansible-feiten bieden toegang tot de datum en tijd van externe servers of doelservers. Dus we kunnen de debug-module om de uitvoer samen met de waar attribuut zoals hieronder getoond.
Het bovenstaande playbook geeft de datum weer.
Het bovenstaande playbook geeft de tijd weer.
Het bovenstaande playbook maakt een dynamisch bestand op basis van de huidige datum voor Bijv niranjan2018-07-15.log
Voorbeeld 10: Variabelen Voorbeeld
Variabelen worden gebruikt om waarden op te slaan. In het onderstaande voorbeeld declareer ik de variabele naam met waarde niranjan De output zal zijn niranjan
We kunnen ook een array of een lijst met variabelen hebben, zoals hieronder Voorbeeld
De indexering van de array begint vanaf NUL (0). Daarom is de uitvoer in het bovenstaande voorbeeld Niranjan.
Voorbeeld 11: Registreer variabelen
We kunnen ook de uitvoer van elke taak vastleggen in een registervariabele.
Opmerking: Gebruik het attribuut msg om weer te geven en om een waarde vast te leggen, gebruik het attribuut var in de module - debug
Voorbeeld 12: Playbook om vim-editor en GIT op de doelservers of -machines te installeren.
nep e-mailadres dat ik kan gebruiken
In dit playbook hebben we gebruik gemaakt van de jammie module om de nieuwste versie van de softwarepakketten te installeren.
Voorbeeld 13: Installeer Apache-server. Sla de onderstaande code op en voer het playbook uit zoals hieronder wordt weergegeven.
Los van de jammie module, de onderhoud module wordt ook gebruikt om de httpd-service te starten. De taken lopen synchroon van boven naar beneden.
Voorbeeld 14: Installeer JDK
Het volgende playbook zal automatiseren om JDK 8 op alle doelmachines of servers te installeren. JDK is een eerste vereiste voor de meeste andere softwarepakketten zoals Maven of Tomcat.
Voorbeeld 15: Installeer Maven
De uitgevoerde taken zijn het downloaden van het maven-bestand van de URL met behulp van de get_url module, pak het gedownloade bestand uit, verplaats het naar een kleinere map, werk het profiel bij en voer het uit waar de maven aan het pad is toegevoegd.
Voorbeeld 16: Installeer Tomcat 8
Het onderstaande playbook helpt bij het installeren en starten van Tomcat 8 op de doelmachines of servers.
U kunt klikken hier om de linklocatie van de nieuwste versie van Tomcat 8 te kopiëren. Klik op hier voor de URL met het Tomcat 8-tar-bestand dat ik in dit playbook heb gebruikt.
Voorbeeld 17: pre_tasks, post_tasks en tags
Je kunt gebruiken pre_tasks en post_tasks om bepaalde taken uit te voeren voor of na het uitvoeren van de hoofdtaak.
Normaal gesproken heb je in een playbook zoveel taken die worden uitgevoerd. Wat als u slechts een bepaalde taak hoeft uit te voeren? Tags zijn het antwoord erop. Laten we eens kijken naar de onderstaande optie met alle drie de opties. Het heeft 2 taken, namelijk een met een TAG en een zonder een TAG.
Laten we eens kijken wat er gebeurt als het playbook wordt uitgevoerd met de optie –list-tags
De output hierboven ziet er beter en duidelijker uit. Play # 1 heeft een tag niranjan maar Play # 2 heeft geen tags.
Als je de taken moet uitvoeren met de tag niranjan, dan is het uit te voeren commando:
De tweede play wordt niet uitgevoerd en het bestand wordt niet gemaakt.
Voorbeeld 18: Handlers
Elk softwarepakket heeft configuratiebestanden en eventuele wijzigingen hebben alleen effect wanneer de service opnieuw wordt gestart. U moet dus de service hebben ingesteld om opnieuw te starten. Voor Bijv. Als u het in het onderstaande playbook meerdere keren uitvoert, wordt de service hoe dan ook opnieuw opgestart, ongeacht de aangebrachte wijzigingen of niet, wat niet correct is.
We hoeven de service dus alleen opnieuw te starten als de wijzigingen zijn aangebracht in de configuratiebestanden. Handlers bieden die functie.
Dus de juiste stroom met handlers zou zijn om een melden optie.
Dus voor de eerste keer wordt Apache-server geïnstalleerd en gestart. Zelfs als u het playbook opnieuw uitvoert zonder dat er enige wijzigingen zijn aangebracht, zal de httpd-service niet opnieuw opstarten omdat deze al is gestart.
Als er wijzigingen zijn in de configuratiebestanden of als de HTML-bestanden worden gewijzigd, krijgt de handler de melding dat de service opnieuw moet worden gestart zodra de playbook is gestart. De naam in de notificatie-sectie en handlers moeten hetzelfde zijn. De handler is geschreven zoals elke andere taak, maar wordt alleen aangeroepen als er wijzigingen zijn.
Ansible Vault
Meestal wanneer gevoelige of vertrouwelijke gegevens moeten worden beschermd in het playbook, kunnen ze worden gecodeerd in plaats van ze alleen in een tekstbestand te bewaren dat voor iedereen leesbaar is. Met Ansible Vault kunt u het playbook versleutelen om de vertrouwelijke gegevens te beschermen.
Bijvoorbeeld, overweeg dan de volgende taak waarbij een vertrouwelijke taakovereenkomst wordt gekopieerd.
In dergelijke gevallen heeft u een Ansible Vault nodig.
Hieronder volgen de stappen die u moet volgen om de bovenstaande playbook-bestanden te versleutelen.
# 1) Nieuwe versleutelde bestanden maken
Om nieuwe versleutelde bestanden met kluis te maken, gebruikt u de ansible-vault create opdracht.
Na het bevestigen van het wachtwoord wordt een bewerkingsvenster geopend om inhoud aan het bestand toe te voegen.
Ansible zal de inhoud versleutelen wanneer u het bestand sluit. In plaats van de daadwerkelijke inhoud te zien, ziet u gecodeerde blokken.
# 2) Gebruik het volgende om een bestaand yml-bestand te versleutelen
Wachtwoord wordt opnieuw om codering gevraagd.
# 3) Gecodeerd bestand bekijken
Gebruik het commando ansible-vault-weergave om de feitelijke inhoud van het bestand te bekijken.
U wordt opnieuw om het wachtwoord gevraagd om de inhoud van het bestand te bekijken.
# 4) Versleutelde bestanden bewerken
Gebruik de opdracht als u het bestand moet bewerken ansible-kluis bewerken
Voer het wachtwoord in om het bestand te bewerken.
# 5) Het wachtwoord van de gecodeerde bestanden wijzigen
Gebruik het commando ansible-kluis rekey om het wachtwoord van het bestand te wijzigen.
# 6) Voer een gecodeerd Ansible-playbookbestand uit
Gebruik de optie –ask-vault-pass met het ansible-playbook commando.
# 7) Handmatig de gecodeerde bestanden decoderen
Gebruik het commando ansible-vault decrypt commando.
Overzicht
In deze tutorial hebben we de twee belangrijkste aspecten van configuratiemanagement gezien, namelijk Ansible Playbooks en het beschermen van gevoelige gegevens met Ansible Vaults.
De bovenstaande voorbeelden van playbook zouden u een idee hebben gegeven over hoe u verschillende taken in verschillende scenario's kunt automatiseren tijdens het leveren van software.
In onze aanstaande tutorial zullen we zien hoe we het Playbook kunnen modulariseren met Ansible-rollen, integreren met Jenkins en het belangrijkste aspect om te werken met Ansible S3- en EC2-modules voor het beheren van de AWS-instances (Create and Terminate EC2-instances).
beste python-idee voor Windows 10
PREV-zelfstudie VOLGENDE zelfstudie
Aanbevolen literatuur
- Ansible-zelfstudie: installatie en gebruik met Ansible-modules
- Zie Testautomatiseringsopdrachten: een gedetailleerde uitleg met voorbeelden
- Ansible-rollen, integratie met Jenkins in DevOps en EC2-modules
- Testscripts ontwikkelen met behulp van de 5 populairste frameworks voor testautomatisering (voorbeelden)
- Scriptless Test Automation Framework: tools en voorbeelden
- Python DateTime-zelfstudie met voorbeelden
- Snijd Commando in Unix met voorbeelden
- Testautomatisering - Is het een gespecialiseerde carrière? Kunnen normale testers ook automatiseren?