Pada level permainan, kami harus serial: 1
mengizinkan kami menjalankan seluruh permainan satu host pada satu waktu. Tetapi saya belum menemukan cara sederhana untuk melakukan ini pada satu tugas. Ini sangat relevan, jika tugas tersebut tidak melakukan penguncian yang tepat (untuk alasan apa pun).
Satu jawaban yang jelas adalah menempatkan tugas dalam permainannya sendiri. Tapi itu tidak membantu dengan peran. (Harus serial: 1
bermain menggunakan peran itu tidak terlalu intuitif.)
serial: 1
ayo kita atur setidaknya pada permainan. Tapi saya hanya ingin mengaturnya di subtitle dari sebuah drama (apa nama yang benar itu. Saya pikir, itu adalah "tugas", tetapi komentar di atas tampaknya tidak setuju).serial: 1
melakukan sesuatu yang sama sekali berbeda: itu seperti menjalankan playbook untuk setiap host secara bergantian, menunggu penyelesaian playbook lengkap sebelum pindah ke host berikutnya.forks=1
berarti menjalankan tugas pertama dalam permainan pada satu host sebelum menjalankan tugas yang sama pada host berikutnya, sehingga tugas pertama akan dijalankan untuk setiap host sebelum tugas berikutnya disentuh. Jadi, Andaforks=1
hanya ingin sekali bermain; sayangnya itu saat ini tidak memungkinkan.Ada solusi untuk masalah ini - seseorang dapat meneruskan daftar host (atau grup) ke
with_items
, dan kemudian digunakandelegate_to
dengan daftar ini. Tugas ini akan dijalankan oleh tuan rumah oleh tuan rumah.Sebagai contoh:
sumber
run_once: true
ada di sana, cobalah mengeluarkannya. Anda tidak akan menyukai apa yang terjadi. (begitu banyak berjalan berulang-ulangJika Anda menjalankannya pada satu mesin, maka masalah kunci eksklusif muncul untuk lebih dari satu host. Jadi, Anda harus mengeksekusi satu per satu untuk semua host. Untuk ini, Anda harus
--forks=1
menyetel saat memanggil perintah playbook yang dimungkinkan. Contoh: diansible-playbook webserver.yml --forks=1
mana webserver.yml memiliki app01 dan app02 di dalam Anda[webserver]
sumber
Pikirkan apa yang Anda inginkan
run_once: true
sumber
Untuk perintah yang dapat dijalankan secara lokal, gunakan satu loop untuk beralih ke semua host dalam permainan. Ini HANYA berfungsi jika perintah dapat dijalankan secara lokal. Anda juga bisa menjalankan perintah dengan ssh di dalamnya ke mesin jarak jauh satu per satu dengan cara ini, jika kunci sudah diatur, tetapi menjadi sulit ketika berbicara tentang eskalasi.
MISALNYA:
sumber
inventory_hostname
, jika tidak, loop tidak masuk akal.