Cara yang sama ada modul lineinfile
untuk menambahkan satu baris dalam file, apakah ada cara untuk menambahkan beberapa baris?
Saya tidak ingin menggunakan templat karena Anda harus menyediakan seluruh file. Saya hanya ingin menambahkan sesuatu ke file yang sudah ada tanpa harus mengetahui file apa yang sudah berisi sehingga template bukan pilihan.
template
, tetapi menggunakanlineinfile
adalah antipattern . Ini juga merupakan tanda merah yang kuat bahwa Anda "tidak tahu apa yang ada di file", yang mengarah pada risiko besar kegagalan yang tidak diketahui.Jawaban:
Anda dapat menggunakan loop untuk melakukannya. Berikut ini contoh menggunakan
with_items
loop:sumber
msg: this module requires key=value arguments
. Contoh yang diberikan memang memiliki ini benar - Saya hanya tidak mengikuti contoh.Anda dapat mencoba menggunakan
blockinfile
sebagai gantinya.Anda dapat melakukan sesuatu seperti
sumber
blockinfile
modul telah berhasil keluar indah setiap kali saya telah memilih untuk menggunakannya. Aku terutama suka perilaku intuitifinsertafter
/insertbefore
pilihan.blockinfile
?Jika Anda perlu mengonfigurasi serangkaian garis properti = nilai unik, saya sarankan loop yang lebih ringkas. Sebagai contoh:
Menggunakan dikt seperti yang disarankan oleh Alix Axel dan menambahkan penghapusan otomatis dari entri komentar yang cocok,
sumber
Berikut ini adalah versi bebas dari solusi yang digunakan dengan with_items:
Untuk setiap item, jika item tersebut ada di fruits.txt tidak ada tindakan yang diambil.
Jika item tidak ada, maka akan ditambahkan ke akhir file.
Mudah marah.
sumber
Ini tidak ideal, tetapi Anda diizinkan untuk melakukan beberapa panggilan
lineinfile
. Dengan ituinsert_after
, Anda bisa mendapatkan hasil yang diinginkan:sumber
Saya dapat melakukannya dengan menggunakan
\n
parameter baris.Ini sangat berguna jika file tersebut dapat divalidasi, dan menambahkan satu baris menghasilkan file yang tidak valid.
Dalam kasus saya, saya menambahkan
AuthorizedKeysCommand
danAuthorizedKeysCommandUser
ke sshd_config , dengan perintah berikut:Menambahkan hanya satu opsi menghasilkan file yang gagal validasi.
sumber
Untuk menambahkan beberapa baris, Anda dapat menggunakan blockfile:
untuk menambahkan satu baris, Anda dapat menggunakan lininfile:
sumber
Untuk menambahkan beberapa baris, Anda dapat menggunakan
lineinfile
modul denganwith_items
menyertakan variabel divars
sini untuk membuatnya lebih mudah :)sumber