Odcinek 13 - Jak zbudowac własny moduł w Ansible ?
Masz już podstawową wiedzę na temat Ansible i chciałbyś dowiedzieć się czegoś więcej ? Interesuje Cię budowanie własnych modułów dla Ansible ? Jeśli tak, zachęcam Cię do odsłuchania kolejnego odcinka oraz do zapoznania się z materiałami, które przygotowałem na https://github.com/sebastianczech/podcast-everything-as-a-code/tree/main/episode-013.
Cześć! Witam Cię serdecznie w kolejnym odcinku mojego podcastu Everything as a Code. Dzisiaj chciałbym kontynuować temat związany z Ansiblem, o którym dużo mówiłem w poprzednim odcinku. Serdecznie Cię zachęcam do usłuchania poprzedniego, jeśli nie miałeś, nie miałaś ku temu okazji. Dzisiaj skupię się na tym, w jaki sposób mogłabyś, mógłbyś zbudować własny moduł Ansible. Zacznijmy od tego, że Ansible jest bardzo elastycznym narzędziem, które pozwala wykorzystywać szereg różnych modułów. Odcinek 13- Jak zbudowac własny moduł w Ansible ?
Dlaczego w ogóle chcielibyśmy budować własne moduły w Ansible? Pierwszym z powodów może być np. potrzeba automatyzacji jakichś specyficznych zadań, do których istniejące moduły nie są wystarczające. Drugim z powodów może być potrzeba enkapsulacji, czyli opakowania jakiejś logiki w łatwy do użycia moduł, Czy traktujemy wcale tą logikę jako taką czarną skrzynkę? Ta logika się dzieje w środku, my wywołujemy ten moduł, przekazujemy jakieś parametry wyjściowe i coś się dzieje i na wyjściu mamy informację zwrotną. Jaka to może być logika?
Na przykład załóżmy, że mamy jakiś system, który ma jakieś API i ten system możemy właśnie konfigurować za pomocą tego API, ale nie chcemy za każdym razem robić Nie chcemy tego za każdym razem robić, więc tę logikę możemy wyankapsulować i zawrzeć właśnie w takim module. Trzecim z powodów, które przychodzi mi na myśl, dlaczego moglibyśmy chcieć wpisać własne moduły Ansible, jest to, by polepszyć logikę albo czytelność tego kodu, który mamy.
Mamy na przykład jeśli wiele tasków, które wykorzystuje np. komendy shellowe w systemie operacyjnym Linux, możemy zamiast wykonywać szereg różnych tasków, opakować to w moduł i dzięki temu uprościć czytelność naszego kodu, naszego playbooka ansible'owego. Ok, wiemy czemu taki moduł moglibyśmy chcieć stworzyć, więc przejdźmy do tego, Co musimy w ogóle wiedzieć, by taki moduł móc zaimplementować? Przede wszystkim konieczna jest podstawowa wiedza Ansible na temat tego, w jaki sposób budujemy playbooki, taski, moduły itd.
W tym pliczku musimy oczywiście użyć pakietu, które są dostępne w Ansible, a dokładnie mówiąc model-utils. Musimy to zaimportować. I wtedy możemy użyć klasy AnsibleModule i do niej przekazujemy szereg parametrów. Pierwszym z nich i dosyć istotnym jest specyfikacja argumentów wyjściowych do modułów. I to jest w sumie najczęściej i najbardziej istotna część wywołania, zainicjowania tej klasy AnsibleModule. Gdy mamy to już zainicjowane, możemy napisać logikę, I tutaj to głównie zależy od tego, co dokładnie chcemy zrobić.
Warto budując ten moduł zastanowić się nad strukturą właśnie danych wyjściowych i wyjściowych. To jest bardzo istotne, by określić jakiego typu danych wyjściowych potrzebujemy, które z parametrów są obowiązkowe, które opcjonalne. Może niektóre mają jakieś domiczne wartości. Jeśli tak, możemy je określić na etapie implementacji naszego modułu. Bardzo istotnym elementem Implementowania modułów Ansible'owych, ale nie tylko, ogólnie programowania, jest testowanie tego, co budujemy. Tutaj implementujemy moduł w języku Python i jak pewnie wiecie, dla tego języka jest szereg różnych
Oczywiście, mając już gotowy moduł, Konieczne jest sprawdzenie go z poziomu playbooku ansible'owego, czyli napisanie taska, który ten moduł wywołuje, przekazuje odpowiednie parametry i te parametry wyjściowe również obsługuje. Jak widzicie, pisanie własnych modułów ansible'owych nie wydaje się mocno skomplikowanym zagadnieniem. Natomiast ta umiejętność z pewnością pozwoli Ci wejść, jakby to powiedzieć, na jeszcze wyższy poziom znajomości Ansible'a. Ponieważ implementując moduły, na pewno zdobędziesz o wiele więcej wiedzy, jak sam Ansible działa. Poza tym, budując własne moduły, możemy te moduły udostępniać publicznie jako open source, jeśli to oczywiście jest możliwe.
I mieć informację zwrotną od innych ludzi, którzy używają tych modułów. Cieszyć się tym, że możemy coś dla społeczności również dostarczyć. Ponieważ wiele, wiele, wiele innych osób pracowało nad modułami, które wykorzystujemy codziennie w Ansible. Więc warto dołożyć swoją małą cegiełkę do tej społeczności. Jeśli mamy możliwość, mamy jakiś ciekawy pomysł i zrobiliśmy jakiś moduł i mamy możliwość go udostępnić, patrząc oczywiście na uwarunkowania, gdzie pracujemy, czy w jakiejś organizacji, czy jest to praca hobbystyczna itd. Jeśli możemy to udostępnić w społeczności, To tym lepiej, ponieważ dzięki temu to community się rozwija i zastosowania Ansible staje się coraz większe.
Mam nadzieję, że tym odcinkiem zachęciłem Cię nie tylko do nauczenia się Ansible, ale także do tego, by spróbować czegoś trudniejszego, by spróbować napisać własny moduł, który rozwiązuje jakiś problem i mam nadzieję, że napiszesz swój moduł. Jeśli tak, Cieszę się z tego bardzo. To wszystko, co przygotowywałem w tym odcinku tego podcastu. Serdecznie Cię zachęcam do odsłuchania kolejnego z odcinków, który ukaże się za trzy tygodnie. Dzięki. Cześć.
Pokazano wszystkie 9 dopasowań. Transkrypcja generowana automatycznie i niesprawdzana ręcznie — może zawierać błędy.
Podstawowe wprowadzenie do odcinka i przypomnienie o poprzednim odcinku.
Powtórzenie tematu Ansible i powtórzenie powodów do budowania własnych modułów.
Wyjaśnienie powodów do budowania własnych modułów w Ansible, takich jak automatyzacja specyficznych zadań, enkapsulacja logiki i poprawa czytelności kodu.
Opis podstaw implementacji modułu w Ansible, w tym tworzenie katalogu i pliku Pythonowego.
Opis logiki modułu, testowanie i dokumentacja.
Rozdziały i streszczenia generowane automatycznie. Pełna transkrypcja nie jest publikowana — wyszukaj frazę, aby zobaczyć dopasowane fragmenty.
Kliknij, aby znaleźć fragmenty, w których pada.
Masz już podstawową wiedzę na temat Ansible i chciałbyś dowiedzieć się czegoś więcej ? Interesuje Cię budowanie własnych modułów dla Ansible ? Jeśli tak, zachęcam Cię do odsłuchania kolejnego odcinka oraz do zapoznania się z materiałami, które przygotowałem na https://github.com/sebastianczech/podcast-everything-as-a-code/tree/main/episode-013.