jak pracować ze zmiennymi Ansible i faktami-część 8

wspomnieliśmy o zmiennych w tej serii Ansible i po prostu trochę poćwiczyć. Zmienna, podobnie jak w wielu językach programowania, jest zasadniczo kluczem reprezentującym wartość.

co stanowi prawidłową nazwę zmiennej?

nazwa zmiennej zawiera litery, cyfry, podkreślniki lub kombinację dwóch lub wszystkich z nich. Należy jednak pamiętać, że nazwa zmiennej musi zawsze zaczynać się od litery i nie powinna zawierać spacji.

przyjrzyjmy się kilku przykładom prawidłowych i niedopuszczalnych nazw zmiennych:

przykłady prawidłowych nazw zmiennych:

football foot_ballfootball20 foot_ball20

przykłady niepoprawnych nazw zmiennych:

foot ball20 foot-ball

omówmy typy zmiennych:

zmienne Playbooka

zmienne Playbooka są dość łatwe i proste. Aby zdefiniować zmienną w playbooku, po prostu użyj słowa kluczowego vars przed zapisaniem zmiennych z wcięciem.

aby uzyskać dostęp do wartości zmiennej, umieść ją między podwójnymi nawiasami klamrowymi zamkniętymi cudzysłowami.

Oto prosty przykład:

- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"

w powyższym playbooku zmienna powitanie jest zastępowana przez wartość Hello world! po uruchomieniu podręcznika. Playbook po prostu drukuje wiadomość Hello world! po egzekucji.

Playbook zmienne w Ansible

dodatkowo możesz mieć listę lub tablicę zmiennych, jak pokazano:

poniższy playbook pokazuje zmienną zwaną kontynentami. Zmienna posiada 5 różnych wartości-nazwy kontynentów. Każda z tych wartości może być łatwo dostępna przy użyciu indeksu 0 jako pierwszej zmiennej.

przykład poniższego playbooka pobiera i wyświetla Asia (indeks 1).

tablica zmiennych w Ansible

lista zmiennych może być podobnie skonstruowana, jak pokazano:

vars: Continents: 

aby wyświetlić wszystkie pozycje na liście, użyj modułu with_items. Spowoduje to zapętlenie wszystkich wartości w tablicy.

lista zmiennych tablicy Ansible

innym typem zmiennej Ansible jest zmienna słownikowa.

zmienne słownikowe są dodatkowo obsługiwane w playbooku. Aby zdefiniować zmienną słownikową, po prostu identuj parę klucz-wartość tuż pod nazwą zmiennej słownikowej.

hosts: switch_f01vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2

w powyższym przykładzie VLAN są zmienną słownikową, podczas gdy id i port są parami klucz-wartość.

dla port_id, ponieważ rozpoczynamy wartość od tekstu, a nie od zmiennej, znaki cudzysłowu nie są konieczne do otaczania nawiasów klamrowych.

zmienne specjalne

Ansible udostępnia listę wstępnie zdefiniowanych zmiennych, do których można się odwoływać w szablonach i playbookach Jinja2, ale nie można ich zmienić ani zdefiniować przez użytkownika.

zbiorczo lista predefiniowanych zmiennych Ansible jest określana jako Ansible facts i są one gromadzone podczas wykonywania playbooka.

aby uzyskać listę wszystkich zmiennych Ansible, użyj modułu setup w Komendzie ad-hoc Ansible, jak pokazano poniżej:

# ansible -m setup hostname

wyświetla wyjście w formacie JSON, jak pokazano:

# ansible -m setup localhost
lista zmiennych Ansible

z wyniku możemy zobaczyć, że niektóre przykłady zmiennych specjalnych Ansible obejmują:

istnieje wiele innych zmiennych specjalnych Ansible to tylko kilka przykładów.

te zmienne mogą być używane w szablonie Jinja2, jak pokazano:

zmienne inwentaryzacyjne

