GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Ansible:controlla se esiste un file

Introduzione

Ansible è uno strumento Infrastructure as Code che consente a un singolo nodo di controllo di monitorare e gestire un gran numero di host remoti (server).

Ansible utilizza i playbook per definire una serie di attività che gli host remoti devono eseguire, incluso il controllo dell'esistenza di file e cartelle.

Questo tutorial spiega come utilizzare stat modulo in Ansible per verificare se esistono file e cartelle su host remoti.

Prerequisiti

  • Accesso alla riga di comando/finestra del terminale
  • Ansible installato e configurato (consulta le nostre guide Installazione di Ansible su Windows e Installazione di Ansible su Ubuntu)

Verifica se un file esiste in Ansible

Il modo più semplice per verificare se esiste un file utilizzando Ansible è con stat modulo.

Lo scopo della stat il modulo consiste nel recuperare informazioni su file e cartelle e registrarli in un registro. Il modulo stat utilizza la seguente sintassi:

---
- name: Playbook name
  hosts: all

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

...

Dove:

  • stat: Dichiara che stiamo utilizzando il modulo stat.
  • path: Dichiara il percorso del file o della cartella che vogliamo controllare.
  • register: Fornisce il nome del registro in cui il modulo stat salva i dettagli di file e cartelle.

Uno dei valori registrati nel registro è exists . Combinando questo valore con il debug modulo ti consente di visualizzare un messaggio che indica se esiste un file o una cartella:

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

1. Nel playbook di esempio, la prima attività (Verifica se esiste un file ) utilizza il stat modulo per recuperare informazioni su test.txt file che si trova in /home/example_folder sull'host remoto. Registra questi fatti in un registro chiamato file_data .

2. La seconda attività (Segnala se esiste un file ) utilizza il debug modulo per visualizzare un messaggio. Controlla i file_data registrati e utilizza il exists valore come condizione per la visualizzazione di un messaggio. Se il exists il valore è vero , il modulo visualizza il messaggio 'Il file o la directory esiste' .

3. La terza attività (Segnala un file mancante ) fa lo stesso, tranne per il fatto che visualizza il messaggio "Il file o la directory non esiste" se il exists il valore è falso .

L'esecuzione del playbook fornisce il seguente output:

L'output ci dice che il file, in effetti, non esiste.

Se vuoi anche verificare che il file in questione sia un file normale e non una cartella, aggiungi il isreg valore al debug condizione del modulo:

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

Verifica se esiste una directory in Ansible

Usare Ansible per verificare se esiste una directory è esattamente come controllare se esiste un file. L'unica differenza è che usi isdir valore per confermare il percorso della directory specificata:

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

Esecuzione di attività Ansible a seconda dell'esistenza di file e cartelle

Ci sono momenti in cui desideri eseguire o saltare attività nel tuo playbook a seconda che esistano determinati file o cartelle.

Ad esempio, se hai un playbook progettato per creare un file su ogni host remoto, vuoi saltare quegli host in cui il file esiste già per evitare di creare duplicati.

Per fare ciò, utilizza i dettagli del file recuperati da stat modulo con il when argomento per creare condizioni per l'esecuzione delle attività:

---
- 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. Nel playbook sopra, la prima attività (Verifica dell'esistenza di un file ) utilizza il stat modulo per recuperare i dettagli del test.txt file che si trova in cartella_esempio sull'host remoto.

2. La seconda attività (Crea un file se non esiste già ) inizia controllando il exists valore nel registro. Se il valore è vero , l'attività viene saltata e il playbook termina. Se il valore è falso , l'attività viene eseguita e crea un nuovo file chiamato test.txt .


Ubuntu
  1. Gestire i segreti nei tuoi playbook Ansible

  2. Come controllare la sintassi di sudoers

  3. Esiste una riga per verificare la presenza di file?

  4. Comando per visualizzare un messaggio arbitrario se esiste un file particolare?

  5. Controlla se esiste un determinato tipo/estensione di file nella directory

Come verificare se esiste un file o una directory in Bash

Come verificare se un file o una directory esiste in Bash

Inventario Ansible e file di configurazione

Come creare ed eseguire file Ansible Playbook

Una breve introduzione ad Ansible Vault

Come verificare se esiste un file o una directory in Bash Shell