Introduzione
Ansible è uno strumento Infrastructure as Code che consente di utilizzare un'unica posizione centrale (nodo di controllo Ansible) per monitorare e controllare un gran numero di server remoti (host).
Usa Ansible per impostare una serie di attività che gli host remoti possono eseguire, inclusa la creazione di nuovi file e directory.
Questo tutorial illustra diversi modi in cui puoi utilizzare Ansible per creare file su host remoti.
Prerequisiti
- Un sistema che esegue Ubuntu 20.04
- Accesso alla riga di comando/finestra del terminale
- Ansible installato e configurato (consulta le nostre guide su Installazione di Ansible su Windows o Installazione di Ansible su Ubuntu)
Creazione di un Playbook Ansible
I playbook Ansible sono elenchi di attività che vuoi che i tuoi host remoti eseguano. Possono essere salvati e riutilizzati, consentendoti di automatizzare processi complessi.
Ogni comando che desideri inviare a un host remoto, inclusa la creazione di file e cartelle, è un'attività che devi includere in un playbook. Una volta eseguito un playbook, il tuo host remoto esegue tutte le attività in esso definite.
Per creare un playbook Ansible, usa il comando:
sudo nano /etc/ansible/playbook.yaml
Questo comando crea un file .yaml chiamato 'playbook' nella cartella di installazione di Ansible. Utilizzeremo le attività in playbook.yaml file per creare file e cartelle sui nostri host remoti.
L'utilizzo della funzione di dry run di Ansible consente agli utenti di eseguire un playbook senza apportare modifiche ai server. Utilizza la modalità di controllo integrata per verificare la presenza di errori in un playbook prima dell'esecuzione.
Creazione di un file vuoto
Il modo più veloce per creare un file vuoto è utilizzare il file
di Ansible modulo.
Aggiungi la seguente configurazione al tuo playbook Ansible:
---
- hosts: all
tasks:
- name: Creating an empty file
file:
path: "/your path"
state: touch
Il file sopra ha i seguenti componenti:
hosts
: Definisce su quali host remoti dal tuo file di inventario Ansible desideri eseguire l'attività. Tutto significa che ogni host riceve il comando, ma puoi anche inserire il nome di una categoria host o di un singolo host.tasks
: Annuncia che l'host remoto deve eseguire un'attività.name
:consente di definire un nome per l'attività. Il nome è solo di riferimento e non ha alcuna influenza sull'attività stessa.file
:attiva il modulo file di Ansible per creare un nuovo file.path
:definisce il percorso per il nuovo file sul disco rigido dell'host remoto.state
:Simile al comando touch nel terminale Ubuntu, inserendotouch
crea un file vuoto nella posizione che hai scelto.
Per eseguire il playbook, usa:
ansible-playbook /etc/ansible/playbook.yaml
Creazione di un file con contenuto
Se desideri creare un nuovo file con contenuto, puoi prima utilizzare il metodo sopra per creare un file vuoto, quindi utilizzare il blockinfile
o lineinfile
modulo per inserire contenuti.
Un modo più rapido consiste nell'usare la copy
modulo. Anche se questo modulo viene utilizzato per copiare un file dal nodo di controllo all'host remoto, puoi includere il content
parametro per aggiungere istantaneamente contenuto a un file vuoto.
Usa questa configurazione nel tuo playbook:
---
- hosts: all
tasks:
- name: Creating a file with content
copy:
dest: "/your path"
content: |
line 01
line 02
Nel file abbiamo usato:
copy
:attiva il modulo di copia di Ansible.dest
:Definisce il percorso per il tuo nuovo file.content
:Questo parametro aggiungeràline 01
eline 02
come contenuto del nuovo file.
Creazione di più file
Puoi creare più file utilizzando una singola attività in un playbook Ansible.
Utilizzare la configurazione seguente per creare più file:
---
- hosts: all
tasks:
- name: Create multiple files
file:
path: "{{ item }}"
state: touch
with_items:
- test01.txt
- test02.txt
- test03.txt
- test04.txt
Nel file di configurazione sopra, abbiamo definito:
path
:Il"{{ item }}"
value significa che Ansible creerà un percorso separato per ogni rispettivo file. Per impostazione predefinita, questi file si trovano nella cartella Home dell'host remoto. Definisci un percorso diverso utilizzando/your_folder_path/"{{ item }}"
.with_items
:questo parametro viene utilizzato per avviare un elenco di file da creare. Elenca tutti i file che vuoi. Nel nostro esempio, abbiamo creato un elenco di quattro file intitolato test .
Creazione di una directory
La creazione di una nuova directory utilizza la stessa configurazione di quando si crea un file vuoto. L'unica differenza è che sotto lo state
parametro, si entra nella directory
come valore:
---
- hosts: all
tasks:
- name: Creating a new directory
file:
path: "/your path"
state: directory
Rimozione dei file
I playbook Ansible possono anche rimuovere i file esistenti. Per fare ciò, imposta lo state
parametro su absent
:
---
- hosts: all
tasks:
- name: Removing a file
file:
path: "/your path"
state: absent
Se il file è già stato rimosso, questo comando non fa nulla.
Impostazione delle autorizzazioni dei file
Con tutti gli esempi precedenti, puoi anche impostare l'autorizzazione per nuovi file e cartelle. Per questo, devi usare la mode
parametro.
Ci sono due modi per farlo:
- Utilizzo del formato in modalità ottale: Puoi utilizzare numeri ottali, come 0644 o 0777. Non dimenticare lo 0 iniziale, poiché ometterlo può portare a risultati imprevisti.
- Utilizzo del formato in modalità simbolica: Puoi utilizzare valori come
u=rwx
,g=rx
oo=rx
, doveu
sta per proprietario ,g
sta per gruppo eo
sta per altri . Le autorizzazioni sono definite comer
per leggere ,w
per scrivi ex
per esegui .
Ad esempio, puoi utilizzare il valore ottale 0755, mentre definisci il proprietario:
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: 0755
owner: test
Puoi anche usare l'equivalente simbolico di 0755:
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: u=rwx,g=rx,o=rx
owner: test