Sto usando Ansible, tra le altre cose, per scopi di backup. io corro ansible-playbook
con un non root utente (diciamo che lo è user
) e ssh come user
. Dopo di ciò, ho impostato l'escalation dei privilegi per diventare root
su ogni server. Fino ad ora, nessun problema.
Per recuperare una directory remota ho qualcosa di equivalente alla seguente regola:
- synchronize:
mode: pull
delete: true
src: "{{ dir }}/"
dest: "{{ tank_base }}/{{ inventory_hostname }}/{{ dir }}/"
rsync_opts:
- "--exclude=tmp*"
- "--exclude=~*"
- "--exclude=*~"
- "--exclude=.gvfs/"
- "--exclude=.cache/"
ma per alcune sottodirectory fornisce il seguente errore (leggermente modificato per nascondere i dati personali):
fatale: [server]: FAILED! = & Gt; {"changed": false, "cmd": "/ usr / bin / rsync --delay-updates -F --compress --delete-after --archive --rsh 'ssh -S none -o StrictHostKeyChecking = no' --exclude = tmp * --exclude = ~ * --exclude = * ~ --exclude = .gvfs / --exclude = .cache / --out-format = '& lt; & gt;% i% n% L' \ "server: / var / backup / \" \ "/ var / tank / snapshot / server / backup / \" "," failed ": true," msg ":" rsync: opendir \ "/ var / backup / sottodir \ "fallito: Permesso negato (13) Errore \ nrsync: alcuni file / attrs non sono stati trasferiti (vedi errori precedenti) (codice 23) su main.c (1650) [generator = 3.1.2] \ n", "rc" : 23}
La sottodirectory che fallisce ( /var/backup/subdir
nel caso precedente) è di proprietà di root:root
ed è leggibile / scrivibile solo dal proprietario. La mia ipotesi è rsync
sta cercando di tirare i file come user
invece di root
.
Come posso tirare quelle directory senza compromettere la sicurezza e possibilmente senza modificare nulla sul lato server? Dopo tutto l'escalation dei privilegi è già in atto e funzionante.
sync
il modulo potrebbe eseguire il tunneling del traffico riutilizzando la connessione già stabilita invece di crearne una nuova. Scaverò di più suldelegate_to
itinerario...