Migrasi dari Server Chef ke Stacks AWS OpsWorks - AWS OpsWorks

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Migrasi dari Server Chef ke Stacks AWS OpsWorks

penting

AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Support Tim di AWS re:Post atau melalui AWS Dukungan Premium.

Karena AWS OpsWorks Stacks didasarkan pada Chef, migrasi dari Chef Server ke AWS OpsWorks Stacks relatif mudah. Topik ini memberikan panduan untuk memodifikasi kode Chef Server agar bekerja dengan AWS OpsWorks Stacks.

catatan

Kami tidak menyarankan migrasi ke tumpukan menggunakan versi Chef lebih awal dari 11.10, yang didasarkan pada chef-solo dan tidak mendukung penelusuran atau tas data.

Memetakan Peran ke Lapisan

Chef Server menggunakan peran untuk mewakili dan mengelola instance dengan tujuan dan konfigurasi yang sama, seperti serangkaian instance yang masing-masing meng-host server aplikasi Java. Lapisan AWS OpsWorks Stacks pada dasarnya memiliki tujuan yang sama dengan peran Chef. Layer adalah cetak biru untuk membuat satu set instans Amazon Elastic Compute Cloud (Amazon EC2) dengan konfigurasi yang sama, paket yang diinstal, prosedur penerapan aplikasi, dan sebagainya.

AWS OpsWorks Stacks mencakup satu set lapisan bawaan untuk beberapa jenis server aplikasi, penyeimbang beban HAProxy, master database MySQL, dan master pemantauan Ganglia. Misalnya, lapisan Java App Server bawaan adalah cetak biru untuk membuat instance yang meng-host server Tomcat.

Untuk bermigrasi ke AWS OpsWorks Stacks, Anda perlu mengaitkan setiap peran dengan lapisan yang menyediakan fungsionalitas setara. Untuk beberapa peran, Anda mungkin bisa menggunakan salah satu lapisan bawaan. Peran lain mungkin memerlukan berbagai tingkat penyesuaian. Mulailah dengan memeriksa fungsionalitas lapisan bawaan, termasuk resep yang terkait dengan masing-masing, untuk melihat apakah seseorang menyediakan setidaknya beberapa fungsi peran Anda. Untuk informasi selengkapnya tentang lapisan bawaan, lihat Lapisan danAWS OpsWorks Referensi Lapisan Tumpukan. Untuk memeriksa resep bawaan, lihat GitHubrepositori publik AWS OpsWorks Stacks.

Bagaimana Anda melanjutkan tergantung pada seberapa dekat Anda dapat mencocokkan lapisan untuk setiap peran, sebagai berikut.

Lapisan bawaan mendukung semua fungsionalitas peran

Anda dapat menggunakan lapisan bawaan secara langsung, dengan penyesuaian kecil, jika perlu. Misalnya, jika peran mendukung server Tomcat, resep lapisan Java App Server mungkin sudah menangani semua tugas peran, mungkin dengan beberapa penyesuaian sederhana. Misalnya, Anda dapat membuat resep bawaan layer menggunakan pengaturan konfigurasi Tomcat atau Apache kustom dengan mengganti atribut atau templat yang sesuai.

Lapisan bawaan mendukung beberapa, tetapi tidak semua, fungsionalitas peran

Anda mungkin dapat menggunakan lapisan bawaan dengan memperluas lapisan. Ini biasanya melibatkan penerapan resep khusus untuk mendukung fungsionalitas yang hilang dan menetapkan resep ke peristiwa siklus hidup lapisan. Misalnya, peran Anda menginstal server Redis pada instance yang sama yang meng-host server Tomcat. Anda dapat memperluas lapisan Java App Server agar sesuai dengan fungsionalitas peran dengan menerapkan resep khusus untuk menginstal Redis pada instance lapisan dan menetapkan resep ke acara Pengaturan lapisan.

Tidak ada lapisan bawaan yang cukup mendukung fungsionalitas peran

Menerapkan lapisan khusus. Misalnya, peran Anda mendukung server database MongoDB, yang tidak didukung oleh salah satu lapisan bawaan. Anda dapat memberikan dukungan tersebut dengan menerapkan resep untuk menginstal paket yang diperlukan, mengkonfigurasi server, dan sebagainya, dan menetapkan resep ke peristiwa siklus hidup lapisan kustom. Biasanya, Anda dapat menggunakan setidaknya beberapa resep peran untuk tujuan ini. Untuk informasi selengkapnya tentang cara menerapkan lapisan kustom, lihatMembuat Layer Server Tomcat Kustom.

Menggunakan Tas Data

