Pokud jste programovali v Pythonu, Javě, C, C++ nebo v jakémkoli jiném programovacím jazyce, pak proměnné nejsou cizí. Stejně jako v programovacích jazycích se proměnné v Ansible používají k uložení hodnoty.
V Ansible poskytují proměnné tolik potřebnou flexibilitu v Playbookech, šablonách a inventářích, jak později uvidíme v tomto tutoriálu. Vestavěné proměnné lze použít k poskytování systémových informací, jako je název hostitele, architektura systému, rozhraní atd. Proměnné lze také použít k nahrazení řetězců a také v smyčkách pro procházení dané sady hodnot.
Platný název proměnné se skládá z následujících znaků
- Dopisy
- Čísla
- Podtržítka
- Kombinace libovolných dvou nebo všech výše uvedených
Proměnná BY VŽDY MĚLA ZAČÍNAT PÍSMENEM A NESMÍ OBSAHOVAT ŽÁDNÉ MEZERY.
Mezi příklady přijatelných názvů proměnných patří:
- otočný talíř
- otočný stůl
- otočný talíř01
- otočný stůl_01
Níže uvedené názvy se nekvalifikují jako platné názvy proměnných
- otočný stůl
- otočný stůl
- 01točna
- 01
Podívejme se nyní na různé případy použití proměnných v Ansible
Proměnné v Příručkách
Jak víte, Playbook je sbírka her nebo úkolů, které mají být provedeny na vzdáleném systému. V příručkách jsou proměnné užitečné při určování toho, jak lze úkoly provádět. Přiřazení hodnoty proměnné v playbooku je docela snadné a přímočaré.
Začněte voláním vars klíčové slovo pak zavolejte název proměnné následovaný hodnotou, jak je uvedeno.
--- - hostitelé:všechny varianty:pozdravy:Ahoj kluci! tasky:- name:Ansible Variable Basic Usage debug:msg:"{{ salutations }}"
Ve výše uvedené příručce je název proměnné salutations a hodnota je Ahoj světe! Když je playbook spuštěn, hodnota playbooku je přístupná umístěním proměnné mezi složené závorky, jak je znázorněno výše. Po spuštění playbook vytiskne zprávu „Ahoj kluci “ na terminálu.
Proměnné s poli
Můžete použít pole a přiřadit je k proměnným, jak je uvedeno v syntaxi níže:
vars:
název pole:
– hodnota1
– hodnota2
Například níže uvedená příručka obsahuje pole 5 jmen studentů uložených v proměnné nazvané studenti. Ke jménům studentů můžete přistupovat pomocí indexování (jako v polích v jakémkoli jiném programovacím jazyce) Chcete-li například získat jméno ‚Arthur‘ ze seznamu polí, použijte syntaxi studentů [2], jak je uvedeno níže.
- hostitelé:všechny varianty:studenti:- Mark - Melisa - Arthur - Kevin - Lisa úkoly:- jméno:Ansible List variable Příklad ladění:msg:"{{ students[2] }}"
Proměnné se slovníky
Ze seznamu Array můžete dále definovat každou z položek pomocí páru klíč hodnota tvořící to, co nazýváme seznam slovníků. Syntaxe je uvedena níže
vars:
název pole:
název_slovníku1:
hodnota1:hodnota položky1
hodnota2:hodnota položky2
název_slovníku2:
hodnota1:hodnota položky1
hodnota2:hodnota položky2
Pomocí našeho předchozího příkladu můžeme mít seznamy slovníků níže
- hostitelé:všechny vars: studenti: - Označení: město:Melbourne adresa:0045-0987-8642 - Angela: 5 5 5 6 – 7 6Pro přístup ke slovníku jednoduše přidejte úkol níže
úkoly: - ladění: var:studenti
Proměnné v souborech inventáře
Pokud máte různé hostitelské systémy, které sdílejí podobné atributy nebo hodnoty, můžete definovat to, čemu říkáme skupinové proměnné. Ty se používají k přiřazení atributů, které jsou společné všem hostitelům.
Například:
Předpokládejme, že máme 2 webové servery:webserver_1 a webserver_2 které oba naslouchají portu 443 a jejichž ntp server je us.pool.ntp.org. Soubor inventáře se zobrazí takto:
[web_servers]webserver_1webserver_2[web_servers:vars]http_port=443ntp_server=us.pool.ntp.orgV souboru YAML playbook by to bylo znázorněno takto
web_servers: hosts: web_server_1: web_server_2: vars: http_port=80 ntp_server=us.pool.ntp.orgPrvní část definuje vzdálené hostitele, kterými jsou webserver_1 a webserver_1 , zatímco druhá část seskupuje společné atributy mezi dvěma servery. To přichází jako velmi pohodlný způsob aplikace proměnných, které jsou společné pro více hostitelských systémů.
Proměnné hostitele a skupiny
Ačkoli můžete zadat proměnné v souboru inventáře, standardní praxe odrazuje od ukládání proměnných do souboru inventáře. Zde přichází na řadu soubory proměnných hostitele a skupiny.
V souboru hostitelských proměnných se proměnná vztahuje pouze na jeden hostitelský systém v souboru inventáře. Soubor hostitelské proměnné je obvykle uložen v host_vars adresář, který je obvykle uveden v /etc/ansible/ cesta.
Zvažte soubor inventáře níže, kde máme 2 servery, z nichž každý používá jiné ntp servery
[web_servers]webserver_1 ntp_server=uk.pool.ntp.orgwebserver_2 ntp_server=de.pool.ntp.orgNamísto zadání proměnné ntp_server v souboru inventáře vytvořte 2 soubory hostitelských proměnných v adresáři host_vars s názvy souborů odpovídajícími každému z názvů hostitelů hostitelských systémů:
# vim /etc/ansible/host_vars/webserver_1---ntp_server=uk.pool.ntp.org# vim /etc/ansible/host_vars/webserver_2---ntp_server=de.pool.ntp.orgPokud hostitelské systémy sdílejí stejné hodnoty, vytvořte soubor proměnných skupiny v group_vars adresář. Název souboru proměnné skupiny by měl odpovídat skupině hostitelů
Zvažte soubor inventáře níže
[web_servers]webserver_1webserver_2[web_servers:vars]ansible_user=rootansible_port=22Druhou sekci lze definovat jako soubor v adresáři group_vars, jak je znázorněno. To by mělo být v adresáři /etc/ansible. Pamatujte, že název souboru by měl být stejný jako název skupiny.
# vim /etc/ansible/group_vars/web_servers---ansible_user=rootansible_port=22Zde budou proměnné přístupné všem hostitelům skupiny s názvem web_servers.
Speciální proměnné v Ansible Playbook
Další kategorií proměnných jsou speciální proměnné. Jedná se o integrované proměnné, které uživatel nemůže nastavit a které Ansible vždy přepíše. Chcete-li získat seznam jedinečných názvů systémových proměnných, spusťte příkaz
# ansible -m setup název hostitele
Příklady takových speciálních proměnných zahrnují:
- ansible_all_ipv4_addresses
- ansible_architecture,
- ansible_bios_version,
- ansible_os_family,
- ansible_distribution,
Tím se zobrazí výstup ve formátu JSON
# ansible -m setup localhost
Díky flexibilitě a snadnému použití slouží proměnné k zásadnímu účelu jak v playbookech, tak v souborech inventáře. Vyhýbají se zbytečnému opakování a výrazně usnadňují život správce systému.
Přečtěte si také: Jak používat smyčky v Ansible Playbook
Přečtěte si také :Jak používat Ansible Vault k zabezpečení citlivých dat