Apakah Puppet atau Chef cocok untuk mengelola konfigurasi server yang sangat mendasar dalam lingkungan multi-tenant?


9

Ini berkaitan dengan lingkungan multi-penyewa seperti perusahaan hosting kecil.

Apakah Wayang (atau sejenisnya) merupakan teknologi yang cocok untuk menjaga perubahan massa dasar tetapi kritis? Sebagai contoh:

  • Memperbarui resolvers DNS (resolv.conf)
  • Pengaturan kunci SSH
  • Memperbarui konfigurasi NTP
  • Mengkonfigurasi snmpd
  • Menyebarkan skrip pemantauan seperti ekstensi SNMP Perl atau skrip Nagios

Kekhawatiran saya adalah seputar keamanan dan invasi:

  1. Saya tidak ingin server dapat melihat konfigurasi apa pun yang seharusnya tidak terjadi
  2. Saya khawatir bahwa master Wayang mungkin rentan terhadap serangan oleh server yang dikompromikan
  3. Saya tidak ingin Wayang melakukan perubahan yang seharusnya tidak terjadi, atau mengembalikan perubahan manual yang dilakukan di server.

Saya harus mengatasinya dengan mengatakan saya tidak pernah menggunakan Puppet dalam produksi, hanya bermain-main cepat di laboratorium percobaan, jadi mungkin saya memikirkan hal ini dengan cara yang salah!

Jawaban:


6

Coba Ansible (ansible.cc). Mungkin itu untuk Anda. Tidak ada agen yang berjalan pada klien Anda. Tumbuh sangat cepat.

Alternatif lain yang sangat bagus adalah Salt Stack.

Ansible dan Salt mudah dimengerti, Anda dapat menggunakannya sebagai alat baris perintah jika Anda mau, seperti shell yang didistribusikan.


1
Saya tahu saya menanyakan ini sejak lama. Anda akan senang mengetahui bahwa ini adalah jawaban. Kami sekarang menggunakan Ansible untuk secara otomatis meluncurkan 10-an server per hari dan mengelola 1000-an dengan gaya api-dan-lupa. Sudah bagus selama lebih dari setahun sekarang.
SimonJGreen

9

Ya, ini tentu saja mungkin. Memutuskan apakah Anda harus melakukannya atau tidak, itu terserah Anda.

Mengenai pertanyaan Anda:

1) cukup adil. Lalu lintas berbasis ssl, jadi manajemen sertifikat penting. Juga jangan percaya 'fakta' apa pun yang disediakan klien terkait dengan identitasnya, karena ini dapat diubah oleh klien. Anda ingin mengandalkan sertifikat ssl klien untuk memberikan otentikasi siapa servernya. Sejujurnya jika Anda menggunakan hal-hal seperti hiera dengan benar dan menghindari if-block berdasarkan hostname yang besar dalam kode Anda (yang memang harus Anda lakukan), Anda akan baik-baik saja.

2) Seharusnya tidak, dengan asumsi Anda menyimpannya. Dikonfigurasi dengan benar, hanya ada vektor kecil untuk dalang yang akan diserang oleh klien. Yang mengatakan, efek jika itu bisa dikompromikan besar, jadi berhati-hatilah untuk menguncinya.

3) Itu benar-benar masalah pengujian dan penyebaran. Jika Anda memiliki kode boneka padat, itu tidak akan mengacaukan file Anda. Memang butuh sedikit waktu untuk mendapatkan yang diurutkan, tetapi untuk dasar-dasar (seperti yang Anda butuhkan) tidak lama.


4

Apakah Wayang (atau sejenisnya) merupakan teknologi yang cocok untuk menjaga perubahan massa dasar tetapi kritis?

Ya, bisa digunakan dengan cara ini. Saya menggunakannya untuk mendukung sistem klien eksternal.

Saya tidak ingin server dapat melihat konfigurasi apa pun yang seharusnya tidak terjadi

Jika Anda menggunakan boneka, Anda tidak boleh mengaktifkan tanda tangan kemudian. Autosign memungkinkan host untuk secara otomatis meminta sertifikat. Konfigurasi dan izin Anda hampir pasti akan diikat langsung ke CN dalam sertifikat. Anda tidak ingin komputer acak online dan dapat mengklaim bahwa mereka sebenarnya adalah sistem dengan semua rahasia keamanan tinggi.

Jika Anda benar-benar paranoid, Anda dapat menyesuaikan pengaturan server file boneka untuk membuat share yang hanya dapat diakses oleh beberapa sistem. Akses server file didasarkan pada sertifikat.

Saya tidak ingin Wayang melakukan perubahan yang seharusnya tidak terjadi, atau mengembalikan perubahan manual yang dilakukan di server.

Ada beberapa pendekatan berbeda untuk mengizinkan perubahan lokal.

Salah satu metode yang sering saya gunakan adalah di bawah ini. Pada dasarnya jika Anda meneruskan daftar ke source, maka boneka tersebut mencoba setiap item dalam daftar. Jadi saya menambahkan item pertama dalam daftar untuk menunjuk pada file lokal.

  file { '/etc/ssh/sshd_config':
    ensure => present,
    source => ["/etc/ssh/sshd_config_local",
               "puppet:///modules/ssh/$ssh_config_file"],
    ...
  }

