GNU/Linux >> Znalost Linux >  >> Linux

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

Někdy můžete chtít spouštět konkrétní úlohy namísto spouštění celého souboru playbooku. To pomáhá zkrátit celkovou dobu provádění playbooku, zejména při práci s velkým souborem playbooku.

Co jsou tedy značky?

Tagy v playbookech jsou části metadat, které jsou připojeny k úkolům v souboru playbooku. Odkazuje se na ně při spouštění playbooků a umožňují vám selektivně cílit na určité úlohy za běhu. V zásadě jde o pokyn Ansible, aby provedl (nebo neprovedl) konkrétní úkoly v souboru playbooku.

Úkoly, které byly přeskočeny, byly obvykle provedeny, a proto je není nutné provádět znovu. Tímto způsobem se značky vyhýbají opakování a optimalizují dobu provádění playbooku. Jsou užitečné, když chcete spouštět určité úlohy na vyžádání.

V této příručce se ponoříme do Ansible Tags a ukážeme si, jak můžete k úkolům připojovat tagy, abyste určili provedení playbooku.

Proveďte konkrétní úkol v příručce

Vezměme si příklad souboru playbooku, který provádí tři úlohy, jak je uvedeno na obrázku. Tagy jsou specifikovány pomocí štítku tags na konci každého úkolu.

---
- name: Ansible Tags example
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Hello World tag example
      debug:
        msg: "Hello World!"
      tags:
        - hello

    - name: Welcome to Ansible Tags tag example
      debug:
        msg: "How are you?"
      tags:
        - welcome

    - name: Enjoy tag example
      debug:
        msg: "Enjoy!"
      tags:
        - enjoy

V této příručce máme tři značky:ahoj, vítejte a užívejte si.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --list-tags

Jak již bylo zmíněno dříve, pomocí značek můžete ovládat provádění her Ansible. Chcete-li určit, která úloha se má provést, použijte parametr -t nebo –tags.

V níže uvedeném příkazu dáváme Ansible pokyn, aby provedl pouze první úlohu, která byla označena jako hello.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --tags hello

Přeskočit konkrétní značky v příručce

Pomocí příznaku –skip-tags můžete také dát Ansible pokyn, aby přeskakoval určité značky. Přitom Ansible spustí zbytek úloh v souboru Playbook s výjimkou poskytnuté úlohy.

V tomto příkladu Ansible ignoruje poslední úkol označený jako enjoy a provede zbytek úkolů definovaných v playbooku.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --skip-tags enjoy

Zajistěte, aby se úloha vždy (nebo nikdy) nespustila

I když používáte značky k určování, které úlohy se mají v souboru playbooku provést, někdy zjistíte, že existují úlohy, které musíte provést. Vezměte si například příručku, která nainstaluje Apache na vzdálený webový server.

Kniha má 3 úkoly. Nejprve aktualizuje seznamy balíčků na vzdáleném hostiteli, nainstaluje Apache a restartuje jej. Před instalací Apache je však nutné aktualizovat seznamy balíčků nebo aktualizovat úložiště.

Vzhledem k tomu, že obnovení repozitářů je nezbytným předpokladem, označíme tento úkol tagem always.

---
- name: install Apache webserver
  hosts: webserver
  tasks:
    - name: Update and upgrade apt packages
      apt:
        update_cache: yes
      tags:
        - always

    - name: install Apache on Ubuntu
      apt:
        name: apache2
        state: latest
      tags:
        - install_apache

    - name: Restart Apache Webserver
      service:
        name: apache2
        state: restarted
      tags:
        - restart_apache

Bez jakýchkoliv tagů běží playbook podle očekávání.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

Pokud určíme spuštění jiné specifické úlohy, než té, která je povinná (což je v tomto případě první úloha), Ansible také provede úlohu, která nese značku ‘always’.

V tomto příkladu jsme dali pokyn Ansible restartovat Apache, který nese značku „restart_apache“. Úloha ‚update apt repository‘ však stále běží, protože má značku ‚always‘.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Ve stejném duchu můžete Ansible říct, aby nikdy nespouštěla ​​úlohu, a k tomu používáme značku ‚nikdy‘. Toto je přesný opak značky „vždy“.

Zpátky k naší učebnici. Předpokládejme, že po instalaci nechcete restartovat Apache. Chcete-li toho dosáhnout, jednoduše předejte značku nikdy, jak je uvedeno.

- name: Restart Apache Webserver
  service:
    name: apache2
    state: restarted
  tags:
    - restart_apache
    - never

To lze také označit následovně pomocí dvojitých hranatých závorek:

  tags: [ restart_apache, never ]

Když je playbook spuštěn bez jakýchkoliv značek, úloha bude vynechána.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

Z výstupu můžete vidět, že úloha restartování Apache byla přeskočena.

POZNÁMKA:

Úloha, která je označena jako ‚nikdy‘, bude stále spuštěna, když je explicitně volána v příkazu ansible-playbook. Například úloha, která restartuje Apache, bude stále provedena, protože byla explicitně definována v příkazu.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Koneckonců

Značky Ansible jsou praktické a poskytují flexibilitu potřebnou při spouštění herních knih Ansible. Můžete provést nebo přeskočit provádění konkrétních úkolů v playbooku. To poskytuje lepší kontrolu nad vašimi playbooky během běhu playbooku.

Přečtěte si také :Jak používat Ansible Vault k zabezpečení citlivých dat


Linux
  1. Jak používám Ansible a anacron pro automatizaci

  2. Jak používat příkaz ethtool s příklady

  3. Jak vytvořit Ansible Playbook

  1. Jak používat příkaz IP v Linuxu s příklady

  2. Linux alias Command:Jak jej používat s příklady

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

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

  2. Jak používat proměnné v Ansible Playbook

  3. Jak používat smyčky v Ansible Playbook