GNU/Linux >> Znalost Linux >  >> Ubuntu

Ansible:Zkontrolujte, zda soubor existuje

Úvod

Ansible je nástroj Infrastructure as Code, který umožňuje jedinému řídicímu uzlu monitorovat a spravovat velké množství vzdálených hostitelů (serverů).

Ansible používá playbooky k definování různých úkolů pro vzdálené hostitele, včetně kontroly, zda existují soubory a složky.

Tento výukový program popisuje, jak používat stat modul v Ansible zkontrolovat, zda existují soubory a složky na vzdálených hostitelích.

Předpoklady

  • Přístup do příkazového řádku / okna terminálu
  • Ansible nainstalován a nakonfigurován (viz naše průvodce instalací Ansible na Windows a instalací Ansible na Ubuntu)

Kontrola, zda soubor existuje v Ansible

Nejjednodušší způsob, jak zkontrolovat, zda soubor existuje pomocí Ansible, je pomocí stat modul.

Účel stat Modul je vyhledávat fakta o souborech a složkách a zaznamenávat je do registru. Stat modul používá následující syntaxi:

---
- name: Playbook name
  hosts: all

  tasks:
  - name: Task name
    stat:
      path: [path to the file or directory you want to check]
    register: register_name

...

Kde:

  • stat: Prohlašuje, že používáme modul stat.
  • path: Deklaruje cestu k souboru nebo složce, kterou chceme zkontrolovat.
  • register: Poskytuje název registru, kam modul statistik ukládá podrobnosti o souborech a složkách.

Jedna z hodnot zaznamenaných v registru je exists . Sloučení této hodnoty s debug modul umožňuje zobrazit zprávu s podrobnostmi o tom, zda soubor nebo složka existuje:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists

1. V ukázkové příručce je první úkol (Kontrola, zda soubor existuje ) používá stat modul k načtení faktů o test.txt soubor umístěný v /home/example_folder na vzdáleném hostiteli. Tyto skutečnosti zaznamenává do registru s názvem file_data .

2. Druhý úkol (Nahlásit, zda soubor existuje ) používá debug modul pro zobrazení zprávy. Zkontroluje file_data zaregistrovat a používá exists hodnotu jako podmínku pro zobrazení zprávy. Pokud exists hodnota je pravda , modul zobrazí zprávu ‚Soubor nebo adresář existuje‘ .

3. Třetí úkol (Nahlásit chybějící soubor ) udělá totéž, pouze se zobrazí zpráva „Soubor nebo adresář neexistuje“ pokud exists hodnota je false .

Spuštění playbooku poskytuje následující výstup:

Výstup nám říká, že soubor ve skutečnosti neexistuje.

Chcete-li také zkontrolovat, zda se jedná o běžný soubor a nikoli o složku, přidejte isreg hodnotu do debug stav modulu:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists and register_name.stat.isreg

Kontrola, zda v Ansible existuje adresář

Použití Ansible ke kontrole, zda adresář existuje, je úplně stejné jako ke kontrole, zda existuje soubor. Jediný rozdíl je v tom, že používáte isdir hodnotu pro potvrzení cesty k zadanému adresáři:

  - name: Task name
    debug:
      msg: "The file or directory exists"
    when: register_name.stat.exists and register_name.stat.isdir

Spouštění Ansible Tasks v závislosti na tom, zda existují soubory a složky

Jsou chvíle, kdy chcete spustit nebo přeskočit úkoly v playbooku v závislosti na tom, zda existují určité soubory nebo složky.

Například, pokud máte playbook navržený tak, aby vytvořil soubor na každém vzdáleném hostiteli, chcete přeskočit ty hostitele, kde soubor již existuje, abyste se vyhnuli vytváření duplikátů.

Chcete-li to provést, použijte podrobnosti souboru načtené stat modul s when argument pro vytvoření podmínek pro spouštění úloh:

---
- name: Playbook name
  hosts: all

  tasks:
  - name: Task name
    stat:
      path: [path to the file or directory you want to check]
    register: register_name

    - name: Task name 2
      file:
        path: [path to the file you want to create]
        state: touch
      when: not register_name.stat.exists

...

1. Ve výše uvedené příručce je první úkol (Kontrola, zda soubor existuje ) používá stat modulu k načtení podrobností test.txt soubor umístěný ve example_folder na vzdáleném hostiteli.

2. Druhý úkol (Vytvořte soubor, pokud ještě neexistuje ) začíná kontrolou exists hodnotu v registru. Pokud je hodnota true , úkol se přeskočí a playbook skončí. Pokud je hodnota false , úloha se provede a vytvoří nový soubor s názvem test.txt .


Ubuntu
  1. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  2. zkontrolujte, zda soubor existuje na vzdáleném hostiteli pomocí ssh

  3. Možnost odkomentování řádku v souboru

  1. Jak zkontrolovat syntaxi sudoers

  2. Jak nainstalovat Ansible na Linux Mint 20

  3. Jak mohu použít sudo ke kontrole, zda soubor existuje?

  1. Jak zkontrolovat průběh běhu Cp?

  2. Existuje jedna vložka ke kontrole souboru?

  3. Příkaz k zobrazení libovolné zprávy, pokud existuje konkrétní soubor?