Saya menggunakan Ansible, antara lain, untuk mendukung tujuan. Saya menjalankan ansible-playbook
dengan pengguna non-root (katakanlah itu user
) dan ssh as user
. Setelah itu, saya mengatur eskalasi hak istimewa untuk menjadi root
pada setiap server. Hingga saat ini, tidak ada masalah.
Untuk mengambil direktori jarak jauh, saya memiliki sesuatu yang setara dengan aturan berikut:
- synchronize:
mode: pull
delete: true
src: "{{ dir }}/"
dest: "{{ tank_base }}/{{ inventory_hostname }}/{{ dir }}/"
rsync_opts:
- "--exclude=tmp*"
- "--exclude=~*"
- "--exclude=*~"
- "--exclude=.gvfs/"
- "--exclude=.cache/"
tetapi untuk beberapa subdirektori ini memberikan kesalahan berikut (sedikit diedit untuk menyembunyikan data pribadi):
fatal: [server]: GAGAL! => {"diubah": false, "cmd": "/ usr / bin / rsync --delay-update -F --compress --delete-after --archive --rsh 'ssh -S none -o StrictHostKeyChecking = no '--exclude = tmp * --exclude = ~ * --exclude = * ~ --exclude = .gvfs / --exclude = .cache / --out-format =' <>% i% n% L ' \ "server: / var / backup / \" \ "/ var / tank / snapshot / server / backup / \" "," gagal ": true," msg ":" rsync: opendir \ "/ var / backup / subdir \ "gagal: Izin ditolak (13) \ nrsync kesalahan: beberapa file / attr tidak ditransfer (lihat kesalahan sebelumnya) (kode 23) di main.c (1650) [generator = 3.1.2] \ n", "rc" : 23}
Subdirektori yang gagal ( /var/backup/subdir
dalam kasus di atas) dimiliki oleh root:root
dan hanya dapat dibaca / ditulis oleh pemilik. Dugaan saya rsync
adalah mencoba untuk menarik file sebagai user
gantinya root
.
Bagaimana saya bisa menarik direktori-direktori itu tanpa membahayakan keamanan dan mungkin tanpa mengubah apa pun di sisi server? Bagaimanapun eskalasi hak istimewa sudah ada dan berfungsi.
sync
modul ini dapat menggali lalu lintasnya dengan menggunakan kembali koneksi yang sudah ada alih-alih membuat yang baru. Saya akan menggali lebih banyak padadelegate_to
rute ...