penyebaran linux otomatis dan manajemen konfigurasi dalam skala kecil - apakah itu layak?

24

Saya akan menggunakan ~ 25 server yang menjalankan Debian . Mesin-mesin akan memiliki peran yang berbeda - server web, Java appservers, proxy, kotak MySQL. Lingkungan mungkin tidak akan tumbuh banyak di masa depan - mungkin 2-5 server lagi dalam 2 tahun ke depan.

Saya mungkin akan menggunakan fai untuk instalasi sistem, tapi aku tidak yakin apakah itu layak untuk menambahkan juga cfengine atau wayang terpusat manajemen konfigurasi untuk skala kecil seperti.

Apakah manajemen konfigurasi masuk akal untuk lingkungan ukuran ini?

pQd
sumber

Jawaban:

29

Saya akan merekomendasikan menggunakan campuran pra-seeding Debian, di mana Anda memberi installer file teks yang menjawab semua pertanyaan yang akan ditanyakan, dan Wayang.

Alasan menggunakan preseeding, daripada FAI adalah bahwa Anda tidak perlu mengatur gambar terlebih dahulu dan berurusan dengan tetap up to date. Anda akan berakhir dengan instalasi yang sangat mirip dengan apa yang akan Anda miliki jika Anda melakukan semuanya dengan tangan. Ketika Anda datang untuk menginstal rilis baru, Anda harus memperbarui file konfigurasi dengan perubahan, daripada harus membangun kembali gambar baru.

Alat manajemen konfigurasi sangat berguna di mana Anda memiliki beberapa server melakukan peran yang sama dan Anda ingin mereka menjadi identik, misalnya cluster server web. Namun, mereka juga dapat berguna untuk mengkonfigurasi instalasi dasar semua server. Anda akan ingin menginstal paket-paket tertentu di semua server Anda, seperti ntpd dan MTA. Anda akan ingin mengubah file konfigurasi di semua server Anda. Manfaat tambahan adalah bahwa Anda dapat menyimpan manifes di sesuatu seperti subversi dan menyimpan catatan tentang apa yang berubah pada server dan siapa yang melakukannya dan mengapa. Manajemen konfigurasi juga bisa menjadi penyelamat jika terjadi kegagalan server dan Anda harus membangunnya kembali dengan cepat. Instal OS (menggunakan FAI atau preseeding), instal boneka dan pergi begitu saja, dibangun kembali persis seperti sebelumnya. Tentunya Anda harus menyimpan cadangan data.

Manajemen konfigurasi memerlukan dedikasi untuk memastikan Anda hanya melakukan perubahan dengan menggunakannya dan akan memiliki biaya pengaturan di muka, tetapi begitu Anda memiliki pengaturan yang berfungsi Anda tidak akan menyesalinya.

Wayang lebih modern dari dua alat yang Anda sebutkan. Saya sangat merekomendasikan ini kepada siapa pun. Konfigurasi adalah bahasa deklaratif dan mudah untuk membangun konstruksi tingkat yang lebih tinggi. Ada juga komunitas yang sangat besar di sekitarnya dan selalu ada orang yang mau membantu di milis atau saluran IRC.

David Pashley
sumber
terima kasih atas petunjuk tentang pra-seeding. Saya melihat dokumen tentang hal itu sekarang.
pQd
FAI adalah skool lama; Saya pasti tidak akan merekomendasikannya. Preseeding + Boneka wayang.
womble
Kami menggunakan FAI dan cfengine, kami memiliki sekitar 1000 mesin dan bekerja sangat baik. Perlu dicatat bahwa Anda dapat ssh ke dalam mesin saat membangun sendiri, sehingga dapat membuat menulis skrip mikro lebih mudah.
James
FAI scool tua? TIDAK! FAI sangat solid dan memiliki lebih dari 10 tahun pengalaman. Lihatlah daftar panjang pengguna FAI di fai-project.org/reports
Thomas Lange
Saran yang bagus, kami menggunakan pendekatan yang sama dan itu bekerja dengan baik. Namun, saya tidak akan mengabaikan FAI. FAI tidak menggunakan gambar untuk instalasi (SystemImager melakukan itu). Anda harus mengatur direktori root nfs minimal yang digunakan untuk menjalankan installer FAI. Proses instalasi otomatis dengan file-file konfigurasi dan menjalankan berbagai kait yang ditentukan pengguna. Keuntungan dari preseeding adalah bahwa konsep kelas FAI membuatnya mudah untuk menangani beberapa server (dan bahkan workstation) yang memiliki peran berbeda.
Bersenang
10

