Menjalankan Resep pada Instans AWS OpsWorks Stacks Linux - AWS OpsWorks

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

Menjalankan Resep pada Instans AWS OpsWorks Stacks Linux

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.

Test Kitchen dan Vagrant menyediakan cara sederhana dan efisien untuk mengimplementasikan buku masak, tetapi untuk memverifikasi bahwa resep buku masak akan berjalan dengan benar dalam produksi, Anda harus menjalankannya pada instance AWS OpsWorks Stacks. Topik ini menjelaskan cara menginstal buku masak khusus pada instance AWS OpsWorks Stacks Linux dan menjalankan resep sederhana. Topik ini juga memberikan beberapa tips untuk memperbaiki bug resep secara efisien.

Untuk deskripsi tentang cara menjalankan resep pada instance Windows, lihatMenjalankan Resep pada Instance Windows.

Membuat dan Menjalankan Resep

Pertama, Anda perlu membuat tumpukan. Berikut ini secara singkat merangkum cara membuat tumpukan untuk contoh ini. Untuk informasi selengkapnya, lihat Buat Stack Baru.

Untuk membuat tumpukan
  1. Buka konsol AWS OpsWorks Stacks dan klik Add Stack.

  2. Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan klik Tambahkan Tumpukan.

    • Nama - OpsTest

    • Kunci SSH default - Sebuah key pair Amazon EC2

    Jika Anda perlu membuat key pair Amazon EC2, lihat Amazon EC2 Key Pairs. Perhatikan bahwa key pair harus memiliki wilayah AWS yang sama dengan instans. Contoh menggunakan wilayah AS Barat (Oregon) default.

  3. Klik Tambahkan lapisan dan tambahkan lapisan khusus ke tumpukan dengan pengaturan berikut.

    • Nama - OpsTest

    • Nama pendek — opstest

    Tipe lapisan apa pun sebenarnya akan berfungsi untuk tumpukan Linux, tetapi contohnya tidak memerlukan paket apa pun yang diinstal oleh jenis lapisan lain, jadi lapisan khusus adalah pendekatan yang paling sederhana.

  4. Tambahkan instance 24/7 dengan pengaturan default ke layer dan mulai.

Saat instance dimulai — biasanya membutuhkan waktu beberapa menit — Anda dapat membuat buku masak. Contoh ini akan menggunakan versi resep yang sedikit dimodifikasiLogika Bersyarat, yang membuat direktori data yang namanya tergantung pada platform.

Untuk mengatur buku masak
  1. Buat direktori dalam opsworks_cookbooks bernama opstest dan navigasikan ke sana.

  2. Buat metadata.rb file dengan konten berikut dan simpan keopstest.

    name "opstest" version "0.1.0"
  3. Buat recipes direktori di dalamnyaopstest.

  4. Buat default.rb file dengan resep berikut dan simpan ke recipes direktori.

    Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "centos" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) directory data_dir do mode 0755 owner 'root' group 'root' recursive true action :create end

    Perhatikan bahwa resep mencatat pesan, tetapi ia melakukannya dengan meneleponChef::Log.info. Anda tidak menggunakan Test Kitchen untuk contoh ini, jadi log metode ini tidak terlalu berguna. Chef::Log.infomenempatkan pesan ke dalam log Chef, yang dapat Anda baca setelah menjalankan Chef selesai. AWS OpsWorks Stacks menyediakan cara mudah untuk melihat log ini, seperti yang dijelaskan nanti.

    catatan

    Log koki biasanya berisi banyak informasi rutin dan relatif tidak menarik. Karakter '*' dalam tanda kurung teks pesan membuatnya lebih mudah dikenali.

  5. Buat .zip arsipopsworks_cookbooks. Untuk menginstal buku masak Anda pada instance AWS OpsWorks Stacks, Anda harus menyimpannya di repositori dan menyediakan AWS OpsWorks Stacks dengan informasi yang diperlukan untuk mengunduh buku masak ke instance. Anda dapat menyimpan buku masak Anda di salah satu dari beberapa jenis repositori yang didukung. Contoh ini menyimpan file arsip yang berisi buku masak di bucket Amazon S3. Untuk informasi lebih lanjut tentang repositori buku masak, lihat. Repositori Buku Masak

    catatan

    Untuk mempermudah, contoh ini hanya mengarsipkan seluruh opsworks_cookbooks direktori. Namun, itu berarti AWS OpsWorks Stacks akan mengunduh semua buku masak opsworks_cookbooks ke instance, meskipun Anda hanya akan menggunakan salah satunya. Untuk menginstal hanya contoh buku masak, buat direktori induk lain dan pindah opstest ke direktori itu. Kemudian buat .zip arsip direktori induk dan gunakan sebagai gantinyaopsworks_cookbooks.zip.

    Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat Bagaimana Cara Mengosongkan Bucket S3? atau Bagaimana Saya Menghapus Bucket S3? .

  6. Unggah arsip ke bucket Amazon S3, buat arsip publik, dan rekam URL arsip.