Pilihan lain adalah memanfaatkan symlink. Jika seseorang ingin menggunakan versi boneka, mereka terhubung ke versi boneka dari sebuah file. Jika mereka ingin mempertahankan konfigurasi mereka secara lokal, maka mereka tidak membuat symlink.

  file { '/etc/ssh/sshd_config_puppet':
    ensure => present,
    source => "puppet:///modules/ssh/$ssh_config_file",
    ...
  }

Kemungkinan lainnya adalah menggunakan augeas untuk membuat perubahan level-garis alih-alih mengubah seluruh file. Jadilah sangat konservatif tentang apa yang Anda ubah.


1

3> Tidak ada pembatalan otomatis di Wayang atau alat semacam itu. Anda harus menulis kode eksplisit untuk membatalkan. Selain itu, Anda dapat meneliti fitur Lingkungan boneka, memiliki lab Pengujian tempat kode baru diuji (bisa berupa VM), dan menggunakan ulasan kode.


Tidak sepenuhnya benar. Chef membuat cadangan file apa pun yang diubah /var/lib/chefsecara default (kecuali jika sumber daya dikonfigurasikan untuk tidak meninggalkan cadangan, misalnya untuk data sensitif), dan dengan docformatter Anda melihat perbedaan pada output terminal.
Maciej Pasternacki

Ya, Wayang juga bisa membuat banyak cadangan. Tapi bagaimana Anda tahu cadangan mana yang harus dipulihkan? Anda harus menulis beberapa kode Chef / Puppet, atau skrip eksternal untuk benar-benar melakukan tindakan itu? Bagaimana dengan sumber daya non-file seperti kembali ke paket sebelumnya dengan versi tertentu? Bagaimana dengan layanan? Jika Anda memiliki kode yang mengatakan "pastikan berjalan", dan ingin mengubahnya, Anda harus mengubah kode untuk "memastikan berhenti".
Tidak Sekarang

Idenya adalah bahwa menjalankan manajemen konfigurasi adalah satu arah. Tidak ada prosedur rollback yang didukung, atau "dry run" yang berfungsi penuh (ada mode whyrun di Chef yang hanya berupa pemeriksaan saran / kewarasan daripada simulasi penuh (lihat blog.afistfulofservers.net/post/2012/12/12/21/ ... untuk penjelasan yang lebih panjang) Anda tidak dapat membatalkan kata sandi pengguna, dll. Inilah sebabnya saya menulis "tidak sepenuhnya benar" - tidak ada rollback yang didukung, tetapi ada jaring pengaman / debugging yang memungkinkan Anda melihat cadangan jika ada yang tidak beres dan Anda perlu melihatnya. Tidak lebih, tapi tetap berguna
Maciej Pasternacki

Dan ternyata saya salah membaca komentar Anda - ini benar bahwa tidak ada pembatalan otomatis dan Anda perlu menulis kode eksplisit (dan kemungkinan besar salah) jika Anda mencoba mengotomatiskannya. Saya tidak dapat mengedit komentar asli saya karena sudah dijawab - saya memikirkan pemulihan bencana daripada pengembalian otomatis. Jika Anda ingin melihat pengembalian otomatis, lihat nixos.org , BTW.
Maciej Pasternacki

1

Saya tidak ingin Wayang melakukan perubahan yang seharusnya tidak terjadi, atau mengembalikan perubahan manual yang dilakukan di server.

Untuk file konfigurasi yang dibuat menggunakan jenis File Puppets ini dapat dicapai dengan mengatur:

replace => false,

Saya menggunakannya untuk menghasilkan beberapa file konfigurasi pertama kali aplikasi dikerahkan ke server, tetapi kemudian setiap edit ke file konfigurasi itu tidak akan ditimpa oleh Wayang.

Namun ini bertentangan dengan filosofi Wayang untuk menjadi skrip penyebaran idempoten.

Mungkin lebih baik jika Anda bisa, memiliki file admin-editable terpisah yang tidak dikelola oleh wayang yang termasuk dari file yang dikelola oleh wayang.


0

Wayang bekerja paling baik untuk banyak server dengan konfigurasi yang identik. Misalnya Anda menulis semua konfigurasi server web bersama yang disediakan oleh perusahaan Anda, lalu buat N instance server itu. Setelah itu melakukan perubahan pada semua instance sekaligus (mis. Anda mengetahui bahwa perlu mengubah AllowOverride untuk semua host virtual apache) akan sangat mudah. Anda juga dapat menyimpan semua informasi konfigurasi di satu tempat dan memilikinya di bawah kontrol versi. Dalam kasus sempurna Anda akan dapat menangani kegagalan perangkat keras dengan membuang host yang rusak, menggantinya dengan yang baru, mengatur nama host yang sama dan menandatangani sertifikat yang diperlukan. Segala sesuatu yang lain bisa dilakukan oleh Wayang.

Tetapi jika Anda berakhir dengan hampir tidak ada konfigurasi berbagi antara dua host, menggunakan boneka mungkin kurang produktif daripada melakukan konfigurasi secara manual. Juga mengelola setengah dari konfigurasi server dengan boneka dan setengah lainnya secara manual mungkin tidak masuk akal.

Ringkasan : Jika Anda dapat membuat konfigurasi seragam dan terstruktur untuk host yang akan Anda kelola, Puppet adalah teman terbaik Anda, tetapi jika Anda harus menangani setiap layanan (host, virtual host, database) khusus Puppet tidak akan menambahkan banyak nilai.

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.