Chef Server memungkinkan Anda meneruskan data yang ditentukan pengguna ke resep Anda dengan menggunakan tas data.

  • Anda menyimpan data dengan buku masak Anda, dan Chef menginstalnya di setiap instance.

  • Anda dapat menggunakan tas data terenkripsi untuk data sensitif seperti kata sandi.

AWS OpsWorks Tumpukan mendukung tas data; resep dapat mengambil data menggunakan kode yang persis sama dengan Chef Server. Namun, dukungan memiliki batasan dan perbedaan berikut:

  • Kantong data hanya didukung di Chef 11.10 Linux dan tumpukan yang lebih baru.

    Tumpukan Windows dan tumpukan Linux yang menjalankan versi Chef sebelumnya tidak mendukung kantong data.

  • Anda tidak menyimpan tas data di repositori buku masak Anda.

    Sebagai gantinya, Anda menggunakan JSON khusus untuk mengelola data tas data Anda.

  • AWS OpsWorks Stacks tidak mendukung kantong data terenkripsi.

    Jika Anda perlu menyimpan data sensitif dalam bentuk terenkripsi, seperti kata sandi atau sertifikat, sebaiknya simpan di bucket S3 pribadi. Anda kemudian dapat membuat resep khusus yang menggunakan Amazon SDK for Ruby untuk mengambil data. Sebagai contoh, lihat Menggunakan SDK untuk Ruby.

Untuk informasi selengkapnya, lihat Menggunakan Tas Data.

Chef Server menyimpan informasi konfigurasi tumpukan, seperti alamat IP dan konfigurasi peran, di server. Resep menggunakan pencarian Chef untuk mengambil data ini. AWS OpsWorks Stacks menggunakan pendekatan yang agak berbeda. Misalnya, tumpukan Chef 11.10 Linux didasarkan pada mode lokal klien Chef, opsi klien Chef yang menjalankan versi ringan Chef Server (sering disebut Chef Zero) secara lokal pada instance. Chef Zero mendukung pencarian terhadap data yang disimpan dalam objek node instance.

Alih-alih menyimpan data tumpukan di server jarak jauh, AWS OpsWorks Stacks menambahkan satu set konfigurasi tumpukan dan atribut penerapan ke objek node setiap instance untuk setiap peristiwa siklus hidup. Atribut ini mewakili snapshot dari konfigurasi stack. Mereka menggunakan sintaks yang sama dengan Chef Server dan mewakili sebagian besar data yang perlu diambil resep dari server.

Anda sering tidak perlu memodifikasi kode yang bergantung pada pencarian resep Anda untuk Stacks. AWS OpsWorks Karena pencarian Chef beroperasi pada objek node, yang mencakup konfigurasi tumpukan dan atribut penerapan, kueri penelusuran di AWS OpsWorks Stacks biasanya bekerja persis seperti yang mereka lakukan dengan Chef Server.

Pengecualian utama disebabkan oleh fakta bahwa konfigurasi tumpukan dan atribut penerapan hanya berisi data yang diketahui AWS OpsWorks Stacks saat menginstal atribut pada instance. Jika Anda membuat atau memodifikasi atribut secara lokal pada instance tertentu, perubahan tersebut tidak menyebar kembali ke AWS OpsWorks Tumpukan dan tidak dimasukkan ke dalam konfigurasi tumpukan dan atribut penerapan yang diinstal pada instance lain. Anda dapat menggunakan pencarian untuk mengambil nilai atribut hanya pada instance itu. Untuk informasi selengkapnya, lihat Menggunakan Pencarian Chef.

Untuk kompatibilitas dengan Chef Server, AWS OpsWorks Stacks menambahkan satu set role atribut ke objek node, yang masing-masing berisi salah satu atribut layer stack. Jika resep Anda digunakan roles sebagai kunci pencarian, Anda tidak perlu mengubah kode pencarian. Kueri secara otomatis mengembalikan data untuk lapisan yang sesuai. Misalnya, kueri berikut mengembalikan atribut php-app layer.

phpserver = search(:node, "layers:php-app").first
phpserver = search(:node, "roles:php-app").first

Mengelola Buku Masak dan Resep

AWS OpsWorks Stacks dan Chef Server menangani buku masak dan resep agak berbeda. Dengan Server Chef:

  • Anda menyediakan semua buku masak, baik dengan menerapkannya sendiri atau dengan menggunakan buku masak komunitas.

  • Anda menyimpan buku masak di server.

  • Anda menjalankan resep secara manual atau pada jadwal reguler.

