Filtry Jinja2 to niezwykle mocne narzędzie, które może pomóc nam w różnych działaniach dotyczących manipulowania informacjami w Ansible. Na tej podstawie omówimy filtry ansible selectattr i odrzucone jinja w tym artykule. Ale przed wskoczeniem do SelectAttr i odrzucania, najpierw zrozummy, jaka jest rola filtrów w Jinja2.
Jakie są filtry Jinja2 w Ansible?
Kiedy potrzebujemy obsługi informacji, strukturyzacji i tłumaczenia, używamy Ansible. Jinja2 oferuje kilka wstępnie zbudowanych filtrów, a także filtry dostosowywane przez użytkowników. Te filtry to filtry jinja2, które działają w backend, który przekształca dostarczone informacje w wyrażeniu szablonu. Ukierunkowane zdalne serwery nie są zaangażowane w szablony, odbywa się on w systemie kontrolera Ansible. W rezultacie filtry są stosowane do danych lokalnych, które zapewnia kontroler Ansible. Dodatkowo filtry SelectAttr i odrzucania Ansible pochodzą z tych filtrów.
Filtr SelectAttr w Ansible
SelectAtTR stoi dla filtra Atrybut Select Atrybut. Każdy atrybut Select jest używany do przeprowadzenia testowania każdego obiektu, który jest zdefiniowanym atrybutem i wybierając tylko te, które przechodzą filtry testowe, jest sukcesją elementów. Wynik atrybutu Select byłby oceniany jako logika. W filtrze Ansible SelectAtTR trzy parametry są przekazywane w Ansible, które są atrybutem, operatorem logicznym i argumentem. Jeden z wbudowanych testów Jinja można wybrać jako operator.
Przykład:
Oto prosty przykład, w którym zamierzamy korzystać z filtra SelectAttr w Ansible. Aby zrozumieć, jak to będzie działać w Ansible, zamierzamy wdrożyć scenariusz, abyśmy zrozumieli, jak będzie działać w Ansible. Aby to zrobić, najpierw utworzymy podręcznik, ponieważ podręczniki są kolekcjami instrukcji, które są autonomiczne.
Ansible Playbook ma różne moduły, a każdy moduł wykonuje określoną funkcjonalność. Każdy moduł zapewnia metadane, które ustalają, kiedy, gdzie, i przez które zdalne gospodarz to zadanie jest przeprowadzane. Poniżej znajduje się polecenie, które napiszemy w terminalu, aby utworzyć podręcznik.
[root@master ansible]# nano ansible_filter.ymlAby utworzyć podręcznik, piszemy także rozszerzenie podręcznika, którym jest YAML, lub kolejny język znaczników, który jest formatem plików, który korzysta z rozszerzenia.yml. Teraz podręcznik jest uruchamiany w nowym terminalu Ansible o nazwie Ansible_filter.yml. W podręczniku najpierw piszemy informacje dotyczące zdalnych hostów. W hostach używamy LocalHost jako docelowego zdalnego hosta.
Następnie przekazaliśmy „prawdziwą” wartość do opcji Gather_Facts w podręczniku, abyśmy mogli uzyskać wszystkie informacje powiązane z LocalHostem na wyjściu. Po ustanowieniu gospodarza stworzymy listę każdego zadania, które zamierzamy wykonać. Pierwsza nazwa zadania to „wszystkie zmienne środowiskowe” i przekazaliśmy w niej zmienną, abyśmy mogli ją debugować. W następnym zadaniu chcemy włączyć filtr jinja2 używany w ansible, który jest filtrem SelectAttr. W filtrze SelectAtTR przekazaliśmy trzy argumenty, które są kluczem, dopasowaniem i powłoką.
- zastępy niebieskie:Po wyświetleniu wszystkich zadań, chcemy zrobić, zakończymy podręcznik, uderzając w Ctrl + X, a następnie zapisujemy aktualizacje. Teraz chcemy wykonać podręcznik
[root@master ansible]# ansible-playbook ansible_filter.ymlOto wymagana prezentacja, wykorzystując atrybut SelectAtTR w podręczniku. Jak widzieliście, otrzymaliśmy bardzo długą wydajność, ponieważ wykorzystaliśmy opcję Fact Gathering jako prawdziwą w podręczniku. Właśnie dlatego wyświetla wszystkie informacje o hostu lokalnym w wyjściu w terminalu ansible.
Jak pokazano, atrybut Select jest włączony, pokazując sygnał OK na końcu terminalu wyjściowego.
Filtr odrzucania w Ansible
Odrzucona jest atrybutem odrzucania jinja2 w ansible i jest przeciwieństwem selekcji. Odrzucanie usuwa wszelkie elementy z określonej iteracją, które nie spełniają dostarczonego atrybutu i z powodzeniem przejść test. Przeprowadzanie testów na danym atrybucie każdego elementu, w ramach procesu filtrowania, powoduje odrzucenie wszelkich elementów, które przechodzą test. Boolean ocena wartości atrybutu będzie miało miejsce, jeśli nie zostanie dostarczony test.
Przykład:
Oto przykład, który zamierzamy wykonać przy użyciu jednego z ważnych atrybutów jinja2 w ansible, który jest atrybutem odrzucania. W tym przykładzie staramy się zastosować warunek do każdego elementu w słowniku, aby wyeliminować dopasowane elementy ze słownika. W tym celu ponownie uruchomimy podręcznik, abyśmy mogli zmienić zadania zgodnie z atrybutem odrzucania. Poniżej znajduje się polecenie uruchomienia module_filter.Piłka YML:
[root@master ansible]# nano ansible_filter.ymlTeraz, w podręczniku, przekazaliśmy opcję „Fałsz” do faktu zebrania, ponieważ nie chcemy uzyskać dodatkowych informacji związanych z LocalHost, ponieważ otrzymaliśmy już informacje w przykładzie filtra SelectAtTR. Teraz napiszmy zmienną w podręczniku. W Vars musimy napisać nazwę i rodzaj leków. Następnie musimy napisać zadanie. W zadaniu chcemy odfiltrować wszystkie leki oprócz czopek i debugujemy je, przekazując w nim filtr rejectAttr.
- zastępy niebieskie:Teraz zakończymy podręcznik. Następnie chcemy uruchomić podręcznik, abyśmy mogli uzyskać odpowiednie wyjście atrybutu odrzucania Ansible.
[root@master ansible]# ansible-playbook ansible_filter.ymlOto wynik atrybutu odrzucenia w narzędziu Ansible. Terminal wyświetla odrę i medycynę Nepawell, a odrzuca leki Colace z podręcznika.
Wniosek
Nauczyliśmy się, jakie są filtry w Jinja2 i jakie filtry będziemy używać w tej sesji Ansible. Omówiliśmy dwa ważne filtry, które są filtrami SelectAttr i RejectAttr w Ansible. Wdrożyliśmy każdy przykład filtra, aby użytkownicy mogli łatwo zrozumieć pojęcia i działanie tych filtrów w Ansible.