Di buku pedoman Ansible saya berkali-kali saya perlu membuat file di sana
- name: Copy file
template:
src: code.conf.j2
dest: "{{project_root}}/conf/code.conf"
sekarang banyak kali conf
dir tidak ada. Kemudian saya harus membuat lebih banyak tugas untuk membuat dir itu terlebih dahulu.
Apakah ada cara mudah untuk membuat dir otomatis jika tidak ada dengan beberapa opsi
Jawaban:
Sekarang, ini satu-satunya cara
sumber
recurse=yes
kefile
panggilan untuk mendapatkanmkdir -p
perilaku jenisdirname
untuk mendapatkan direktori yang berisi file.Untuk memastikan kesuksesan dengan jalur lengkap, gunakan recurse = yes
sumber
recurse=yes
hanya menerapkan izin secara rekursif. Namun, dokumentasi menyatakan bahwa ini terjadi secara otomatis sejak v1.7, jadirecurse
mungkin sudah usang.Jika Anda menjalankan Ansible> = 2.0, ada juga filter dirname yang dapat Anda gunakan untuk mengekstrak bagian direktori dari sebuah jalur. Dengan begitu Anda bisa menggunakan satu variabel untuk menampung seluruh jalur untuk memastikan kedua tugas tidak pernah keluar dari sinkronisasi.
Jadi misalnya jika Anda memiliki pedoman dengan
dest_path
ditentukan dalam variabel seperti ini Anda dapat menggunakan kembali variabel yang sama:sumber
AFAIK, satu-satunya cara ini bisa dilakukan adalah dengan menggunakan
state=directory
opsi. Meskipuntemplate
modul mendukung sebagian besarcopy
opsi, yang pada gilirannya mendukung sebagian besarfile
opsi, Anda tidak dapat menggunakan sesuatu yang serupastate=directory
dengannya. Selain itu, ini akan sangat membingungkan (apakah itu berarti itu{{project_root}}/conf/code.conf
adalah direktori? Atau apakah itu artinya{{project_root}}/conf/
harus dibuat terlebih dahulu.Jadi saya tidak berpikir ini mungkin sekarang tanpa menambahkan
file
tugas sebelumnya .sumber
Menurut dokumen terbaru ketika status disetel menjadi direktori, Anda tidak perlu menggunakan parameter recurse untuk membuat direktori induk, modul file akan mengurusnya.
ini cukup ongkos untuk membuat direktori induk data yang dan uji dengan foo
silakan lihat deskripsi parameter - " state " http://docs.ansible.com/ansible/latest/modules/file_module.html
sumber
Anda dapat membuat folder menggunakan berikut ini tergantung pada versi yang memungkinkan.
Versi 2 <
Versi lama:
Lihat - http://docs.ansible.com/ansible/latest/file_module.html
sumber
modul copy membuat direktori jika tidak ada. Dalam kasus ini, direktori telah dibuat diselesaikan.conf.d
sumber