Apakah ada cara mudah untuk menggunakan folder yang penuh folder .j2 template ke kotak linux, menggunakan nama yang sama dengan template, tetapi tanpa ekstensi .j2, daripada menggunakan modul template untuk setiap file?
Saat ini saya memiliki daftar panjang:
- name: create x template
template:
src=files/x.conf.j2
dest=/tmp/x.conf
owner=root
group=root
mode=0755
notify:
- restart myService
with_fileglob
selalu beroperasi darifiles/
, Anda dapat membuka templat dengan../templates/mytemplate/*
. stackoverflow.com/a/27407566/1695680regex_replace
harus cocok di akhir baris\.j2$
untuk kasus di mana pola mungkin ada di dalam nama file.Michael DeHaan (pencipta Ansible) membuat posting di CoderWall yang berbicara tentang masalah yang sangat mirip. Anda dapat menyesuaikan dan memperluasnya sesuai dengan kebutuhan Anda (seperti izin dan kepemilikan). Bagian yang relevan dari pos ada di sini:
Ini dapat disederhanakan dengan menggunakan "
with_items
" dan satunotify
pernyataan. Jika ada tugas yang berubah, layanan akan diberitahukan dengan cara yang persis sama dengan yang harus dinyalakan kembali di akhir proses playbook.Perhatikan bahwa karena kita memiliki tugas yang mengambil lebih dari satu argumen unik, kita tidak hanya mengatakan "
item
" di baris 'template:
', tetapi juga menggunakanwith_items
variabel hash (kamus). Anda juga dapat menyimpannya sedikit lebih pendek dengan menggunakan daftar, jika diinginkan. Ini adalah preferensi gaya:Tentu saja kami juga bisa mendefinisikan daftar Anda berjalan di file lain, seperti file "
groupvars/webservers
" untuk mendefinisikan semua variabel yang diperlukan untukwebservers
grup, atau file YAML yang dimuat darivarsfiles
arahan " " di dalam buku pedoman. Lihat bagaimana ini dapat membersihkan jika kita melakukannya.sumber
template: src=templates/{{item}}.j2 dest=/etc/splat/{{item}}.conf
, dan kemudian menggunakan daftar item sederhana:with_items: - foo - bar
template: src={{item.src}} dest={{item.dest}}
(yaitu tidak${var}
tetapi bukan{{var}}
)Jawaban oleh Russel berhasil tetapi butuh perbaikan
Pertama-tama $ harus pergi karena itu salah regex di regex_replace. Kedua, semua file harus berada di direktori file daripada direktori templates
sumber
Saya menulis sebuah plugin pencarian filetree yang dapat membantu dengan tindakan pada pohon file.
Anda dapat berulang pada file dalam pohon file dan berdasarkan properti file melakukan tindakan (misalnya template atau salin). Karena jalur relatif dikembalikan, Anda dapat membuat ulang filetree pada sistem target dengan mudah.
Itu membuat playbook lebih mudah dibaca.
sumber
Perintah di bawah ini berfungsi bagi saya untuk melakukan pencarian rekursif untuk file j2 dalam template dan memindahkannya ke tujuan. Semoga ini membantu seseorang yang mencari salinan templat rekursif ke tujuan.
sumber
Ada kemungkinan untuk mengambil daftar file aktual dari direktori secara otomatis dan mengulanginya setelahnya.
sumber
print0
, sepertifind
, dan kemudian dibagi\u0000
.