Saya akan merekomendasikan CFengine untuk lingkungan apa pun yang lebih dari 2-3 kotak dan di mana Anda memiliki konsep 'templat' atau server yang menjalankan peran tertentu.

Mengapa? Sederhananya itu mengurangi kesalahan, Anda memiliki alat yang akan memastikan izin file / direktori benar di mana-mana di lingkungan dan ketika Anda datang untuk meluncurkan lebih banyak server, alat ini menangani segalanya dan tidak pernah membuat kesalahan.

Kontras bahkan dengan Administrator Sistem yang terampil yang meluncurkan server web pada akhir shift dua belas jam ketika segala sesuatunya berjalan salah ... Apakah mereka mungkin mengingat file konfigurasi kecil yang tidak menyenangkan yang perlu masuk ke / etc / random / location / foo / bar kalau tidak aplikasi akan diam-diam gagal melakukan sesuatu yang agak penting, seperti pelanggan tagihan? :)

Alat seperti CFengine juga merupakan cara terbaik untuk melakukan pembaruan keamanan di seluruh lingkungan. Menjatuhkan konfigurasi Nagios (NRPE) ke semua kotak juga bisa dihindari. Apakah Anda berurusan dengan lima kotak atau lima ratus kotak, Anda akan menghemat waktu dengan CFengine.

Mungkin perlu dicatat bahwa lingkungan saya sedikit lebih besar, namun saya juga telah menggunakan CFengine untuk lingkungan yang lebih kecil daripada yang Anda perhatikan, karenanya rekomendasinya!

Mungkin pertanyaan Anda berikutnya adalah CFengine vs Puppet? Itu keputusan yang lebih sulit, dan saya selalu menggunakan CFengine karena (pada masa-masa awal) ketidakdewasaan dari Puppet, khususnya di sekitar kesalahan logging .... hari ini saya benar-benar tidak yakin - apakah ada permainan yang bisa dilihat? Melihat kembali ke masalah spesifik saya dengan Puppet, itu terkait dengan sertifikat SSL, masih teringat saat saya menghabiskan 3 jam mendiagnosis server <-> masalah konektivitas klien di irc.freenode.net/#puppet dengan beberapa RTFM dan RTFS yang lumayan hanya untuk menemukan kesalahan, tidak dicatat, dan Luke berkata, "Ah, itu benar-benar sulit untuk diperbaiki" dan tidak pernah dilakukan. :(

