Satu Chef untuk Memerintah Mereka Semua

10

Saya sedang mencari koki untuk mengotomatiskan penyebaran Magento - baik ke dalam opsi hosting Magento standar maupun lingkungan seperti EC2. Saya sudah googled di sekitar dan saya melihat banyak resep, tetapi tidak ada yang benar-benar menganggap saya sebagai kanonik. Apakah ada naskah koki tertentu yang lebih baik / yang terbaik? Juga, jika Anda telah melakukan penyebaran chef dengan PHP sebelumnya, apa satu hal yang Anda ingin Anda ketahui ketika Anda memulai?

Alan Storm
sumber
2
Saya berharap saya tahu Ansible ( ansible.com/home ) ada.
Reid Blomquist
Beberapa alternatif lain jika Anda tertarik, saltstack.com dan docker.com . Keduanya terlihat menjanjikan tetapi saya belum memiliki kesempatan untuk bekerja sama.
beeplogic
1
Saya telah bereksperimen dengan capistrano-ash: github.com/augustash/capistrano-ash
pzirkind
Saya pikir Reid ke sesuatu, Alan re: Ansible. Itu tidak memerlukan agen (bekerja dengan kunci ssh +) untuk diinstal pada klien, itu adalah sistem deklaratif sehingga idempoten dan secara umum saya telah menemukan bahwa menggunakannya membuat saya dengan "lakukan satu hal, lakukan saja, dan melakukannya dengan baik "perasaan seperti unix dibandingkan dengan sistem yang lebih kuat seperti koki, boneka, dan garam. Sudah lama sejak Anda memposting ini awalnya, ada pembaruan di pikiran Anda setelah bekerja dengan chef sebentar?
Bryan 'BJ' Hoffpauir Jr.

Jawaban:

6

Hampir tidak mungkin untuk memiliki satu set rutinitas untuk semua ukuran. Saya telah berhasil menulis skrip Bash yang mengeksekusi chef-clientberjalan pada daftar host yang disediakan oleh knife search. Prosedurnya terlihat seperti ini ...

Open source Chef Server 10.18.2 di Ubuntu 12.04 LTS

  1. Inisialisasi variabel
  2. Dapatkan hash revisi terbaru dari GitHub untuk $branch
  3. Nonaktifkan pemantauan ketersediaan untuk mencegah peringatan tentang status HTTP 503
  4. Alihkan semua host web dan utilitas ke mode pemeliharaan
  5. Sebarkan utilitas
    1. Hentikan cron Magento dan semua pekerja Resque
    2. Mengatasi ketergantungan sistem file
    3. Chef memeriksa revisi yang ditetapkan sebagai rilis baru
    4. Alamat dependensi Magento (paket, modul, sistem file, izin)
    5. Perbarui semua tugas cron dan skrip untuk otomatisasi
    6. Menyebarkan semua modul (komposer)
    7. Bersihkan cache dengan n98-magerun.phar
    8. Jalankan migrasi apa pun dengan n98-magerun.phar
    9. Aktifkan kembali cron Magento
    10. Mulai resque pekerja
  6. Menyebarkan host web pertama
    1. Mengatasi ketergantungan sistem file
    2. Chef memeriksa yang ditetapkan $revisionsebagai rilis baru
    3. Mengatasi ketergantungan Magento
    4. Menyebarkan semua modul Magento
  7. Tandai penyebaran baru di Relik Baru
  8. Aktifkan layanan pemantauan ketersediaan
  9. Nonaktifkan layanan penyeimbang muatan ke semua host web lainnya
  10. Lanjutkan penyebaran di host web, secara berurutan membawanya online
  11. Lakukan rutinitas Chef untuk host pencarian

Sumber: https://gist.github.com/parhamr/6177160#file-2-deployment

Parhamr
sumber
4

Ini adalah bagaimana saya mendekati area ini sambil mengenakan peran ingin menjadi sysadmin / devops. Kebanyakan yang berikut ini hanya akan menjadi prinsip umum yang saya coba ikuti dan tidak spesifik untuk Chef.

Saya akhirnya pergi dengan Wayang karena saya menemukan ada lebih banyak sumber daya pada saat itu dan merasa lebih mudah untuk menjemput saya.

Saya melihat berbagai modul pre-built yang tersedia untuk hal-hal seperti apache, php5, dll. Banyak dari mereka tampaknya melakukan jauh lebih banyak daripada yang saya butuhkan dan menjadi sangat tidak terbiasa dengan platform saya tidak percaya apa yang sedang terjadi. Saya memutuskan akan lebih mudah bagi saya untuk mengidentifikasi apa yang perlu saya lakukan pada setiap jenis simpul.

Saya memulai proses dengan menyediakan lingkungan pengembangan lokal tim (vargrant + kotak virtual). Untuk setiap layanan / komponen saya membuat modul: php5, apache2, redis, mysql, dll.

Setelah lingkungan dev stabil / berfungsi, saya mulai membangun lingkungan QA. Saya mendefinisikan jenis simpul umum untuk server web, redis, pernis, dll. Yang menggunakan kembali modul yang sama dengan dev. Setelah ini Pementasan dan Produksi membutuhkan perubahan minimal yang diperlukan untuk bangkit dan berjalan.

Saat Anda membaca dan menulis resep / template Anda, Anda harus mempertimbangkan bagaimana jika dapat digunakan kembali / digeneralisasi. Jangan membuat kode yang sulit seperti jalur atau pengguna / grup yang dapat berubah di antara distro / proyek / lingkungan. Karena Anda sedang melihat pendekatan umum, saya kira rintangan besar akan berhadapan dengan perbedaan antara distribusi * nix.

Yang terpenting, tetap sederhana. Mengotomatiskan / membakukan bagian lingkungan yang paling penting / memakan waktu. Iterate, berevolusi.

beeplogic
sumber