Sistem manajemen konfigurasi (CM) yang lebih mapan seperti Puppet dan Chef menggunakan pendekatan berbasis tarikan: klien melakukan jajak pendapat master terpusat secara berkala untuk pembaruan. Beberapa dari mereka menawarkan pendekatan tanpa master juga (jadi, berbasis push), tetapi menyatakan bahwa itu 'tidak untuk produksi' (Saltstack) atau 'kurang scalable' (Wayang). Satu-satunya sistem yang saya tahu yang berbasis push dari awal adalah runner-up Ansible.
Apa keuntungan skalabilitas spesifik dari sistem berbasis tarikan? Mengapa lebih mudah menambahkan lebih banyak master tarik daripada agen push?
Misalnya, agiletesting.blogspot.nl menulis:
dalam sistem 'tarik', klien menghubungi server secara independen satu sama lain, sehingga sistem secara keseluruhan lebih terukur daripada sistem 'dorong'
Di sisi lain, Rackspace menunjukkan bahwa mereka dapat menangani sistem 15K dengan model berbasis push.
infastructures.org menulis:
Kami bersumpah dengan metodologi tarikan untuk memelihara infrastruktur, menggunakan alat seperti SUP, CVSup, server rsync, atau cfengine. Daripada mendorong perubahan ke klien, setiap mesin klien individu harus bertanggung jawab untuk polling server emas saat boot, dan secara berkala setelahnya, untuk mempertahankan level revnya sendiri. Sebelum mengadopsi sudut pandang ini, kami mengembangkan skrip berbasis push yang luas berdasarkan ssh, rsh, rcp, dan rdist. Masalah yang kami temukan dengan r-command (atau ssh) adalah ini: Ketika Anda menjalankan skrip berbasis r-command untuk mendorong perubahan ke mesin target Anda, kemungkinannya adalah jika Anda memiliki lebih dari 30 host target, salah satunya akan turun pada waktu tertentu. Mempertahankan daftar mesin yang ditugaskan menjadi mimpi buruk. Dalam proses penulisan kode untuk memperbaiki hal ini, Anda akan berakhir dengan kode pembungkus yang rumit untuk menangani: timeout dari host yang mati; logging dan mencoba lagi host yang mati; forking dan menjalankan pekerjaan paralel untuk mencoba memukul banyak host dalam jumlah waktu yang wajar; dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. forking dan menjalankan pekerjaan paralel untuk mencoba memukul banyak host dalam jumlah waktu yang wajar; dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. forking dan menjalankan pekerjaan paralel untuk mencoba memukul banyak host dalam jumlah waktu yang wajar; dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. dan akhirnya mendeteksi dan mencegah kasus menggunakan semua soket TCP yang tersedia pada mesin sumber dengan semua sesi rsh keluar. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. Maka Anda masih memiliki masalah untuk mendapatkan apa pun yang baru saja Anda lakukan ke dalam gambar instalasi untuk semua host baru yang akan diinstal di masa depan, serta mengulanginya untuk host yang mati dan harus dibangun kembali besok. Setelah masalah yang kami alami untuk menerapkan replikasi berbasis r-command, kami menemukan itu tidak layak. Kami tidak berencana mengelola infrastruktur dengan r-command lagi, atau dengan mekanisme push lainnya. Mereka tidak skala serta metode berbasis tarik. atau dengan mekanisme dorong lainnya dalam hal ini. Mereka tidak skala serta metode berbasis tarik. atau dengan mekanisme dorong lainnya dalam hal ini. Mereka tidak skala serta metode berbasis tarik.
Bukankah itu masalah implementasi, bukan masalah arsitektur? Mengapa lebih sulit untuk menulis push client yang berulir daripada server tarik berulir?
ansible-pull
.Jawaban:
Masalah dengan sistem berbasis push adalah Anda harus memiliki model lengkap dari seluruh arsitektur pada node push pusat. Anda tidak dapat mendorong ke mesin yang tidak Anda ketahui.
Jelas dapat bekerja, tetapi butuh banyak pekerjaan untuk tetap sinkron.
Menggunakan hal-hal seperti Mcollective, Anda dapat mengubah Wayang dan CM lainnya menjadi sistem berbasis push. Secara umum, mudah untuk mengubah sistem tarik menjadi sistem berbasis push, tetapi tidak selalu mudah untuk sebaliknya.
Ada juga pertanyaan tentang politik organisasi. Sistem berbasis push menempatkan semua tangan kontrol admin pusat. Sangat sulit untuk mengelola kompleksitas dengan cara itu. Saya pikir masalah penskalaan adalah herring merah, baik skala pendekatan jika Anda hanya melihat jumlah klien. Dalam banyak hal, dorongan lebih mudah untuk diukur. Namun, konfigurasi dinamis kurang lebih menyiratkan bahwa Anda memiliki setidaknya versi tarik dari pendaftaran klien.
Pada akhirnya, ini tentang sistem mana yang cocok dengan alur kerja dan kepemilikan dalam organisasi Anda. Sebagai aturan umum, sistem tarikan lebih fleksibel.
sumber
Dalam hal ini menarik bagi siapa pun, saya kira minimal saya bisa memberikan laporan pengalaman pengguna setelah menggunakan pertama saya kemampuan Ansible's out of the box push dalam konteks manajemen patch pengaturan multi-host pengaturan sistem mission-critical di awan Amazon. Untuk memahami prasangka atau bias saya, saya harus menjelaskan bahwa saya memiliki preferensi untuk Ruby di tingkat scripting otomatisasi dan telah menyiapkan proyek untuk menggunakan konfigurasi boneka master-agent per-proyek-Vpc di masa lalu. Jadi pengalaman saya memungkiri prasangka masa lalu, jika ada.
Pengalaman saya baru-baru ini sangat menguntungkan untuk mendorong dinamis ke real yang berubah dari puluhan ke ratusan server yang dapat meningkatkan atau menurunkan, diakhiri dan disegarkan. Dalam situasi saya, perintah Ad hoc 1.7 sederhana yang bisa saya lakukan adalah membuat patch. Namun mengingat efektivitas pengaturan AnsibleController (pada t2.micro) per Vpc untuk tujuan tersebut, di masa depan saya bermaksud untuk memperluas teknik untuk persyaratan yang lebih kompleks.
Jadi izinkan saya kembali ke pertanyaan yang diajukan di utas ini: pro dan kontra dari dorongan dalam real yang berubah secara dinamis.
Asumsi dari jenis server estate yang saya targetkan adalah:
Dengan kondisi ini dalam pikiran, membuat gambar mesin dari AnsibleController untuk jatuh ke berbagai Vpcs dan mengkonfigurasi (dengan kredensial) in situ dalam akun server yang ada sangat sederhana. Otomatis dalam setiap instance yang dibuat dari gambar
Item kedua dapat dibuat relatif canggih jika diperlukan (melalui struktur Info inventaris Ansible). Tetapi jika kecanggihan tidak diperlukan, berikut ini adalah contoh skrip yang sangat mudah untuk menghitung semua instance Amazon EC2 pada setiap interval cron dan mengarahkan hasilnya ke file inventaris yang sesuai (mis. / Etc / ansible / hosts) ...
Satu-satunya peringatan untuk kasus penggunaan adalah bahwa perintah patch harus idempoten. Sangat diinginkan untuk melakukan pra-tes untuk memastikan bahwa ini memuaskan, sebagai bagian dari memastikan bahwa tambalan melakukan apa yang dimaksudkan.
Singkatnya, saya telah mengilustrasikan kasus penggunaan di mana dorongan dinamis efektif terhadap tujuan yang saya tetapkan. Ini adalah solusi berulang (dalam arti dienkapsulasi dalam gambar yang dapat diluncurkan di beberapa akun dan wilayah). Dalam pengalaman saya sampai saat ini, teknik dorong dinamis jauh lebih mudah untuk diberikan --- dan mulai beraksi --- daripada alternatif yang tersedia dari perangkat yang tersedia untuk kita saat ini.
sumber