Dengan AWS OpsWorks Tumpukan:

  • AWS OpsWorks Stacks menyediakan satu atau lebih buku masak untuk masing-masing lapisan bawaan. Buku masak ini menangani tugas-tugas standar, seperti menginstal dan mengonfigurasi perangkat lunak lapisan bawaan dan menerapkan aplikasi.

    Untuk menangani tugas yang tidak dilakukan oleh buku masak bawaan, Anda menambahkan buku masak khusus ke tumpukan Anda atau menggunakan buku masak komunitas.

  • Anda menyimpan buku masak AWS OpsWorks Stacks di repositori jarak jauh, seperti bucket S3 atau repositori Git.

    Untuk informasi selengkapnya, lihat Menyimpan Buku Masak.

  • Anda dapat mengeksekusi resep secara manual, tetapi Anda biasanya memiliki AWS OpsWorks Stacks mengeksekusi resep untuk Anda sebagai respons terhadap serangkaian peristiwa siklus hidup yang terjadi pada titik-titik penting selama siklus hidup instans.

    Untuk informasi selengkapnya, lihat Mengeksekusi Resep.

  • AWS OpsWorks Stacks mendukung Berkshelf pada tumpukan Chef 11.10 saja. Jika Anda menggunakan Berkshelf untuk mengelola dependensi buku masak Anda, Anda tidak dapat menggunakan tumpukan yang menjalankan Chef 11.4 atau versi sebelumnya.

    Untuk informasi selengkapnya, lihat Menggunakan Berkshelf.

Menyimpan Buku Masak

Dengan Chef Server, Anda menyimpan buku masak Anda di server dan menyebarkannya dari server ke instance. Dengan AWS OpsWorks Stacks, Anda menyimpan buku masak di repositori— arsip S3 atau HTTP atau repositori Git atau Subversion. Anda menentukan informasi yang dibutuhkan AWS OpsWorks Stacks untuk mengunduh kode dari repositori ke instance tumpukan saat Anda menginstal buku masak.

Untuk bermigrasi dari Chef Server, Anda harus meletakkan buku masak Anda di salah satu repositori ini. Untuk informasi tentang cara menyusun repositori buku masak, lihat. Repositori Buku Masak

Mengeksekusi Resep

Di AWS OpsWorks Stacks, setiap lapisan memiliki serangkaian peristiwa siklus hidup —Setup, Configure, Deploy, Undeploy, dan Shutdown—yang masing-masing terjadi pada titik kunci selama siklus hidup instance. Untuk menjalankan resep kustom, Anda biasanya menetapkannya ke acara yang sesuai pada layer yang sesuai. Ketika acara terjadi, AWS OpsWorks Stacks menjalankan resep terkait. Misalnya, peristiwa Setup terjadi setelah instance selesai booting, jadi Anda biasanya menetapkan resep untuk acara ini yang melakukan tugas-tugas seperti menginstal dan mengonfigurasi paket dan memulai layanan.

Anda dapat menjalankan resep secara manual dengan menggunakan perintah tumpukan Execute Recipes. Perintah ini berguna untuk pengembangan dan pengujian, tetapi Anda juga dapat menggunakannya untuk mengeksekusi resep yang tidak dipetakan ke peristiwa siklus hidup. Anda juga dapat menggunakan perintah Execute Recipes untuk memicu peristiwa Setup dan Configure secara manual.

Selain konsol AWS OpsWorks Stacks, Anda dapat menggunakan AWS CLI atau SDK untuk mengeksekusi resep. Alat-alat ini mendukung semua tindakan AWS OpsWorks Stacks API, tetapi lebih mudah digunakan daripada API. Gunakan perintah CLI create-deployment untuk memicu peristiwa siklus hidup, yang menjalankan semua resep terkait. Anda juga dapat menggunakan perintah ini untuk menjalankan satu atau lebih resep tanpa memicu suatu peristiwa. Kode SDK yang setara tergantung pada bahasa tertentu, tetapi umumnya mirip dengan perintah CLI.

Contoh berikut menjelaskan dua cara untuk menggunakan perintah create-deployment CLI untuk mengotomatiskan penerapan aplikasi.

  • Menerapkan aplikasi Anda pada jadwal reguler dengan menambahkan lapisan kustom dengan satu instance ke tumpukan Anda.

    Tambahkan resep Pengaturan kustom ke lapisan yang membuat cron pekerjaan pada instance untuk menjalankan perintah pada jadwal yang ditentukan. Untuk contoh cara menggunakan resep untuk membuat cron pekerjaan, lihatMenjalankan Cron Jobs di Instans Linux.

  • Tambahkan tugas ke pipeline integrasi berkelanjutan Anda yang menggunakan perintah create-deployment CLI untuk menerapkan aplikasi.

Menggunakan Lingkungan Chef

AWS OpsWorks Tumpukan tidak mendukung lingkungan Chef; node.chef_environment selalu kembali_default.