wreszcie, na liście mamy zmienne inwentaryzacyjne Ansible. Inwentarz to plik w formacie INI, który zawiera wszystkie hosty zarządzane przez Ansible.

w spisach można przypisać zmienną do systemu hosta, a następnie użyć jej w playbooku.

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=ubuntu http_port=8080

powyższe można przedstawić w pliku playbook YAML, jak pokazano:

--- web_servers: web_server_1: ansible_user=centos http_port=80web_server_2: ansible_user=ubuntu http_port=8080

jeśli systemy hostów mają te same zmienne, możesz zdefiniować inną grupę w pliku inwentarza, aby uczynić ją mniej uciążliwą i uniknąć niepotrzebnych powtórzeń.

na przykład:

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=centos http_port=80

powyższe można skonstruować jako:

web_server_1web_server_2ansible_user=centoshttp_port=80

a w pliku playbook YAML zostanie to zdefiniowane w sposób pokazany:

--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80

Ansible Facts

podczas uruchamiania playbooków pierwszym zadaniem wykonywanym przez Ansible jest wykonanie zadania setup. Jestem całkiem pewien, że musiałeś natknąć się na wyjście:

TASK: *********

fakty Ansible to nic innego jak Właściwości systemu lub informacje o zdalnych węzłach, z którymi się połączyłeś. Informacje te obejmują architekturę systemu, wersję systemu operacyjnego, informacje BIOS, czas i datę systemu, Czas działania systemu, adres IP i informacje o sprzęcie, aby wymienić tylko kilka.

aby uzyskać fakty dotyczące dowolnego systemu, po prostu użyj modułu konfiguracji, jak pokazano w poniższym poleceniu:

# ansible -m setup hostname

na przykład:

# ansible -m setup database_server

to drukuje duży zestaw danych w formacie JSON, jak pokazano:

Ansible Get System Facts

Ansible facts są przydatne w pomaganiu administratorom systemu, które operacje wykonać, na przykład, w zależności od systemu operacyjnego, są w stanie wiedzieć, które pakiety oprogramowania muszą być zainstalowane i jak mają być skonfigurowane itp.

niestandardowe fakty

Czy wiesz również, że możesz tworzyć własne niestandardowe fakty, które mogą być gromadzone przez Ansible? Możesz. Więc jak się do tego zabrać? Zmienimy bieg i zobaczymy jak.

pierwszym krokiem jest utworzenie / etc / Ansible / facts.d katalogu na zarządzanym lub zdalnym węźle.

wewnątrz tego katalogu Utwórz plik(i) z rozszerzeniem .fact. Ten plik(y) zwróci dane JSON, gdy playbook jest uruchamiany Na Ansible control node, co obejmuje inne fakty, które Ansible pobiera po uruchomieniu playbooka.

oto przykład niestandardowego pliku faktów o nazwie date_time.fakt, że pobiera datę i godzinę.

# mkdir -p /etc/ansible/facts.d# vim /etc/ansible/facts.d/date_time.fact

Dodaj w nim następujące wiersze.

#!/bin/bashDATE=`date`echo "{\"date\" : \"${DATE}\"}"

Zapisz i zamknij plik.

teraz Przypisz uprawnienia do wykonywania:

# chmod +x /etc/ansible/facts.d/date_time.fact

teraz utworzyłem playbook na Ansible control node o nazwie check_date.yml.

---- hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}

Dołącz plik faktów do zmiennej ansible_local. Ansible_local przechowuje wszystkie niestandardowe fakty.

Teraz uruchom playbook i obserwuj Ansible pobieranie informacji zapisanych w pliku faktów:

# ansible_playbook check_date.yml
utwórz niestandardowe fakty Ansible
wniosek

to prowadzi nas do końca tego samouczka na temat pracy ze zmiennymi Ansible i faktami.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post STEPHEN SCHWARTZ-WICKED GOOD COMPOSER
Next post 7 sposoby Twoje dzieci mogą ominąć oprogramowanie do kontroli rodzicielskiej