Anda sekarang dapat menginstal buku masak dan menjalankan resepnya.

Untuk menjalankan resep
  1. Edit tumpukan untuk mengaktifkan buku masak khusus, dan tentukan pengaturan berikut.

    • Jenis repositori - Arsip S3

    • URL Repositori — URL arsip buku masak yang Anda rekam sebelumnya

    Gunakan nilai default untuk pengaturan lain dan klik Simpan untuk memperbarui konfigurasi tumpukan.

  2. Jalankan perintah tumpukan Perbarui Buku Masak Kustom, yang menginstal versi buku masak kustom Anda saat ini pada instance tumpukan. Jika versi sebelumnya dari buku masak Anda ada, perintah ini menimpanya.

  3. Jalankan resep dengan menjalankan perintah tumpukan Execute Recipes dengan Recipes untuk mengeksekusi set keopstest::default. Perintah ini memulai menjalankan Chef, dengan daftar run yang terdiri dari. opstest::default

Setelah resep berjalan dengan sukses, Anda dapat memverifikasinya.

Untuk memverifikasi opstest
  1. Langkah pertama adalah memeriksa log Chef. Klik tampilkan di kolom Log instans opstest1 untuk menampilkan log. Gulir ke bawah dan Anda akan melihat pesan log Anda di dekat bagian bawah.

    ... [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache. [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache. [2014-07-31T17:01:46+00:00] INFO: ******Creating a data directory.****** [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3) ...
  2. Gunakan SSH untuk masuk ke instance dan daftar isi. /srv/www/

Jika Anda mengikuti semua langkah, Anda akan melihat /srv/www/config bukan /srv/www/shared direktori yang Anda harapkan. Bagian berikut memberikan beberapa pedoman untuk memperbaiki bug tersebut dengan cepat.

Mengeksekusi Resep Secara Otomatis

Perintah Execute Recipes adalah cara mudah untuk menguji resep khusus, itulah sebabnya ia digunakan di sebagian besar contoh ini. Namun, dalam praktiknya, Anda biasanya menjalankan resep pada titik standar dalam siklus hidup instans, seperti setelah instance selesai booting atau saat Anda menerapkan aplikasi. AWS OpsWorks Stacks menyederhanakan menjalankan resep pada instans Anda dengan mendukung serangkaian peristiwa siklus hidup untuk setiap lapisan: Setup, Configure, Deploy, Undeploy, dan Shutdown. Anda dapat meminta AWS OpsWorks Stacks menjalankan resep secara otomatis pada instance layer dengan menetapkan resep ke peristiwa siklus hidup yang sesuai.

Anda biasanya akan membuat direktori segera setelah instance selesai booting, yang sesuai dengan peristiwa Setup. Berikut ini menunjukkan cara menjalankan contoh resep saat penyiapan, menggunakan tumpukan yang sama yang Anda buat sebelumnya dalam contoh. Anda dapat menggunakan prosedur yang sama untuk acara lainnya.

Untuk menjalankan resep secara otomatis saat penyiapan
  1. Pilih Layers di panel navigasi dan kemudian pilih ikon pensil di sebelah link Recipes OpsTest layer.

  2. Tambahkan opstest::default ke resep Setup layer, klik + untuk menambahkannya ke layer, dan pilih Save untuk menyimpan konfigurasi.

  3. Pilih Instances, tambahkan instance lain ke layer, dan mulai.

    Instance harus diberi namaopstest2. Setelah selesai booting, AWS OpsWorks Stacks akan berjalan. opstest::default

  4. Setelah opstest2 instance online, verifikasi yang /srv/www/shared ada.

catatan

Jika Anda telah menetapkan resep ke acara Setup, Configure, atau Deploy, Anda juga menjalankannya secara manual dengan menggunakan perintah stack (Setup and Configure) atau perintah deploy (Deploy) untuk memicu peristiwa. Perhatikan bahwa jika Anda memiliki beberapa resep yang ditetapkan untuk suatu peristiwa, perintah ini menjalankan semuanya.

Memecahkan Masalah dan Memperbaiki Resep

Jika Anda tidak mendapatkan hasil yang diharapkan, atau resep Anda bahkan tidak berjalan dengan sukses, pemecahan masalah biasanya dimulai dengan memeriksa log Chef. Ini berisi deskripsi rinci tentang proses dan termasuk pesan log inline dari resep Anda. Log sangat berguna jika resep Anda gagal. Ketika itu terjadi, Chef mencatat kesalahan, termasuk jejak tumpukan.

Jika resepnya berhasil, seperti contoh ini, log Chef seringkali tidak banyak membantu. Dalam hal ini, Anda dapat mengetahui masalahnya dengan hanya melihat lebih dekat resepnya, beberapa baris pertama khususnya:

Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "centos" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) ...

CentOS adalah stand-in yang masuk akal untuk Amazon Linux saat Anda menguji resep di Vagrant, tetapi sekarang Anda menjalankan instance Amazon Linux yang sebenarnya. Nilai platform untuk Amazon Linux adalahamazon, yang tidak termasuk dalam value_for_platform panggilan, sehingga resep dibuat secara /srv/www/config default. Untuk informasi selengkapnya tentang pemecahan masalah, lihat. Panduan Debugging dan Pemecahan Masalah

Sekarang setelah Anda mengidentifikasi masalahnya, Anda perlu memperbarui resep dan memverifikasi perbaikannya. Anda dapat kembali ke file sumber asli, memperbaruidefault.rb, mengunggah arsip baru ke Amazon S3, dan sebagainya. Namun, proses itu bisa sedikit membosankan dan memakan waktu. Berikut ini menunjukkan pendekatan yang jauh lebih cepat yang sangat berguna untuk bug resep sederhana seperti yang ada di contoh: edit resep pada instance.

Untuk mengedit resep pada sebuah instance
  1. Gunakan SSH untuk masuk ke instance dan kemudian jalankan sudo su untuk meningkatkan hak istimewa Anda. Anda memerlukan hak akses root untuk mengakses direktori buku masak.

  2. AWS OpsWorks Stacks menyimpan buku masak Anda/opt/aws/opsworks/current/site-cookbooks, jadi navigasikan ke. /opt/aws/opsworks/current/site-cookbooks/opstest/recipes

    catatan

    AWS OpsWorks Stacks juga menyimpan salinan buku masak Anda di. /opt/aws/opsworks/current/merged-cookbooks Jangan edit buku masak itu. Saat Anda menjalankan resep, AWS OpsWorks Stacks menyalin buku masak dari .../site-cookbooks ke.../merged-cookbooks, sehingga setiap perubahan yang Anda buat .../merged-cookbooks akan ditimpa.

  3. Gunakan editor teks pada instance untuk mengeditdefault.rb, dan ganti centos denganamazon. Resep Anda sekarang harus terlihat seperti berikut.

    Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "amazon" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) ...

Untuk memverifikasi perbaikan, jalankan resep dengan menjalankan perintah stack Execute Recipe lagi. Instance sekarang harus memiliki /srv/www/shared direktori. Jika Anda perlu membuat perubahan lebih lanjut pada resep, Anda dapat menjalankan Execute Recipe sesering yang Anda suka; Anda tidak perlu berhenti dan memulai ulang instance setiap kali Anda menjalankan perintah. Ketika Anda puas bahwa resepnya berfungsi dengan benar, jangan lupa untuk memperbarui kode di buku masak sumber Anda.

catatan

Jika Anda telah menetapkan resep Anda ke acara siklus hidup sehingga AWS OpsWorks Stacks menjalankannya secara otomatis, Anda selalu dapat menggunakan Execute Recipe untuk menjalankan kembali resep. Anda juga dapat menjalankan kembali resep sebanyak yang Anda inginkan tanpa memulai ulang instance dengan menggunakan konsol AWS OpsWorks Stacks untuk memicu peristiwa yang sesuai secara manual. Namun, pendekatan ini menjalankan semua resep acara. Berikut pengingat: