Bagaimana cara menyalin lebih dari satu file ke node jarak jauh oleh Ansible dalam tugas?
Saya sudah mencoba menduplikasi baris modul salin dalam tugas saya untuk menentukan file tetapi itu hanya menyalin file pertama.
Anda dapat menggunakan with_fileglob
loop untuk ini:
- copy:
src: "{{ item }}"
dest: /etc/fooapp/
owner: root
mode: 600
with_fileglob:
- /playbooks/files/fooapp/*
/roles/db/files
tetapi saya tidak bisa membuatnya berfungsi dengan metode ini. Saya sudah mencobawith_fileglob: - /roles/db/file/*
tetapi tidak akan baik-baik saja jalannyasumber
dest
himpunan sebagai variabel?{ src: 'containerizers', dest: {{ containerizers }} }
.{ src: '{{ source.var }}', dest: '{{ dest.var }}' }
Anda dapat menggunakan with_together untuk tujuan ini:
sumber
Jika Anda membutuhkan lebih dari satu lokasi, Anda memerlukan lebih dari satu tugas. Satu tugas salin hanya dapat menyalin dari satu lokasi (termasuk beberapa file) ke lokasi lain di node.
sumber
Karena Ansible 2.5,
with_*
konstruksi tidak digunakan lagi , danloop
sintaks harus digunakan. Contoh praktis sederhana:sumber
sumber
find
modul hanya bekerja untuk kemungkinan 2.x tetapi tidak untuk kemungkinan 1.xstdout_lines
nilai kembali tetapi tidak berlaku untukfind
modul. Itu hanya memilikifiles
,examined
danmatched
sebagai nilai kembali. Harapan yang membantu orang lainfind
tampaknya hanya melihat sistem jarak jauh, tidak memungkinkan untuk mengambil apa pun dari node pengelola. Jawaban ini, menggunakanwith_fileglob
, tampaknya lebih cocok: stackoverflow.com/a/42290160/272387 , stackoverflow.com/a/36720342/272387 .Atau Anda dapat menggunakan with_items:
sumber
sumber
Anda dapat melakukan perulangan melalui variabel dengan daftar direktori:
sumber
Gunakan kode sumber berikut untuk menyalin beberapa file di komputer klien Anda.
catatan:
Jika Anda melewati beberapa jalur dengan menggunakan variabel kemudian
src: "/ root / {{item}}"
Jika Anda melewati jalur dengan menggunakan variabel untuk item yang berbeda maka
src: "/ root / {{item.source_path}}"
sumber
copy
modul adalah alat yang salah untuk menyalin banyak file dan / atau struktur direktori, gunakansynchronize
modul sebagai gantinya yang digunakanrsync
sebagai backend. Pikiran Anda, itu perlursync
diinstal pada pengontrol dan host target. Ini sangat kuat, periksa dokumentasi yang memungkinkan .Contoh - salin file dari
build
direktori (dengan subdirektori) pengontrol ke/var/www/html
direktori pada host target:sumber