GNU/Linux >> Znalost Linux >  >> Linux

Jak předat další proměnné do příručky Ansible

S Ansible mají uživatelé flexibilitu přijímat externí vstupy při provádění svých Ansible playbooků, aniž by měnili obsah Ansible playbooku. Toho lze dosáhnout prostřednictvím schopnosti předat další proměnné do příručky Ansible. Tato funkce je dostupná při použití Ansible CLI nebo Ansible Tower.

Proč další proměnné?

Proč bych měl předávat proměnné do playbooku Ansible, když mohu deklarovat každou proměnnou a hodnotu v playbooku nebo v souborech proměnných? Toto byla nedávná otázka, kterou jsem dostal, když jsem vysvětloval koncept použití možnosti extra vars v Ansible.

Odpověď leží explicitně, když narazíte na scénáře, jako jsou následující:

  • Co uděláte, když budete chtít změnit hodnotu proměnné? Upravit playbook nebo soubor proměnné?
  • Co uděláte, když budete chtít použít různé hodnoty pro proměnnou pokaždé, když spustíte příručku Ansible?
  • Co uděláte, když budete chtít použít hodnoty pro některé proměnné pouze při spuštění příručky?

I když tyto otázky pouze škrábou na povrch, je jasné, že když hledáte flexibilitu, Ansible extra variabilní funkce je nejlepší odpovědí na většinu těchto řešení. Následující případy použití vysvětlují, jak můžete pomocí dalších proměnných přidat flexibilitu do vašich příruček Ansible.

Pevné kódování hostitelů je špatný nápad

Například vytvoříte Ansible playbook, který běží na konkrétní sadě hostitelů a nastaví tyto hostitele do skupiny označené:webgroup. Jakmile dokončíte testování své příručky Ansible, aktivujete ji pro produkční použití.

Operační tým nebo inženýři bohužel potřebují spustit tuto příručku na jiné skupině hostitelů s názvem appgroup . Explicitním pevným zakódováním názvu skupiny hostitelů v příručce Ansible jste omezili její flexibilitu vyžadující změny v samotné příručce Ansible.

Jaký je lepší způsob řešení tohoto problému?

Použití parametru --extra-vars a úprava Ansible playbooku tak, aby při deklarování vašich hostitelů vzala proměnnou (např. uzly). Ilustruje to následující příklad:

- hosts: "{{ nodes }}"
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.apache }

Chcete-li předat hodnotu uzlům , použijte --extra-vars nebo -e možnost při spuštění Ansible playbooku, jak je vidět níže.

# ansible-playbook myplaybook.yaml --extra-vars "nodes=webgroup”

## Or

# ansible-playbook myplaybook.yaml --extra-vars "nodes=appgroup”

Tím zajistíte, že se vyhnete náhodnému spuštění příručky proti pevně zakódovaným hostitelům. Pokud se v příručce Ansible nepodařilo určit hostitele během běhu Ansible vyvolá chybu a zastaví se s hlášením žádná hodnota pro uzly .

Ovládání vašich proměnných mimo role Ansible

Role Ansible jsou kolekce šablon, souborů, proměnných, modulů, obslužných rutin a úloh vytvořených za účelem zjednodušení opětovného použití kódu Ansible.

V rámci adresářové struktury role Ansible budete mít dva typy proměnných uvnitř následujících adresářů:

  • defaults/main.yml - obsahuje proměnné pro roli, které lze přizpůsobit na základě požadovaného použití role.
  • vars/main.yml - obsahuje proměnné pro roli, které nejsou určeny ke změně.

* Vzhledem k tomu, že --extra-vars má vyšší prioritu než vars/main.yml, lze proměnné upravit pomocí parametru --extra-vars. Upravitelné proměnné by měly být umístěny v defaults/main.yml

Hodnoty proměnných můžete nastavit pomocí --extra-vars .

Například použití jiného portu v instalaci Apache, jak je uvedeno níže (za předpokladu, že proměnné jsou definovány v souboru defaults/main.yml):

# ansible-playbook deploy-apache.yaml --extra-vars “apache_listen_port=8080”

Pokud máte předat více hodnot, zkuste toto:

# ansible-playbook deploy-apache.yaml --extra-vars “apache_listen_port=8080 apache_listen_port_ssl=443”

Jak předávat proměnné obsahující mezery?

Chcete-li je předat jako další proměnné, musíte k hodnotám řetězce přidat uvozovky s mezerami:

# ansible-playbook deploy-apache.yaml --extra-vars "apache_ssl_protocol='All -SSLv2 -SSLv3'"

Sbalit

[ Potřebujete více o Ansible? Absolvujte bezplatný kurz technického přehledu od společnosti Red Hat. Ansible Essentials:Jednoduchost v technickém přehledu automatizace. ]

Toto je jen letmý pohled na různé možnosti, jak předat proměnné do příručky Ansible. Další způsoby předávání proměnných do příruček Ansible, jako je použití JSON a externích souborů proměnných, najdete na webu dokumentace Ansible.


Linux
  1. Deconstructing ansible playbook

  2. Jak vytvořit Ansible Playbook

  3. Jak nastavit proměnné prostředí Linuxu pomocí Ansible

  1. Jak nainstalovat softwarové balíčky pomocí Ansible playbooku

  2. Jak předávat proměnné prostředí do kontejnerů Docker

  3. jak vytvořit Ansible playbook pro získání verzí OS vzdálených hostitelů?

  1. Ansible Playbook:Jak vytvářet a konfigurovat Playbooky

  2. Jak používat značky v Ansible Playbook (příklady)

  3. Jak stáhnout a používat role Ansible Galaxy v Ansible Playbook