Adakah cara untuk memaksa boneka melakukan hal-hal tertentu terlebih dahulu? Sebagai contoh, saya memerlukannya untuk menginstal RPM di semua server untuk menambahkan repositori yum (Komunitas IUS) sebelum saya menginstal salah satu paket.
26
Jawaban:
Jika Anda ingin memastikan repositori diinstal pada semua server Anda maka saya akan menyarankan sesuatu seperti ini
Lalu, untuk setiap simpul yang memanjang
base
bisa Anda katakanIni akan memastikan itu
bar
tidak akan diinstal kecuali repositori IUS didefinisikansumber
Meskipun tahapan dapat menangani hal ini dan juga dependensi yum repo tertentu, lebih baik menyatakan hubungan secara umum.
Hanya menempatkan
Yumrepo <| |> -> Package <| provider != 'rpm' |>
di manifest boneka Anda.Ini membuatnya agar semua tipe yumrepo akan diproses sebelum paket apa pun yang tidak memiliki 'rpm' sebagai penyedianya. Pengecualian yang terakhir adalah agar saya dapat menggunakan paket RPM (misalnya) rilis-epel untuk membantu menginstal yum repo.
sumber
(Saya menemukan pertanyaan ini setelah saya menjawab hampir sama .. jadi saya pikir jawaban saya juga berlaku di sini dan layak untuk diulangi (lebih aman untuk memiliki jawaban di dua tempat ..)
Sejauh yang saya mengerti, ini adalah tahapan apa - mereka membiarkan Anda mengelompokkan dan memesan eksekusi kelas. Saya menggunakan "tahapan" untuk memperbarui dan mengkonfigurasi APT di server Debian, yang seharusnya sangat mirip dengan apa yang akan Anda lakukan dengan YUM.
Pertama-tama, Anda mendeklarasikan tahap "yum" di tingkat atas (di atas "node"), sehingga kelas-kelas dalam tahap "yum" akan dieksekusi sebelum yang "utama":
Kemudian, Anda menetapkan panggung untuk kelas-kelas. Anda dapat melakukan ini dengan benar dalam definisi simpul Anda:
sumber
Anda bisa menggunakan Tag . Ini akan memungkinkan Anda untuk menandai pemasang repo dengan
firstrun
atau sesuatu,lalu lari
dan itu hanya akan menjalankan modul / pernyataan yang cocok dengan tag.
sumber
Hal utama yang perlu Anda gunakan adalah kata kunci yang diperlukan - "Evaluasi satu atau lebih kelas, tambahkan kelas yang diperlukan sebagai ketergantungan."
Contoh menggunakan repositori apt bisa berupa:
(Diadaptasi dari contoh bootstrap boneka ini ).
Jadi Anda dapat melihat bagaimana setiap tahap mengharuskan yang sebelumnya dilakukan terlebih dahulu. Saya akan meninggalkan Anda untuk mengetahui cara menerapkan ini ke yum karena saya tidak terbiasa dengan tempat menyimpan file itu.
sumber
Wayang membaca konfigurasi dari atas ke bawah, jadi jika Anda memasukkan kelas dengan yum repo pertama di kelas itu, repo ini akan ditambahkan sebelum yang lain.
Jika Anda menggunakan pengaturan yang diperlukan pada paket, Anda akan memastikan bahwa jenis sumber daya yang diperlukan ada sebelum menambahkan paket, seperti:
Kode di atas akan menambah repo sebelum menambahkan paket.
sumber
require
kata kunci, yang telah Anda lakukan di bagian kedua.Sesuatu seperti ini bekerja untuk saya:
Saya memasukkan sesuatu seperti ini di mysite.pp. Dengan cara ini, modul boneka Anda, bebas dari referensi ke repositori yum.
sumber