nixgeek
sumber
Poin yang bagus. masalah dalam kasus saya hal-hal akan menjadi sangat khusus, jumlah templat [karena redundansi] mungkin sekitar n / 2 [di mana n adalah jumlah total server].
pQd
1
Itu bukan hal yang buruk, sebagian besar cluster WWW saya adalah n + 2 jika tidak n / 2 dan Anda bisa sangat fleksibel dengan CFengine dalam menempatkan node di belakang penyeimbang beban Anda seperti HAproxy. Sangat layak untuk mengelola IPVS dan hal-hal yang tetap ada :-) Bahkan dengan persyaratan redundansi n / 2 Saya yakin Anda memiliki banyak file konfigurasi yang identik atau serupa di lingkungan Anda? Ingat bahwa dengan CFengine Anda memiliki alat 'editfiles' untuk melakukan hal-hal seperti file konfigurasi "templated" yang berisi sesuatu seperti IP dan kemudian (saat runtime) temukan dan ganti dengan info yang benar. ;)
nixgeek
@astinus terima kasih atas komentar Anda. Saya juga agak takut mendapatkan produksi saya dengan mengacaukan konfigurasi pusat. apa pendapat Anda tentang penonaktifan polling konfigurasi dan pencatatan otomatis pada setiap mesin dan memaksanya memperbarui dan memeriksa secara manual apakah semua hal baik-baik saja? [ya, saya akan memiliki pemantauan nagios / custom juga ... tapi masih].
pQd
1
Saya pikir kepercayaan pada teknik manajemen konfigurasi Anda datang bersama waktu, tetapi untuk sementara, cukup nonaktifkan polling otomatis kotak dan gunakan 'cssh' untuk login ke setiap kelas kotak untuk menjalankan 'cfagent -qv' (atau apa pun!) Saat Anda ingin mendorong pembaruan. Jika Anda menginginkan tip teratas untuk meningkatkan kepercayaan diri, gunakan mesin virtual sebagai lingkungan 'pementasan' dan pastikan semua perubahan melewati hal itu terlebih dahulu. Cukup mudah jika Anda menyimpan konfigurasi CFengine atau Puppet di Subversion, cukup gunakan cabang dan tag.
nixgeek
Saya juga akan merekomendasikan menggunakan SLACK untuk menyederhanakan instalasi sistem, manajemen konfigurasi ridiculously. Ini tersedia di sini: sundell.net/~alan/projects/slack
HK_
5

Selain cfengine dan boneka, ada juga koki . Saya akan sangat menyarankan menggunakan salah satu alat ini karena hal-hal akan selalu tumbuh ke arah yang tidak terduga. Ini membantu mengelola berbagai hal di lokasi terpusat.

Yang penting untuk diketahui adalah kemungkinan Anda tidak akan mendapatkan segalanya tetapi jika Anda setidaknya bisa mendapatkan 90% di sana, itu adalah awal. Selain itu, itu menyenangkan dan akan membuat hidup Anda lebih mudah dalam jangka panjang. Terakhir, ini adalah keterampilan yang bagus untuk terus maju.

Jauder Ho
sumber
chef adalah entri baru-baru ini ke adegan manajemen konfigurasi. Ini dirancang untuk dikonfigurasikan dengan menulis ruby ​​untuk melakukan apa yang Anda inginkan, sebagai lawan dari bahasa deklaratif adat boneka. Waktu akan menunjukkan metode mana yang bekerja dengan baik. Saat ini saya duduk di kamp boneka.
David Pashley
3

Saya menggunakan cfengine sejak 5 tahun untuk menginstal debian (dari woody hingga lenny saat ini). Dengan etch saya membuat installer debian khusus. Berkat preseed satu pertanyaan muncul: "whats the hostname". Setelah cfengine ini mengkonfigurasi seluruh server (dns + dhcp dengan dnssec, samba, ntpd, default (Samba) pengguna dan kata sandi, ssh, openvpn, apache vHosts, cadangan dengan rsnapshot pada LVM, modul web kustom, dll).

Bahkan ketika saya menginstal hanya satu server saya menggunakan skrip cfengine dari kotak alat saya seperti ini:

control:

  Repository  = ( $(CFREPO) )
  IfElapsed = ( 0 )
  Syslog = ( on )
  actionsequence = ( editfiles shellcommands )
  CPTYPE = ( sum )

