Skabelse af dine egne Ansible-moduler

Vince Sesto

Follow

20. mar, 2019 – 4 min read

Det er så nemt at tilpasse Ansible til dine behov

Hver dag fortsætter antallet af Ansible-moduler med at vokse, og der tilføjes ekstra støtte i takt med at brugen af programmet fortsætter. Så hvorfor skulle du have brug for at oprette dine egne Ansible-moduler. Tja, der er en række grunde, men jeg tror, at den mest gyldige er, så du kan få en forståelse for, hvordan modulerne fungerer. Selv om denne nyfundne færdighed måske ikke kommer op meget ofte, er der større sandsynlighed for, at du skal fejlfinde fejl eller problemer med eksisterende Ansible-moduler, så det kan være en værdifuld færdighed at vide, hvordan det hele fungerer.

Du skal også huske, at der er mange ældre legacy-applikationer eller interne applikationer, som din organisation måske bruger, og som ikke har deres egne moduler. Der er andre muligheder for at implementere disse applikationer via Ansible og levere skabeloner til at konfigurere dem, men det kan være nemmere at oprette dit eget modul til disse applikationer. Uanset hvad, vil det følgende dokument give dig detaljerne til at komme i gang og forhåbentlig give dig mulighed for at udvide det yderligere.

Hvis du leder efter en god måde at lære mere om Ansible på, kan du følge linket til vores seneste bog, Ansible Answers

Dette er et ret grundlæggende eksempel, men jeg håber, at du vil se, at alt du behøver er en lille smule kendskab til Python, kombineret med dine Ansible-færdigheder, og du vil være i stand til at begynde at oprette dine egne Ansible-moduler …Bare rolig hvis din viden er lidt mangelfuld på nogen af delene, alt vil blive forklaret efterhånden som vi går igennem det sammen.

Vi vil blot gennemgå et grundlæggende “Hello World”-modul, for at vise dig hvor nemt det er. Dette indlæg vil ikke dække installationen og det grundlæggende i Ansible, så du er velkommen til at tjekke vores tidligere indlæg for flere detaljer.

1. Start med at få adgang til dit arbejdsmiljø, som allerede har Ansible installeret på det. Inden for den mappe, du arbejder i, opretter du en biblioteksmappe:

mkdir library

2.Inden for i biblioteksmappen opretter du din nye modulfil med navnet hello_module.py:

touch library/hello_module.py

3. Med din foretrukne teksteditor åbner du den nye fil og tilføjer følgende kode (tallene til venstre er kun til reference og skal ikke tilføjes til filen):

Der er ikke noget alt for kompliceret her, men hvis du ikke er bekendt med Python, er her en opdeling af hver af linjerne. Linje 1 angiver, at den skal bruge den lokalt installerede version af Python. Linje 3 importerer de specifikke moduler, som skal køre med Ansible. Linje 5 til 8 er den funktion, der vil køre som en del af dit modul, specielt linje 6 giver AnsibleModule-klassen, som giver os mulighed for at håndtere indgående parametre og giver os mulighed for at afslutte programmet, med svaret “hello” og derefter “world!” i linje 7. Linje 10 og 11 kører derefter funktionen, når modulet kaldes.

4. Vi kan nu oprette en playbook til at køre modulet. I din arbejdsmappe opretter du filen newmodule_test.yml:

touch newmodule_test.yml

5.Du kan nu fyre op for din teksteditor og tilføje følgende detaljer, så din playbook kan køre

 1 ---
2 - hosts: 127.0.0.1
3 tasks:
4 - name: testing our new module
5 hello_module:
6 register: result
7
8 - debug: var=result

Hvis du ikke har arbejdet med Ansible før, er ovenstående kode i stand til at tildele værten i linje 2 til at være den, som du arbejder på. Linje 3 til 6 kører det nye modul, idet linje 4 navngiver opgaven, linje 5 kalder modulet, og linje 6 registrerer resultatet som en variabel med navnet result. Til sidst bruger linje 8 så debug-funktionen til at outputte resultaterne for at vise dig, at alt fungerede.

6.Vi kan nu køre den nye playbook med følgende kommando:

ansible-playbook newmodule_test.yml

Som giver dig følgende output:

Hvis alt gik godt, skulle du se ovennævnte output, som giver dig et pænt “hello”: “world!” som output.

Ok, vi har været ret hurtige og beskidte her, og det var formålet med indlægget, men alt du behøver er at udvide din viden om Python, og du vil også være i stand til at udvide, hvad dine moduler kan gøre.

Fandt du dette indlæg nyttigt? Venligst tryk på klapknappen nedenfor! 🙂

Om forfatteren

Skriv en kommentar