Ansible selectAttr/rejectAttr

Ansible selectAttr/rejectAttr

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.yml

Aby 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:
- Lokalny Gospodarz
GACED_FAFTS: True
Zadania:
- Nazwa: wszystkie zmienne środowiskowe
odpluskwić:
var: „ansible_facts.env '
- Nazwa: Włączone filtr
odpluskwić:
MSG: "(ansible_facts.Env | Dict2Items | SelectAttr („Key”, „Match”, „Shell”)) | Lista "

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.yml

Oto 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.yml

Teraz, 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:
- Lokalny Gospodarz
GACED_FAFTS: FAŁSZ
vars:
leki:
- Nazwa: odra, typ: zastrzyki
- Nazwa: Nepawell, Type: Drops
- Nazwa: COLACE, Typ: Sumpositories
Zadania:
- Nazwa: Filtruj wszystkie leki inne niż czopki
odpluskwić:
MSG: "(Medicines | rejectAttr ('type', 'match', 'cumpositories')) | lista"

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.yml

Oto 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.