editfiles:
  { /etc/sysctl.conf
    # don't spam on tty:
    BeginGroupIfNoSuchLine "kernel.printk.*=.*2 4 1 7"
      DeleteLinesMatching "^kernel.printk.*=.*"
      Append "kernel/printk=2 4 1 7"
    EndGroup
    # no E(xplicit?) C(ongestion) N(otification) 
    BeginGroupIfNoSuchLine "net.ipv4.tcp_ecn.*=.*0"
      DeleteLinesMatching "^net.ipv4.tcp_ecn.*=.*"
      Append "net/ipv4/tcp_ecn=0"
    EndGroup
    BeginGroupIfNoSuchLine "net.ipv4.ip_forward.*=.*1"
      DeleteLinesMatching "^net.ipv4.ip_forward.*=.*"
      Append "net/ipv4/ip_forward=1"
    EndGroup
    DefineClasses "configchange_sysctl"
  }

shellcommands:
  configchange_sysctl::
    "/sbin/sysctl -p /etc/sysctl.conf"

# vim: set ts=2:

Saya suka cfengine, karena cf2-scripts terbaca oleh manusia.

jadi pasti layak untuk bekerja dengan alat untuk manajemen konfigurasi otomatis.

/ thorsten

ThorstenS
sumber
2

Itu harus berharga bahkan untuk situs kecil. Semuanya tentang konsistensi saat Anda tumbuh. Dan Anda tahu bahwa situs Anda akan tumbuh. Terbaik untuk memulai saat Anda masih kecil. Cfengine luar biasa. Terutama versi 3, yang dapat menangani semua manajer paket di seluruh bidang, dan ini sangat ringan dan aman dan "hanya berfungsi". Wayang hanya tidak memberikan apa yang diklaimnya. Belum mencoba Chef.

Keuntungan cfengine dibandingkan yang lain adalah sangat ringan tetapi sebenarnya memiliki lebih banyak kemampuan. Keamanannya seperti ssh, bukan sertifikat web yang digunakan oleh boneka. Ketika saya memberi tahu bos saya tentang cfengine, dia pikir itu fiksi ilmiah :) Jika Anda mencari sesuatu yang futuristik, cobalah membaca beberapa makalah penelitian Marc Burgess. Hal yang keren.

Sannukka
sumber
1

Alat nomor satu yang saya harap miliki ketika menjalankan situs kecil adalah build 'tombol-tekan'. Itu membuat penambalan, pembaruan, dan pembangunan kembali lebih mudah, yang dapat mengatasi berbagai masalah lain di masa depan.

Tidak ada ssh terpasang dengan benar di semua kotak? tidak ada curl / wget / vim juga? bagaimana dengan alat in-house lain yang ingin Anda miliki di setiap kotak?

Memiliki manajemen pusat dari server Anda adalah salah satu alat pertama yang Anda harus bekerja untuk membuat upaya masa depan lebih mudah.

ericslaw
sumber
1

Saya setuju dengan semua orang di sini. Anda harus mulai belajar dan menyiapkan infrastruktur yang berfungsi saat Anda tidak besar. Karena dengan begitu Anda siap ketika Anda tumbuh.

Tergantung pada apa yang ingin Anda jalankan, saya akan memilih FAI, cfengine dan pra-seeding untuk Debian / Ubuntu. FAI dapat bekerja dengan banyak alat yang berbeda, jadi ini adalah awal yang baik untuk distribusi seperti Debian. Dengan konfigurasi yang dikendalikan kelas FAI (dan cfengine), Anda dapat dengan mudah membagi instalasi menjadi modul-modul kecil, yang kemudian dapat Anda pilih mana yang akan digunakan untuk setiap mesin Anda. Dengan cara ini, akan berguna bahkan jika Anda memiliki banyak mesin yang berbeda. Ini sebenarnya lebih bermanfaat, karena Anda akan mendokumentasikan instalasi Anda dengan skrip ini. Dan ketika Anda menginstal pada mesin baru, Anda tidak akan melupakan apa pun.

Ya, Anda HARUS memiliki beberapa mesin untuk diuji sebelum Anda menyebarkan perubahan Anda dalam instalasi langsung. Tetapi dengan skrip konfigurasi seperti ini, Anda tidak akan lupa untuk melakukan langkah apa pun dalam instalasi langsung.

Anders
sumber