jak pracovat s Ansible proměnných a faktů-Část 8

zmínili jsme proměnné v této Ansible série a jen trochu jog svou mysl. Proměnná, stejně jako v mnoha programovacích jazycích, je v podstatě klíčem, který představuje hodnotu.

co představuje platný název proměnné?

název proměnné obsahuje písmena, čísla, podtržítka nebo kombinaci 2 nebo všech. Mějte však na paměti, že název proměnné musí vždy začínat písmenem a neměl by obsahovat mezery.

Pojďme se podívat na několik příkladů platné a nepřijatelné proměnná jména:

Platný Název Proměnné Příklady:

football foot_ballfootball20 foot_ball20

Non-platný Název Proměnné Příklady:

foot ball20 foot-ball

Pojďme diskutovat o typy proměnných:

Playbook Proměnné

Playbook proměnné jsou poměrně jednoduché a přímočaré. Chcete-li definovat proměnnou v PlayBooku, jednoduše použijte klíčové slovo vars před zápisem proměnných s odsazením.

Chcete-li získat přístup k hodnotě proměnné, umístěte ji mezi dvojité složené závorky uzavřené uvozovkami.

Zde je jednoduchý příklad scénáře:

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

Ve výše uvedené učebnici, pozdrav proměnné je nahrazena hodnotou Hello world! když je spuštěna příručka. Playbook jednoduše vytiskne zprávu Hello world! když je popraven.

Playbook Proměnných v Ansible

Navíc můžete mít seznam nebo pole proměnných, jak je uvedeno:

playbook níže ukazuje proměnná s názvem kontinentech. Proměnná obsahuje 5 různých hodnot-názvy kontinentů. Ke každé z těchto hodnot lze snadno přistupovat pomocí indexu 0 jako první proměnné.

příklad níže uvedené příručky načte a zobrazí Asii (Index 1).

Pole Proměnných v Ansible

proměnné seznam může být strukturován podobně jak je znázorněno:

vars: Continents: 

Do seznamu všechny položky na seznamu, použijte with_items modul. Tím se projdou všechny hodnoty v poli.

seznam proměnných Ansible Array

dalším typem proměnné Ansible je proměnná slovníku.

slovník proměnné jsou navíc podporovány v playbook. Chcete-li definovat proměnnou slovníku, jednoduše identifikujte pár klíč-hodnota těsně pod názvem proměnné slovníku.

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

ve výše uvedeném příkladu je VLAN proměnná slovníku, zatímco id a port jsou páry klíč-hodnota.

pro port_id, protože hodnotu začínáme textem a ne proměnnou, uvozovky nejsou nutné k obklopení složených závorek.

Speciální Proměnné

Ansible poskytuje seznam předdefinovaných proměnných, které mohou být odkazované v Jinja2 šablony a playbooks, ale nemohou být změněny nebo definované uživatelem.

Kolektivně, seznam Ansible předdefinované proměnné se označuje jako Ansible fakta a ty jsou shromažďovány, když scénář je popraven.

získat seznam všech Ansible proměnné, použijte nastavení modulu v Ansible ad-hoc příkaz, jak je uvedeno níže:

# ansible -m setup hostname

zobrazí se výstup v JSON formátu, jak je znázorněno:

# ansible -m setup localhost
Seznam Ansible Proměnné

Z výstupu, můžeme vidět, že některé z příkladů Ansible speciální proměnné patří:

Existuje mnoho dalších Ansible speciální proměnné tyto jsou jen některé příklady.

tyto proměnné lze použít v šabloně Jinja2, jak je znázorněno:

proměnné zásob

a konečně, v seznamu máme možné proměnné zásob. Inventář je soubor ve formátu INI, který obsahuje všechny hostitele, které má Ansible spravovat.

v inventářích můžete přiřadit proměnnou hostitelskému systému a později ji použít v příručce.

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

výše uvedené lze znázornit v souboru PlayBook YAML, jak je znázorněno:

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

Pokud hostitelské systémy sdílejí stejné proměnné, můžete definovat další skupiny v seznamu souboru, aby se to méně těžkopádné a vyhnout se zbytečnému opakování.

například:

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

výše uvedené mohou být strukturovány jako:

web_server_1web_server_2ansible_user=centoshttp_port=80

A v učebnici YAML souboru, to bude definován, jak je znázorněno:

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

Ansible Fakta

Když běží playbooks, první úkol, který Ansible dělá, je provedení nastavení úkolu. Jsem si docela jistý, že jste museli narazit na výstup:

TASK: *********

možná fakta nejsou nic jiného než Vlastnosti systému nebo informace o vzdálených uzlech, ke kterým jste se připojili. Tyto informace zahrnují architekturu systému, verzi operačního systému, informace o systému BIOS, systémový čas a datum, provozuschopnost systému, IP adresu a informace o hardwaru, abychom zmínili jen několik.

získat fakta o každém systému jednoduše použít instalační modul, jak je znázorněno na níže uvedený příkaz:

# ansible -m setup hostname

například:

# ansible -m setup database_server

To vytiskne velký soubor dat ve formátu JSON, jak je znázorněno:

Ansible Se Systémem Fakta

Ansible fakta jsou užitečné v pomáhá správcům systému, které operace provádět, například, v závislosti na operačním systému, jsou schopni vědět, které balíčky softwaru musí být nainstalován, a jak mají být nastaveny, atd.

vlastní fakta

Věděli jste také, že si můžete vytvořit vlastní fakta, která mohou být shromážděna Ansible? Ano, můžeš. Tak jak se vám jít o tom? Pojďme řadit a uvidíme jak.

prvním krokem je vytvoření /etc / ansible / facts.d adresář na spravovaném nebo vzdáleném uzlu.

v tomto adresáři vytvořte soubor (y) s příponou .fact. Tento soubor(y) vrátí JSON data, když je playbook spuštěn na ovládacím uzlu Ansible, který je včetně dalších skutečností, které Ansible načte po spuštění playbook.

zde je příklad vlastního souboru faktů s názvem date_time.skutečnost, že načte datum a čas.

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

přidejte do něj následující řádky.

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

Uložte a ukončete soubor.

nyní přiřaďte oprávnění execute:

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

Nyní jsem vytvořil playbook na Ansible řídicím uzlu s názvem check_date.yml.

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

připojte soubor fact k proměnné ansible_local. Ansible_local ukládá všechna vlastní fakta.

spustit scénáře a sledovat, Ansible načítání informace uložené na skutečnost, soubor:

# ansible_playbook check_date.yml
Vytvořit Ansible Vlastní Fakta
Závěr

To nás přivádí ke konci tohoto tutoriálu na práci s Ansible proměnných a fakta.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Previous post STEPHEN SCHWARTZ-zlý dobrý skladatel
Next post 7 Způsobů, jak Vaše Děti Mohou Obejít Rodičovské Kontroly Software