Jak pracować ze zmiennymi i faktami Ansible - Część 8
- 3919
- 1067
- Klaudia Woś
Wspominaliśmy o zmiennych w tej serii Ansible i po prostu po to, aby trochę pobiegać umysł. A zmienny, Podobnie jak w wielu językach programowania, jest zasadniczo kluczem, który reprezentuje wartość.
Co stanowi poprawną nazwę zmiennej?
Nazwa zmiennej obejmuje litery, liczby, podkreślenia lub mieszankę 2 lub wszystkich. Pamiętaj jednak, że zmienna nazwa musi zawsze zacząć od litery i nie powinna zawierać spacji.
Spójrzmy na kilka przykładów prawidłowych i niedopuszczalnych nazw zmiennych:
Prawidłowe przykłady nazwy zmiennej:
piłka nożna foot_ball football20 stóp_ball20
Przykłady nazwy zmiennej bez walidów:
piłka stopy 20 stóp
Omówmy typy zmiennych:
1. Zmienne podręcznika
Podręcznik Zmienne są dość łatwe i proste. Aby zdefiniować zmienną w podręcznik, Po prostu użyj słowa kluczowego vars Przed napisaniem zmiennych z wcięciem.
Aby uzyskać dostęp do wartości zmiennej, umieść ją między podwójnymi klamrami kręconymi zamkniętymi ze znakami cytatowymi.
Oto prosty przykład podręcznika:
- Gospodarze: Wszystkie vars: Powitanie: Witaj świecie! Zadania: - Nazwa: ansible podstawowa zmienna przykładowy debugowanie: msg: " Powitanie "
W powyższym podręczniku, Powitanie zmienna jest zastąpiona wartością Witaj świecie! Kiedy podręcznik jest uruchomiony. Podręcznik po prostu drukuje wiadomość Witaj świecie! Po wykonaniu.
Zmienne podręcznika w AnsibleDodatkowo możesz mieć listę lub tablicę zmiennych, jak pokazano:
Poniższy podręcznik pokazuje zmienną o nazwie kontynenty. Zmienna zawiera 5 różnych wartości - nazwy kontynentu. Każdy z tych wartości można łatwo uzyskać za pomocą za pomocą indeks 0 jako pierwsza zmienna.
Przykład poniższego podręcznika pobiera i wyświetla Azja (indeks 1).
- Gospodarze: All Vars: Kontynenty: - Afryka - Azja - Ameryka Południowa - Ameryka Północna - Zadania Europy: - Nazwa: ANSIBLE LIST Zmienna przykład debugowania: MSG: „Continents [1]”Tablica zmiennych w Ansible
Lista zmiennych można podobnie ustrukturyzować, jak pokazano:
Vars: Continents: [Afryka, Azja, Ameryka Południowa, Ameryka Północna, Europa]
Aby wymienić wszystkie elementy na liście, użyj Z_ITEMS moduł. To zapętla się przez wszystkie wartości w tablicy.
- Gospodarze: All Vars: kontynenty: [Afryka, Azja, Ameryka Południowa, Ameryka Północna, Europa] Zadania: - Nazwa: Ansible tablic Zmienne Przykład debugowania: MSG: " przedmiot "with_Items: -" kontynenty "Lista zmiennych tablicowych
Innym rodzajem zmiennej ansible jest słownik zmienny.
Słownik Zmienne są dodatkowo obsługiwane w podręczniku. Aby zdefiniować zmienną słownika, po prostu zidentyfikuj parę wartości kluczowej tuż poniżej nazwy zmiennej słownika.
Hosty: Switch_f01 Vars: http_port: 8080 Default_gateway: 10.200.50.1 VLAN: ID: 10 Port: 2
W powyższym przykładzie, Vlany jest zmienną słownika ID I Port są parami kluczowymi.
Hosty: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 portów: 20 zadań: Nazwa: konfiguruj domyślną bramę system_configs: default_gateway_ip: „default_gateway„ nazwa: Port etykiety na vlan 10 vlan_configs: vlan: „default_gateway vlans ['id'] „ port_id: 1/1/ vlans ['port']
Dla port_id, Ponieważ zaczynamy wartość z tekstem, a nie zmienną, znaki cytatowe nie są konieczne do otaczania kręconych aparatów ortodontycznych.
2. Zmienne specjalne
Ansible zapewnia listę predefiniowanych zmiennych, do których można się odwoływać w szablonach i podręcznikach Jinja2, ale nie mogą być zmieniane ani zdefiniowane przez użytkownika.
Łącznie lista predefiniowanych zmiennych jest określana jako Niezbędne fakty i są zbierane, gdy wykonuje się podręcznik.
Aby uzyskać listę wszystkich zmiennych ansible, użyj organizować coś Moduł w poleceniu Ansible Ad-hoc, jak pokazano poniżej:
# ansible -m konfiguracja nazwa hosta
To wyświetla wyjście w formacie JSON, jak pokazano:
# ansible -m konfiguracja LocalHostWypisz zmienne ansible
Z wyjścia widać, że niektóre przykłady ansible Special zmienne obejmują:
ansible_architecture ansible_bios_date ansible_bios_version ansible_date_time ansible_machine ansible_memefree_mb ansible_os_family ansible_selinux
Istnieje wiele innych specjalnych zmiennych, to tylko kilka przykładów.
Te zmienne mogą być używane w Jinja2 szablon, jak pokazano:
Nazwa hosta tego serwera jest to ansible_hostname
Działa dalej ansible_os_familysystem
3. Zmienne zapasowe
Na koniec na liście mamy zmienne zapasowe. Inwentaryzacja to plik w Ini format zawierający wszystkich hostów, które należy zarządzać przez Ansible.
W zapasach możesz przypisać zmienną do systemu hosta, a później użyć jej w podręczniku.
[Web_Servers] Web_server_1 ansible_user = Centos http_port = 80 Web_Server_2 Ansible_user = Ubuntu http_port = 8080
Powyższe mogą być reprezentowane w podręczniku Yaml Plik jak pokazano:
--- Web_servers: Web_server_1: ansible_user = centos http_port = 80 Web_Server_2: ansible_user = Ubuntu http_port = 8080
Jeśli systemy hosta mają te same zmienne, możesz zdefiniować inną grupę w pliku ekwipunku, aby uczynić ją mniej uciążliwą i uniknąć niepotrzebnego powtórzenia.
Na przykład:
[Web_Servers] Web_server_1 ansible_user = Centos http_port = 80 Web_Server_2 Ansible_user = Centos http_port = 80
Powyższe można ustrukturyzować jako:
[Web_servers] Web_server_1 Web_Server_2 [Web_Servers: Vars] ansible_user = Centos http_port = 80
I w podręczniku Yaml Plik, zostanie to zdefiniowane jak pokazano:
--- Web_servers: Hosts: Web_server_1: Web_server_2: Vars: ansible_user = Centos http_port = 80
Niezbędne fakty
Podczas uruchamiania podręczników pierwszym zadaniem, które robi Ansible, jest wykonanie zadania konfiguracji. Jestem prawie pewien, że musiałeś natknąć się na wyjście:
Zadanie: [Zbieranie faktów] *********
Fakty są tylko właściwości systemu lub informacje o zdalnych węzłach, z którymi się podłączyłeś. Informacje te obejmują architekturę systemu, wersję systemu operacyjnego, informacje BIOS, godzinę i datę systemu, czas aktualizacji systemu, adres IP i informacje o sprzęcie, aby wymienić tylko kilka.
Aby uzyskać fakty dotyczące dowolnego systemu, po prostu użyj organizować coś moduł, jak pokazano w poniższym poleceniu:
# ansible -m konfiguracja nazwa hosta
Na przykład:
# ansible -m setup baza danych_server
To drukuje duży zestaw danych w JSON format jak pokazano:
Ansible Get System FactsFakty dotyczące możliwości są przydatne, pomagając administratorom systemowym, których operacje do przeprowadzania, na przykład, w zależności od systemu operacyjnego, są w stanie wiedzieć, które pakiety oprogramowania należy zainstalować i jak mają być skonfigurowane itp.
Fakty niestandardowe
Czy wiedziałeś również, że możesz stworzyć własne niestandardowe fakty, które można zebrać przez Ansible? Tak, możesz. Więc jak się do tego zaczynasz? Zmieńmy biegi i zobaczmy, jak.
Pierwszym krokiem jest utworzenie /etc/ansible/fakty.D katalog w zarządzanym lub zdalnym węźle.
W tym katalogu utwórz plik (y) z .fakt
rozszerzenie. Ten plik (y) zwróci JSON Dane podczas uruchamiania podręcznika w węźle Ansible Control, które obejmują inne fakty, które Ansible pobiera po uruchomieniu podręcznika.
Oto przykład niestandardowego pliku faktów o nazwie date_time.fakt który pobiera datę i godzinę.
# mkdir -p/etc/ansible/fakty.d # vim/etc/ansible/fakty.d/date_time.fakt
Dodaj w nim następujące wiersze.
#!/bin/bash data = "data" echo "\" data \ "": \"" $ data \ """"
Zapisz i wyjdź z pliku.
Teraz przypisz uprawnienia do wykonania:
# chmod +x/etc/ansible/fakty.d/date_time.fakt
Teraz utworzyłem poradnik w nazwie Ansible Control Node Sprawdź datę.yml.
--- - Hosty: WebServers Zadania: - Nazwa: Pobierz niestandardowe fakty: MSG: Fakt niestandardowy to ansible_local.date_time
Dołącz plik faktów do ansible_local zmienny. ansible_local przechowuje wszystkie niestandardowe fakty.
Teraz uruchom podręcznik i obserwuj informacje o pobieraniu informacji zapisanych w pliku faktu:
# ansible_playbook check_date.ymlUtwórz niestandardowe fakty
Wniosek
To prowadzi nas do końca tego samouczka na temat pracy ze zmiennymi i faktami Ansible.
"- « Jak tworzyć i pobierać role w Ansible Galaxy i używać ich - część 9
- Jak ustawić niestandardową rozdzielczość ekranu na pulpicie Ubuntu »