Ansible is een geweldige manier om wijzigingen massaal op meerdere machines te implementeren. Ik heb het bijvoorbeeld gebruikt om wat basisinstellingen op een nieuwe machine uit te voeren en om meerdere hosts tegelijk bij te werken. Het is ook belangrijk om in gedachten te houden dat Ansible niet alleen wordt gebruikt in homelab-omgevingen, maar ook erg populair is in bedrijfsomgevingen, waardoor het een zeer waardevolle vaardigheid is om te hebben.
Ansible is een geweldige manier om wijzigingen massaal op meerdere machines te implementeren. Ik heb het bijvoorbeeld gebruikt om wat basisinstellingen op een nieuwe machine uit te voeren en om meerdere hosts tegelijk bij te werken. Het is ook belangrijk om in gedachten te houden dat Ansible niet alleen wordt gebruikt in homelab-omgevingen, maar ook erg populair is in bedrijfsomgevingen, waardoor het een zeer waardevolle vaardigheid is om te hebben.
Ansible instellen op een nieuwe machine
Eerst moeten we het `ansible` pakket installeren, het zou zo simpel moeten zijn als:
`sudo apt update && sudo apt installeer ansible`
En we moeten onze Ansible-directory maken om uit te werken:
`mkdir ~/ansible && cd ~/ansible`
U zou nu in de Ansible-directory op uw lokale computer moeten zijn.
Ansible-overzicht
We gebruiken de twee belangrijkste functies van Ansible, inventarissen, waarin al uw hosts worden opgeslagen, en playbooks, die de "instructies" bevatten om op de hosts uit te voeren. Om ervoor te zorgen dat Ansible ons draaiboek kan lezen en de acties kan uitvoeren, moet het weten waar de hosts zijn, dat is wat het inventarisbestand is. Het is slechts een "inventaris" van alle hosts.
Nu hebben we de speelboeken zelf, zodra Ansible de inventaris heeft gelezen en op de hoogte is van alle hosts, gaat het op zoek naar wat te doen. Dat is het draaiboek, dat slechts een eenvoudig YAML-bestand is, dat "modules" gebruikt om de taken uit te voeren. Documentatie over deze modules is te vinden op de Ansible-website. Als er iets niet duidelijk is, is dit [Ansible-video voor beginners] van NetworkChuck legt dingen goed uit.
Onze Ansible-inventaris maken
Nu we een basiskennis hebben van Ansible en hoe het werkt, kunnen we onze inventaris maken. Het formaat kan in YAML of INI zijn, om het simpel te houden, zullen we INI gebruiken en slechts één host toevoegen.
Hier is een voorbeeldbestand:
inventaris.ini:
“Ini
[krachtig]
192.168.1.78
''
Noem het `inventory.ini` in je `ansible` directory. Dit bestand creëert een "groep" van `krachtig` met een enkele host van `192.168.1.78`. We kunnen dit later gebruiken in onze draaiboeken. Je kunt het elke gewenste groepsnaam en IP geven, afhankelijk van je instellingen. U kunt indien nodig ook meer hosts aan de groep toevoegen.
Ansible Playbooks implementeren
Eerst willen we controleren of Ansible werkt:
Houd er rekening mee dat onze openbare ssh-sleutel zich in het bestand Authorized_Keys moet bevinden op de host die we proberen te bereiken. Zo niet, dan zal deze opdracht mislukken. We gebruiken de groep 'krachtig', maar gebruik hoe je de jouwe ook noemde.
`ansible -i ./inventory.ini -m ping -u beheerder krachtig`
Als dat werkt, kunnen we onze playbooks op dat knooppunt inrichten.
Het draaiboek dat we gebruiken, werkt eenvoudigweg het systeem bij, start het opnieuw op en wacht tot het weer online is. Als u meerdere knooppunten in de groep heeft, zal het elk knooppunt één voor één doorlopen, wachtend tot de vorige weer online is voordat de volgende opnieuw wordt opgestart. Dit geeft de services op het knooppunt voldoende tijd om af te sluiten en te migreren als u zoiets gebruikt Docker-zwerm.
update.yml:
“Yaml
- naam: upgrade alle knooppunten en start opnieuw op
collect_facts: nee
gastheren: "{{ variabele_hosts }}"
worden: ja
serieel: 1
taken:
– naam: Updaten en Upgraden | {{ inventaris_hostnaam }}
geschikt:
# achterwaartse compatibiliteit forceren
force_apt_get: ja
update_cache: ja
upgraden: 'ja'
– naam: Opnieuw opstarten | {{ inventaris_hostnaam }}
herstart:
# hoe lang het duurt voordat het knooppunt weer online komt na opnieuw opstarten
reboot_timeout: 300
# hoe lang moet worden gewacht om opnieuw op te starten nadat de vorige taak (apt) is voltooid
pre_reboot_delay: 60
– naam: Ping | {{ inventaris_hostnaam }}
ping:
– naam: Pauze | {{ inventaris_hostnaam }}
pauze:
minuten: 5
''
`ansible-playbook -i ./inventory.ini -e variabele_hosts=krachtig -u beheerder -K ./update.yml`
![Afbeelding van de uitvoering van het Playbook](./002-ansible-playbook-executed.png)
Uitleg van de vlaggen:
– -i: geef het inventarisbestand op.
– -e: We moeten de host specificeren, in het playbook hebben we een variabele `variabele_hosts`, die wordt doorgegeven aan het playbook.
– -u: Dit is de gebruiker die wordt gebruikt om de opdrachten op de host uit te voeren.
– -K: dit vertelt het draaiboek om de gebruiker om het sudo-wachtwoord te vragen, anders zal het speelboek mislukken.
Sluiting Gedachten
Ansible is een ongelooflijk krachtige en veelzijdige tool die voor verschillende dingen kan worden gebruikt. We hebben met dit artikel nauwelijks de oppervlakte bekrast, maar je moet doorgaan met experimenteren en taken automatiseren om er meer over te leren. Of dat nu het automatiseren van Kubernetes-implementaties is, of gewoon je systemen updaten zoals we vandaag hebben gedaan.
- Ethan Edwards
Neem contact op met StorageReview
Nieuwsbrief | YouTube | LinkedIn | Instagram | Twitter | Facebook | TikTok | RSS Feed