Ansible - Gestione dei file¶
In questo capitolo imparerai come gestire i file con Ansable.
Obiettivi: In questo capitolo imparerai come:
modificare il contenuto del file;
caricare i file ai server di destinazione;
recuperare i file dai server di destinazione.
ansible, moduli, files
Conoscenza:
Complessità:
Tempo di lettura: 20 minuti
A seconda delle vostre esigenze, dovrete utilizzare diversi moduli Ansible per modificare i file di configurazione del sistema.
modulo ini_file
¶
Quando si desidera modificare un file INI (sezione tra doppie []
e key=value
), il modo più semplice è usare il modulo ini_file
.
Nota
Ulteriori informazioni possono essere trovate qui.
Il modulo richiede:
- Il valore della sezione
- Il nome dell'opzione
- Il nuovo valore
Esempio di utilizzo:
- name: change value on inifile
community.general.ini_file:
dest: /path/to/file.ini
section: SECTIONNAME
option: OPTIONNAME
value: NEWVALUE
modulo lineinfile
¶
Per garantire che una riga sia presente in un file, o quando una singola riga in un file debba essere aggiunta o modificata, usa il modulo linefile
.
Nota
Maggiori informazioni possono essere trovate qui.
In questo caso, la riga da modificare in un file verrà trovata usando un regexp.
Ad esempio, per garantire che la linea che inizia con SELINUX=
nel file /etc/selinux/config
contenga il valore enforcing
:
- ansible.builtin.lineinfile:
path: /etc/selinux/config
regexp: '^SELINUX='
line: 'SELINUX=enforcing'
modulo copy
¶
Quando un file deve essere copiato dal server Ansible in uno o più host, è meglio utilizzare il modulo copy
.
Nota
Maggiori informazioni possono essere trovate qui.
Qui stiamo copiando myflile.conf
da una posizione all'altra:
- ansible.builtin.copy:
src: /data/ansible/sources/myfile.conf
dest: /etc/myfile.conf
owner: root
group: root
mode: 0644
modulo fetch
¶
Quando un file deve essere copiato da un server remoto al server locale, è meglio utilizzare il modulo fetch
.
Nota
Ulteriori informazioni possono essere trovate qui.
Questo modulo fa il contrario del modulo copy
:
- ansible.builtin.fetch:
src: /etc/myfile.conf
dest: /data/ansible/backup/myfile-{{ inventory_hostname }}.conf
flat: yes
modulo template
¶
Ansible e il suo modulo template
utilizzano il sistema di template Jinja2 (http://jinja.pocoo.org/docs/) per generare i file sugli host di destinazione.
Nota
Ulteriori informazioni possono essere trovate qui.
Per esempio:
- ansible.builtin.template:
src: /data/ansible/templates/monfichier.j2
dest: /etc/myfile.conf
owner: root
group: root
mode: 0644
È possibile aggiungere una fase di convalida se il servizio di destinazione lo permette (ad esempio apache con il comando apachectl -t
):
- template:
src: /data/ansible/templates/vhost.j2
dest: /etc/httpd/sites-available/vhost.conf
owner: root
group: root
mode: 0644
validate: '/usr/sbin/apachectl -t'
modulo get_url
¶
Per caricare file da un sito web o ftp a uno o più host, utilizzare il modulo get_url
:
- get_url:
url: http://site.com/archive.zip
dest: /tmp/archive.zip
mode: 0640
checksum: sha256:f772bd36185515581aa9a2e4b38fb97940ff28764900ba708e68286121770e9a
Fornendo un checksum del file, il file non verrà nuovamente scaricato se è già presente nella posizione di destinazione e il suo checksum corrisponde al valore fornito.