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
.