Menyebarkan perangkat lunak kami sendiri menggunakan Wayang?


8

(Mohon maaf sebelumnya atas kebodohan dalam pertanyaan ini. Saya biasanya seorang programmer, bukan sysadmin, tapi saya sendiri yang mengambilnya untuk mengotomatisasi beberapa hal, dan membersihkan beberapa hal lain yang otomatis tetapi tidak dengan cara yang tercantik) . :-)

Saya telah melihat-lihat berbagai alat untuk otomatisasi penyebaran perangkat lunak ke banyak server, seperti cfengine, Puppet, dan Chef. Sejauh ini, Wayang tampak paling menarik, tetapi saya belum berkomitmen untuk apa pun.

Alat-alat ini semua terlihat seperti mereka dapat melakukan pekerjaan yang bagus untuk menjaga sekelompok server tetap up-to-date dengan perangkat lunak yang sudah dikemas .

Yang tidak saya dapatkan adalah: bagaimana cara menggunakan alat (seperti Wayang) untuk mengelola penyebaran perangkat lunak internal kita sendiri? Saya pikir saya bingung karena saya sudah melihat ribuan tutorial yang menunjukkan bagaimana untuk menjaga Apache ensure => latest(yang merupakan cukup keren), tapi tidak ada yang cukup bersesuaian dengan penggunaan-kasus saya saat ini, yang merupakan sesuatu yang lebih seperti:

  1. ketika seorang manusia menekan The Button,
  2. cabut cabang A dari repositori kontrol versi B
  3. jalankan perintah C untuk mengkompilasinya
  4. salin binari D ke server E1 hingga E10
  5. pada setiap server, jalankan perintah F untuk membuat semua perubahan berlaku

Wayang terdengar hebat, dan saya benar-benar melihat keuntungan dari deklaratif, konfigurasi idempoten atas beberapa skrip shell, tapi saya belum melihat tutorial untuk "Anda ingin memperbarui skrip shell Anda ke Wayang (atau Chef, atau cfengine) jadi inilah yang Anda harus dilakukan ". Apakah ada hal seperti itu? Apakah sudah jelas bagi orang lain bagaimana mengambil barang-barang yang disediakan dalam dokumen Wayang dan mereplikasi perilaku yang saya inginkan? Apakah saya tidak mengerti?

Apa yang terdengar bagi saya, sejauh ini, adalah bahwa manusia (# 1) akan secara manual mengemas perangkat lunak (# 2 dan # 3) eksternal untuk Wayang, secara manual memperbarui konfigurasi Wayang, yang akan memicu Wayang untuk memperbarui server. .. mungkin? (Aku agak bingung di sini, karena aku yakin kamu bisa tahu.)

Terima kasih!


Wayang dimaksudkan untuk bekerja dengan pola "Paket, File, Layanan". Wayang akan bagus untuk mempersiapkan pengungkit Anda, tetapi server pembangun berkelanjutan seperti Jenkins mungkin merupakan alat yang lebih baik untuk kasus penggunaan ini.
Pengamen

Jawaban:


5

Kami menggunakan boneka, tetapi kami tidak menggunakannya untuk penyebaran aplikasi kami. Seperti yang Anda katakan, Anda dapat mengemas perangkat lunak Anda ke dalam debs atau rpms, mengkonfigurasi repositori pribadi Anda di mana-mana, dan menggunakan boneka untuk mengontrol versi, tetapi Anda masih menunggu menunggu refresh 30 menit berikutnya pada semua server Anda.

Apa yang akan saya lakukan (dan ini dekat dengan apa yang kami lakukan, tetapi kami menggunakan rel sehingga tidak ada langkah kompilasi):

  • Gunakan boneka untuk mengkonfigurasi semua yang ada di server kecuali aplikasi itu sendiri. Ketergantungan, server web, pengguna, jalur, dll.
  • Suruh server build otomatis Anda (bambu, hudson, cruise control, dll.) Menempatkan artefak yang dikompilasi ke dalam manajer repositori seperti Nexus.
  • Gunakan capistrano untuk mendorong build ke server Anda.

Chef mungkin memiliki kemampuan push yang lebih nyata; Saya tidak terlalu terbiasa dengannya.


Perangkat lunak khusus ini tidak menggunakan Ruby. Saya mendapat kesan bahwa Wayang cukup agnostik, tetapi Capistrano dibuat untuk bekerja dengan aplikasi Rails. Tapi sudah beberapa tahun sejak saya menggunakan topi jadi mungkin itu berubah, dan saya akan memeriksanya lagi sekarang.
Ken

1
Capistrano condong ke arah Rails, tetapi fleksibel dan dapat dengan mudah digunakan untuk bahasa lain. Baca saja resep penerapan default dan timpa dalam resep Anda sendiri. Ini hanya pemrograman. Perusahaan saya menyebarkan puluhan aplikasi PHP ke beberapa server melalui Capistrano, meskipun kami menggunakan antarmuka Webistrano untuk membuatnya lebih mudah dikelola.
Martijn Heemels

2
Capistrano baik-baik saja, tetapi MCollective dan RunDeck lebih baik untuk diintegrasikan dengan Puppet.
jgoldschrafe

Anda juga dapat melihat Fabric; ini agak mirip Capistrano, tetapi dengan Python.
Xiong Chiamiov

1

Langkah 1 hingga 3 biasanya otomatis dalam proses pembuatan. Biasanya, output dari proses ini akan melalui siklus uji. Saya mengemas output sehingga dapat digunakan untuk lingkungan uji integrasi. Hanya jika tes integrasi lolos, langkah 4 dan 5 harus terjadi.

Langkah 5 Anda menyiratkan pemadaman penyebaran. Untuk sesuatu seperti apache, ini dapat ditangani dengan shutdown dan restart selama rotasi log. Skrip crontab dapat menangani ini. Jika Anda dapat menangani perubahan bergulir selama satu jam atau lebih, cukup sertakan restart di langkah penyebaran 4. Wayang atau cfengine adalah alat yang tepat untuk langkah 4. Ini dapat dipicu dengan memperbarui repositori ketika tes integrasi lulus.


1

Cari resep boneka dan Anda akan menemukan banyak skrip siap produksi. Ya, Anda harus mengemas perangkat lunak secara manual. Jika Anda mengelola repositori pribadi Anda sendiri, maka Anda dapat menggunakan flag sure => terbaru. Kemudian tulis resep untuk memberi tahu boneka untuk menginstal perangkat lunak. Resep harus ditempatkan pada server master dari mana ia akan disebarkan ke budak.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.