Lees meer over Ansible Playbook om de taken te automatiseren.
Eerder bespraken we de introductie van Ansible, de installatiehandleiding en laten we het nu hebben over Playbook en de bouwstenen.
Contents
Wat is Ansible Playbook?
Het playbook is Ansible-automatiseringstaal. Het is een eenvoudig bestand met een set instructies. Het is in playbooks waarin we definiëren wat we willen dat Ansible doet. Playbooks bevatten toneelstukken die taken uitvoeren en deze taken voeren modules uit. Hun taken worden opeenvolgend uitgevoerd.
Het kan bijvoorbeeld zo simpel zijn als het uitvoeren van een reeks opdrachten op verschillende servers in een reeks en het opnieuw opstarten van die servers in volgorde. Of het kan net zo complex zijn als het inzetten en inrichten van honderden VM’s in een publieke en private cloud inclusief hun load balancing, monitoring, netwerkconfiguraties.
Playbook-taal
Playbooks zijn eenvoudige bestanden die zijn geschreven in YAML-code.
YAML is een data-serialisatietaal. Het is menselijk en machineleesbaar. Je hebt geen speciale codeervaardigheid nodig om YAML-codes te schrijven. U kunt de data-serialisatietaal zien als een vertaler voor het opsplitsen van al uw datastructuur en deze in een volgorde rangschikken die opnieuw kan worden gereconstrueerd voor later gebruik. U kunt deze gereconstrueerde gegevensstructuur gebruiken in dezelfde omgeving of zelfs in een andere omgeving.
Hieronder staat een voorbeeld van een YAML-bestand om mysql te installeren:
—
– naam: Installeer MySQL
hosts: geekflare-mysql-service
taken:
– naam: Installeer MySQL
actie: $ ansible_pkg_mgr pkg = mysql-server state = geïnstalleerd
– naam: Python MySQL DB toevoegen
actie: $ ansible_pkg_mgr pkg = python-mysqldb state = geïnstalleerd
Ansible Playbook Basics
Dit deel van het artikel behandelt de basisconcepten van Ansible om meer te begrijpen over Ansible Playbook.
Gastheren en gebruikers
Ansible heeft doelmachines nodig in de infrastructuur waarop plays moeten worden ingezet vanuit Ansible playbook. Hosts worden via hun IP-adressen aan Ansible-inventaris toegevoegd. Hosts zijn een lijst met een of meer groepen of hostpatronen, gescheiden door een dubbele punt. De remote_user bevat de naam van het gebruikersaccount.
—
– hosts: ProdServers
remote_user: geekflare
Variabelen
Met variabelen kunt u wijzigen hoe een playbook wordt uitgevoerd. Ze kunnen bijna overal in het playbook worden gebruikt en kunnen worden overgenomen van een inventaris, expliciet ingesteld tijdens runtime, ontdekt aan het begin van een playbook-run. U kunt een variabelenaam definiëren met letters, cijfers en onderstrepingstekens, maar deze mag alleen beginnen met een letter.
Port_01 is bijvoorbeeld een geldige variabele, terwijl 01_post een ongeldige variabele is. Hier is een voorbeeld van variabelen in een Ansible Playbook:
var:
http_port: 80
max_clients: 200
Voorraden
Om een playbook uit te voeren, hebt u een lijst met doelen nodig waarop u automatisering wilt laten plaatsvinden. Dit is wat een inventaris doet. Inventarislijsten kunnen op verschillende manieren worden opgebouwd en opgeslagen, inclusief statische bestanden, d.w.z. Ansible Hosts. Of het kan dynamisch worden gegenereerd via een inventarisscript dat een lijst met hosts ophaalt voor een externe bron.
U kunt ook een variabele specificeren als onderdeel van een inventarislijst. Inventarissen zijn uiteindelijk een lijst met dingen die u wilt automatiseren.
[webservers]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57
Taken
Speelt in weerbare playbook-uitvoeringstaken. De taak is verantwoordelijk voor het uitvoeren van ansible-modules. Er kan slechts één taak tegelijk worden uitgevoerd en taken worden in opeenvolgende volgorde uitgevoerd. Hun taken zijn geschreven in YAML, wat vrijwel Engels is als een taal.
Bijvoorbeeld: installeer pakketnaam, Update software_naam, etc. Hieronder is een voorbeeld van een taak in Ansible playbook om httpd te installeren:
taken:
– name: Installeer httpd Package
yum: name = httpd state = laatste
Handlers
Handlers zijn een speciaal soort taken.
Ze kunnen worden geactiveerd door een taak en worden eenmaal uitgevoerd aan het einde van het spel. Het wordt gebruikt om meldingen te verzenden als er een wijziging is in het configuratiebestand, bijvoorbeeld om de service te waarschuwen om apache te starten zodra het is geïnstalleerd. De syntaxis “kennisgeven” wordt gebruikt om handlers aan te roepen. Hieronder is een voorbeeld van een handler om apache opnieuw te starten:
—
– hosts: allemaal
taken:
– naam: zorg ervoor dat apache de nieuwste versie heeft
yum: name = httpd state = laatste
melden:
– herstart apache
– naam: zorg ervoor dat apache actief is (en schakel het in bij het opstarten)
service: name = httpd state = gestart ingeschakeld = ja
handlers:
– naam: herstart apache
service: name = httpd state = opnieuw opgestart
Maak en voer uw eerste Ansible Playbook uit
Laat me je vertellen hoe je een playbook schrijft. Elk playbook begint met drie streepjes (-) bovenaan.
Het eerste dat u in een Ansible Playbook vermeldt, zijn de hostmachines waarop u het playbook wilt uitvoeren.
Vervolgens kun je variabelen noemen door feiten te verzamelen; dan kun je de verschillende taken noemen die je wilt uitvoeren. Onthoud nu dat de taak wordt uitgevoerd in dezelfde volgorde waarin u ze schrijft. Als u bijvoorbeeld eerst software A en vervolgens software B wilt installeren, moet u ervoor zorgen dat de eerste taak die in het playbook wordt geschreven, is om software A te installeren en de volgende taak kan software B installeren.
Dan heb je onderaan handlers. De handlers zijn ook taken, maar het verschil is dat om handlers uit te voeren, je een soort triggers nodig hebt in de lijst met taken om handlers uit te voeren.
Laat me je laten zien hoe je een ansible playbook maakt om nginx op een host te installeren en te starten en te starten.
Maak een .yml-bestand waarin u uw YAML-codes plaatst om een ansible playbook te maken.
gedit nginx.yml
Plaats de onderstaande YAML-code in dit bestand en sla het bestand op.
—
– hosts: Klant
sudo: ja
var:
– serverpoort: 8080
taken:
– naam: installeert de nginx-webserver
apt: pkg = nginx state = geïnstalleerde update_cache = true
melden:
– start nginx
handlers:
– naam: start nginx
service: name = nginx state = gestart
Het bovenstaande YAML-bestand begint met hosts, ik wil dit playbook uitvoeren op de clientcomputer (client). Het IP-adres van de client is al opgeslagen in het bestand / etc / ansible / hosts.
Op de volgende regel kunnen de taken worden uitgevoerd met sudo-rechten.
Vervolgens heb ik server_port gedefinieerd als een variabele in dit playbook.
Dan komt mijn eerste taak in dit weerbare playbook om een Nginx-webserver te installeren. Deze taak heeft ook een meldingsparameter, wat betekent dat na deze taak een handler met run wordt uitgevoerd.
Ten slotte heb ik een handler geschreven om nginx op de clientcomputer te starten.
Nu je duidelijk bent met de YAML-codes in het ansible playbook, laten we het playbook uitvoeren. Hieronder vindt u de syntaxis om een ansible playbook uit te voeren:
ansible-playbook bestandsnaam.yml
Nu zal ik het ansible playbook uitvoeren, dat ik maak om nginx te installeren en te starten.
[email beveiligd]: / home / geekflare # ansible-playbook nginx.yml
AFSPELEN [Client] *********************************************** ********************
TAAK [Verzamelen van feiten] ********************************************* ************
ok: [node1]
TAAK [installeert nginx-webserver] ******************************************* ****
gewijzigd: [node1]
UITVOERENDE HANDLER [start nginx] ******************************************** ******
ok: [node1]
AFSPELEN AFSPELEN ************************************************* *********************
knooppunt1: ok = 3 gewijzigd = 1 onbereikbaar = 0 mislukt = 0 overgeslagen = 0 gered = 0 genegeerd = 0
Voer de onderstaande opdracht uit om te controleren of de nginx-server is geïnstalleerd en correct is gestart door het ansible playbook.
[email beveiligd]: / home / geekflare # ps waux | grep nginx
root 3021 0,0 0,0 77676 1516? Ss 15:27 0:00 nginx: masterproces / usr / sbin / nginx -g daemon op; master_process op;
Conclusie
Dat ging over Ansible playbook. Ik hoop dat dit artikel je heeft geholpen om te leren hoe je een Ansible-playbook kunt maken en uitvoeren. Kijk hier eens naar Cursus, als je geavanceerde onderwerpen in Ansible wilt leren, waaronder Rollen, Jinja2, Lookups, Filter, Aangepaste modules.
TAGS:
Ansible