Imidlertid er det tilfeller der du kanskje trenger å utføre en spesifikk handling på den lokale maskinen i stedet for eksterne verter. I slike tilfeller en funksjon som LOCAL_ACTION kommer godt med.
Denne guiden vil vise deg hvordan du kan jobbe med Ansible Local_Action -modulen for å utføre oppgaver lokalt.
Hvordan den ansatte lokal_aksjonsmodulen fungerer
Som nevnt tidligere, når du oppretter spillbøker, er målet vanligvis eksterne verter. Hvis du trenger å utføre en oppgave til andre verter enn de eksterne vertene, kan du bruke Ansible -moduler som Local_Action og delegat_to.
Delegat_to er nyttig når du trenger å angi en oppgave for å utføre en bestemt vert. Du peker delegat_to -modulen til målvertene ved å spesifisere enten dets vertsnavn eller IP -adresse.
Local_Action, derimot, vil bare utføre setoppgavene på den lokale maskinen. Det ligner på å sette verdien av delegat_to til localhost eller 127.0.0.1
delegat_to: localhostLocal_action -modulen er praktisk når du først trenger å utføre en oppgave på den lokale maskinen før du sender den til eksterne systemer. Dette er hovedsakelig tilpassede eller skallkommandoer i det lokale systemet.
Den beste måten å forstå hvordan du bruker lokal_aksjonsmodulen er ved å bruke eksempel på spillbøker.
Ansible Local_Action Eksempel Bruk saker
For enkelhets skyld vil vi prøve å holde spillbokene korte og ikke for kompliserte.
Før vi fokuserer på lekebøk.
I vårt eksempeloppsett har vi en Ubuntu 20.04 Server som har Ansible installert. Dette vil tjene som Ansible Control Node.
Neste, vi har tre eksterne maskiner: en Ubuntu 21.04 Server, en Debian 11 -server og en centos 8 -server.
Vi har Ansible Inventory -filen som inneholder alle de tre vertenes IP -adresser i kontrollnoden.
Når vi har kjørt en spillbok, kjøres den på alle tre vertene.
MERK: Vi vil begrense produksjonen til en enkelt vert for å unngå kompleksitet og forvirring.
Local_Action ved hjelp av en modul
Tenk på følgende spillbok:
---I den første blokken spesifiserer vi målvertene for å kjøre oppgavene med mindre annet er spesifisert.
Playbooken fortsetter å deaktivere faktainnsamling om de eksterne vertene ved å sette samlingen_facts-blokken til nei.
For å ha lest og skrivetillatelse, setter vi det å bli blokkert til sann.
I de påfølgende blokkene definerer vi to oppgaver:
Den første oppgaven oppretter et arkiv med loggfilene fra det lokale systemet. Vi delegerer oppgaven som skal kjøres i det lokale systemet ved å bruke den local_actiob -blokken. I vårt eksempel bruker vi en fellesskapsmodul som vi kan installere ved hjelp av kommandoen:
Ansible-Galaxy Collection Install Community.generellDen neste oppgaven kopierer loggarkivet fra det lokale systemet til den spesifiserte banen på den eksterne verten.
Lagre spillboken og kjør den ved hjelp av kommandoen:
Ansible-Playbook local_action.ymlEtter vellykket fullføring, bør du se en utgang som ligner den som er vist nedenfor:
Local_Action ved hjelp av en skallkommando
Eksemplet nedenfor viser deg hvordan du kjører skallkommandoer ved hjelp av Local_Action -modulen.
---I eksemplet Playbook ovenfor bruker vi Local_Action -modulen for å kjøre en Shell -kommando. Shell -kommandoen teller antall filer og kataloger som er lagret i en variabel.
Vi bruker deretter feilsøkingsmodulen for å skrive ut antall filer både på fjernkontrollen og Localhost.
Kjør filen som:
Ansible-Playbook FileCount.ymlLocal_Action with Run_once
Du kan bruke Local_Action -modulen ved siden av RUN_ONCE -parameteren.
---Playbook ovenfor vil kjøre den lokale_aksjonsblokken en gang på det lokale systemet.
Konklusjon
Local_action -modulen er nyttig når du vil delegere en oppgave å kjøre på den lokale maskinen. Du kan bruke den begge med en Ansible -modul eller en skallkommando.