Ansible is een agentloze automatiseringstool geschreven in Python. Het maakt verbinding met uw klanten via SSH en stelt u in staat om de saaie, repetitieve taken die u niet wilt doen, te automatiseren. Hiermee kunt u een taak die door een mens is uitgevoerd en die een uur kan duren, omzetten in een enkele opdracht die binnen enkele minuten is voltooid. Dit verbetert uw prestaties en stelt u in staat om aan het volgende grote project te werken.
Ansible is een agentloze automatiseringstool geschreven in Python. Het maakt verbinding met uw klanten via SSH en stelt u in staat om de saaie, repetitieve taken die u niet wilt doen, te automatiseren. Hiermee kunt u een taak die door een mens is uitgevoerd en die een uur kan duren, omzetten in een enkele opdracht die binnen enkele minuten is voltooid. Dit verbetert uw prestaties en stelt u in staat om aan het volgende grote project te werken.
Ansible-voordelen
Ansible biedt veel voordelen, laten we even de tijd nemen om enkele van de belangrijkste te bekijken. Ik ga dit opsplitsen in secties, een voor degenen die geen of minimale automatisering hebben, en een andere voor degenen die al een automatiseringstool zoals Salt of Puppet gebruiken.
Nieuw bij Automatisering
Als automatisering nieuw voor je is, kan het gebruik van een eenvoudige tool helpen bij de leercurve. Laten we eens kijken naar enkele redenen waarom u Ansible zou moeten kiezen in plaats van de andere beschikbare tools.
1. Eenvoudige syntaxis
Door de eenvoudige manier waarop Ansible taken definieert, is het heel eenvoudig om ermee aan de slag te gaan. Neem bijvoorbeeld het onderstaande fragment:
-
– gastheren: alle
taken:
– naam: Installeer Nginx
jammie:
naam: nginx
staat: laatste
Een complete Ansible-taak, gelijk aan het uitvoeren van `yum install nginx` op al je hosts.
U kunt waarschijnlijk al vertellen wat het doet. Het installeert de nieuwste versie van het Nginx open-source webserver op al uw gedefinieerde hosts. We zullen later kijken naar het definiëren van hosts. Aangezien alle taken die u maakt zich in YAML bevinden, zijn ze zowel gemakkelijk te lezen als gemakkelijk te maken. Dit is van vitaal belang wanneer u begint met het leren van een nieuwe tool, omdat u hierdoor snel ervaring kunt opdoen en tegelijkertijd vertrouwen en begrip opbouwt.
2. Git-liefde
Aangezien uw automatiseringen eenvoudige tekstbestanden zijn, is het mogelijk om ze op te slaan in Git (of een ander bronrepositorysysteem), waar ze wijzigingscontrole hebben en kunnen worden uitgecheckt en bijgewerkt vanuit een centrale bron.
3. Eenvoudige uitvoeringsopdracht
Aangezien taken worden uitgevoerd in de volgorde die u definieert, hoeft u zich geen zorgen te maken over de uitvoeringsvolgorde. Definieer gewoon de stappen zoals u dat voor een mens zou doen, en Ansible voert ze elke keer in precies die volgorde uit, zonder dat u zich zorgen hoeft te maken dat u een stap overslaat.
4. Agentloos
Het is belangrijk om een agentloze manier te hebben om uw hosts te beheren, zeker als u nog geen manier heeft om een agent op een geautomatiseerde manier in te zetten. Proberen een automatiserings-push te starten in een bestaande omgeving kan een nachtmerrie zijn, vooral als er tientallen of honderden machines zijn die de nieuwe agent nodig hebben.
Liefhebber van automatisering
Als je al wat automatisering hebt gedaan, misschien met behulp van Bash, Python of Powershell, vraag je je misschien af wat Ansible te bieden heeft. Laten we kijken.
1. Eenvoudige orkestratie
Heb je ooit geprobeerd een website bij te werken met behulp van een bash-script? Stel dat u een webloadbalancer of reverse proxy, 5 webservers, een databaseloadbalancer en 2 databaseservers heeft. U zou honderden regels kunnen besteden aan het controleren of elk onderdeel met succes is bijgewerkt.
Met Ansible kunt u statuscontroles en doorlopende upgrades definiëren en uw load balancers instellen om tijdens elke stap van de upgrade knooppunten toe te voegen en te verwijderen. U kunt hiervan een voorbeeld zien op de officiëleContinuous Delivery and Rolling Upgradesdocumentatie.
2. Idempotentie
Idempotentie is de eigenschap van bepaalde bewerkingen in de wiskunde en informatica, waardoor ze meerdere keren kunnen worden toegepast zonder het resultaat na de oorspronkelijke toepassing te veranderen. elke *X* aantal uren/dagen/weken om er zeker van te zijn dat er niets veranderd is. Als er iets verandert, moet u op zoek gaan naar de bron van *Configuration Drift* in uw omgeving.
Configuratie Drift is waar servers in infrastructuur steeds meer van elkaar gaan verschillen naarmate de tijd verstrijkt.- Shadow Soft
3. Ingebouwde geheimenopslag
Met de ingebouwde opslag van geheimen van Ansible, genaamd Ansible Vault, kunt u gevoelige gegevens zoals wachtwoorden, API-sleutels of zelfs privésleutels op een veilige manier opslaan, samen met de rest van uw codebase, in bronbeheer. Dit is ongehoord in Bash of Python, waarvoor meestal tools van derden nodig zijn, zoals een API-enabled wachtwoordkluis.
4. Uitbreidbaarheid
Ansible kan eenvoudig worden uitgebreid voor zowel Windows- als Linux-modules, en kan ook communiceren met tools van derden. Dit betekent dat als u iets wilt automatiseren, de kans groot is dat er al een communitymodule is die u kunt gebruiken, of dat u een bestaande module kunt maken of aanpassen om aan uw behoeften te voldoen.
U kunt informatie vinden over het ontwikkelen van uw eigen modules met de officiële documentatie, of u kunt de Ansible Galaxy-communitymodules bekijken.
Aan de slag met Ansible
Ansible-installatie
Aan de slag gaan is net zo eenvoudig als het installeren van Ansible op uw werkstation of server. Ik ga de RedHat/CentOS-commando's laten zien, maar je kunt andere installatiestappen bekijken in de officiële documentatie.
`sudo yum install ansible`
Dat is het! U hebt een volledig functioneel Ansible-controleknooppunt geïnstalleerd en bent klaar om te gaan.
Inventaris
Ansible moet weten met welke machines je moet praten en je playbooks tegen moet spelen. Laten we dus eens kijken naar het opzetten van een basisinventaris. Het standaard inventarisbestand is beschikbaar in `/etc/ansible/hosts` op Linux. Als je naar dat bestand kijkt, zie je dat het een INI-achtige indeling heeft en er waarschijnlijk ongeveer zo uitziet:
mail.voorbeeld.com
[webservers]
foo.voorbeeld.com
bar.voorbeeld.com
[db-servers]
een.voorbeeld.com
twee.voorbeeld.com
drie.voorbeeld.com
Zoals uitgelegd in de documentatie, zijn de titels tussen haakjes groepsnamen, waarmee u systemen in willekeurige groepen kunt indelen. Ik zou je aanraden om even de tijd te nemen om je inventarisbestand op te zetten, aangezien het belangrijk is voor Ansible om te weten tegen welke hosts je taken wilt uitvoeren.
Een draaiboek maken
Een draaiboek is een verzameling taken die tegen uw hosts moeten worden uitgevoerd. U kunt een playbook maken dat zo eenvoudig is als een enkel bestand met één keer spelen, of veel bestanden met meerdere voorwaarden en import uit andere playbooks. We beginnen met een eenvoudig draaiboek dat firewallregels voor nginx op onze webservers installeert, start en toevoegt. In ons hosts-bestand hebben we misschien zoiets als dit:
[webservers]
web01.voorbeeld.com
web02.voorbeeld.com
en in ons bestand `nginx-install.yaml` hebben we het volgende:
-
– hosts: webservers
taken:
– naam: Installeer Nginx
jammie:
naam: nginx
staat: laatste
– naam: Start Nginx
service:
naam: nginx
staat: gestart
– naam: Sta poort 80 toe via firewalld
firewalld:
poort: 80/tcp # U kunt ook de "service: http"-syntaxis gebruiken
permanent: ja
staat: ingeschakeld
Overzicht van de Ansible-host die verbinding maakt met uw webservers en NGINX installeert. Om dit playbook uit te voeren, voert u eenvoudig `ansible-playbook nginx-install.yaml` uit en Ansible zal Nginx gaan installeren op alle hosts in uw webservergroep. Dit is een eenvoudig draaiboek met een enkel spel, maar het is een goed voorbeeld van het gemak waarmee Ansible in uw omgeving kan worden gebruikt.
Conclusie
Zoals u kunt zien, is Ansible een zeer flexibele en gebruiksvriendelijke automatiseringstool die in elke omgeving kan werken. Met zijn gemakkelijke leercurve en het vermogen om mee te groeien met uw behoeften, is Ansible een van de beste automatiseringstools voor infrastructuurimplementatie naar een volledig door DevOps beheerde omgeving.
-Justin Gauthier