Out of the Box, Ansible ha molti strumenti e funzionalità. Uno di questi è il modulo lineinfile. Questo modulo consente di gestire una singola riga all'interno di un file situato su un host remoto.
Supporta funzionalità come la sostituzione di contenuti su un file, l'aggiornamento dei contenuti all'interno di una riga, l'aggiunta di contenuti su una riga e altro ancora.
Questa guida illustrerà come utilizzare il modulo ANSIBE LineinFile per gestire i file su host remoti.
Requisiti
Per seguire il concetto di questo tutorial, assicurati di avere i seguenti requisiti di base:
Confermare se esiste una voce specifica
Per garantire che una voce specifica sia presente in un file, possiamo utilizzare il modulo lineinfile e impostare le basi su.
Considera l'esempio di playbook mostrato di seguito:
---
- Host: tutto
Gather_Facts: Sì
Diventa: sì
compiti:
- Nome: controlla se /etc /host contiene 127.0.0.1 "
lineinfile:
Path: "/etc/host"
Stato: presente
Linea: "127.0.0.1 "
check_mode: sì
Registro: fuori
L'esempio sopra controllerà se la voce esiste nel file specificato e aggiungerà se non esiste.
Crea un file e aggiungi una nuova riga
Possiamo utilizzare il modulo lineinfile per creare un file e aggiungere una nuova riga al file creato.
Considera l'esempio di playbook mostrato di seguito:
---
- Host: tutto
Gather_Facts: no
compiti:
- Nome: Crea file e aggiungi riga
lineinfile:
dest:/home/ubuntu/esempio.conf
riga: questa è una nuova voce nel file
Stato: presente
Crea: vero
Nell'esempio di playbook sopra, utilizziamo il parametro DEST per specificare il percorso del file.
Successivamente, utilizziamo il parametro della riga per impostare la riga da aggiungere al file. Lo usiamo insieme allo stato: parametro presenta.
Infine, impostiamo il parametro Crea su True, che dice ad Ansible di creare il file se esiste.
Se si esegue due volte il playbook, non eseguirà alcuna azione poiché esistono sia il file che la riga specificata.
Aggiungi una riga prima/dopo una voce
Per aggiungere una riga prima o dopo una particolare voce, è possibile utilizzare INSERTAFTER o INSERTBEFERE PARMETRI.
Dai un'occhiata all'esempio mostrato di seguito:
---
- Host: tutto
Gather_Facts: no
compiti:
- Nome: Aggiungi riga prima/dopo
lineinfile:
Path:/etc/apache2/apache2.conf
Regex: '^ServerRoot'
InsertaFter: '^#ServerRoot'
Linea: ServerRoot "/etc/apache2"
Dopo la riga commentata, il modulo lineinfile aggiungerà la voce ServerRoot "/etc/apache2".
Eliminazione di una linea
Per rimuovere una voce da un file, impostare lo stato su come mostrato nel playbook di esempio seguente:
---
- Host: tutto
Gather_Facts: no
compiti:
- Nome: Elimina una riga
lineinfile:
Path:/etc/apache2/apache2.conf
regex: '^#serverroot'
Stato: assente
L'esempio sopra utilizza una semplice espressione regolare per abbinare la riga a partire da #ServerRoot.
Commentando una riga
Per commentare una riga, usa il parametro Ansible LineinFile BackRefs. Dai un'occhiata al playbook di esempio mostrato di seguito:
---
- Host: tutto
Gather_Facts: no
compiti:
- Nome: Elimina una riga
lineinfile:
Path:/etc/apache2/apache2.conf
Linea 1'
Regex: '^#ascolta 8080'
BackRefs: Sì
Nell'esempio sopra, utilizziamo un'espressione regolare per abbinare la linea che desideriamo commentare.
Quindi utilizziamo il contenuto della riga di abbinamento e aggiungiamo un carattere di commento.
File di backup prima di cambiare
È bene assicurarti di eseguire il backup di una copia dei file prima di modificarli per facilitare il ripristino dei file in caso di errori.
Per eseguire il backup di un file utilizzando il modulo lineinfile, possiamo impostare l'opzione di backup su TRUE.
Considera il playbook di esempio qui sotto:
---
- Host: tutto
Gather_Facts: no
compiti:
- Nome: Elimina una riga
lineinfile:
Path:/etc/apache2/apache2.conf
regex: '^#serverroot'
Stato: assente
Backup: Sì
Conclusione
Il modulo ANSIBE LineinFile è utile quando si modificano i file di configurazione su host remoti utilizzando ANSible PlayBooks.
Grazie per aver letto!