

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

# Menjalankan Resep pada Instans OpsWorks Stacks Linux
<a name="cookbooks-101-opsworks-opsworks-instance"></a>

**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 Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) 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 OpsWorks Stacks. Topik ini menjelaskan cara menginstal buku masak khusus pada instance 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, lihat[Menjalankan Resep pada Instance Windows](cookbooks-101-opsworks-opsworks-windows.md).

**Topics**
+ [Membuat dan Menjalankan Resep](#opsworks-opsworks-instance-create)
+ [Mengeksekusi Resep Secara Otomatis](#cookbooks-101-opsworks-opsworks-instance-events)
+ [Memecahkan Masalah dan Memperbaiki Resep](#cookbooks-101-opsworks-opsworks-instance-bugs)

## Membuat dan Menjalankan Resep
<a name="opsworks-opsworks-instance-create"></a>

Pertama, Anda perlu membuat tumpukan. Berikut ini secara singkat merangkum cara membuat tumpukan untuk contoh ini. Untuk informasi selengkapnya, lihat [Buat Stack Baru](workingstacks-creating.md).

**Untuk membuat tumpukan**

1. Buka [konsol OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) dan klik **Add Stack**.

1. **Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan klik Tambahkan Tumpukan.**
   + **Nama** - OpsTest
   + **Kunci SSH default** - Sebuah EC2 key pair Amazon

   Jika Anda perlu membuat EC2 key pair Amazon, lihat [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). Perhatikan bahwa key pair harus memiliki wilayah AWS yang sama dengan instans. Contoh menggunakan wilayah AS Barat (Oregon) default.

1. Klik **Tambahkan lapisan** dan [tambahkan lapisan khusus](workinglayers-custom.md) 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.

1. [Tambahkan instance 24/7](workinginstances-add.md) dengan pengaturan default ke layer dan [mulai](workinginstances-starting.md).

Saat instance dimulai — biasanya membutuhkan waktu beberapa menit — Anda dapat membuat buku masak. Contoh ini akan menggunakan versi resep yang sedikit dimodifikasi[Logika Bersyarat](cookbooks-101-basics-ruby.md#cookbooks-101-basics-ruby-conditional), 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.

1. Buat `metadata.rb` file dengan konten berikut dan simpan ke`opstest`.

   ```
   name "opstest"
   version "0.1.0"
   ```

1. Buat `recipes` direktori di dalamnya`opstest`.

1. 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 menelepon`Chef::Log.info`. Anda tidak menggunakan Test Kitchen untuk contoh ini, jadi `log` metode ini tidak terlalu berguna. `Chef::Log.info`menempatkan pesan ke dalam log Chef, yang dapat Anda baca setelah menjalankan Chef selesai. 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 '\$1' dalam tanda kurung teks pesan membuatnya lebih mudah dikenali.

1. Buat `.zip` arsip`opsworks_cookbooks`. Untuk menginstal buku masak Anda pada instance OpsWorks Stacks, Anda harus menyimpannya di repositori dan memberikan OpsWorks Stacks 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](workingcookbook-installingcustom-repo.md)
**catatan**  
Untuk mempermudah, contoh ini hanya mengarsipkan seluruh `opsworks_cookbooks` direktori. Namun, itu berarti 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 gantinya`opsworks_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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

1. [Unggah arsip ke bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html), [buat arsip publik](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html), dan rekam URL arsip.

Anda sekarang dapat menginstal buku masak dan menjalankan resepnya.

**Untuk menjalankan resep**

1. [Edit tumpukan untuk mengaktifkan buku masak khusus](workingcookbook-installingcustom-enable.md), 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.

1. [Jalankan perintah tumpukan Perbarui Buku Masak Kustom](workingstacks-commands.md), yang menginstal versi buku masak kustom Anda saat ini pada instance tumpukan. Jika versi sebelumnya dari buku masak Anda ada, perintah ini menimpanya.

1. Jalankan resep dengan menjalankan perintah tumpukan **Execute Recipes** **dengan Recipes untuk mengeksekusi** set ke**opstest::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](troubleshoot-debug-log.md). 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)
   ...
   ```

1. [Gunakan SSH untuk masuk ke instance](workinginstances-ssh.md) 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
<a name="cookbooks-101-opsworks-opsworks-instance-events"></a>

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. OpsWorks Stacks menyederhanakan menjalankan resep pada instans Anda dengan mendukung serangkaian [peristiwa siklus hidup](workingcookbook-events.md) untuk setiap lapisan: Setup, Configure, Deploy, Undeploy, dan Shutdown. Anda dapat meminta 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.

1. Tambahkan **opstest::default** ke resep **Setup** layer, klik **\$1** untuk menambahkannya ke layer, dan pilih **Save** untuk menyimpan konfigurasi.

1. Pilih **Instances**, tambahkan instance lain ke layer, dan mulai.

   Instance harus diberi nama`opstest2`. Setelah selesai booting, OpsWorks Stacks akan berjalan. `opstest::default`

1. 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](workingstacks-commands.md) (Setup and Configure) atau [perintah deploy](workingapps-deploying.md) (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
<a name="cookbooks-101-opsworks-opsworks-instance-bugs"></a>

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 adalah`amazon`, 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](troubleshoot.md)

Sekarang setelah Anda mengidentifikasi masalahnya, Anda perlu memperbarui resep dan memverifikasi perbaikannya. Anda dapat kembali ke file sumber asli, memperbarui`default.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.

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

1. Gunakan editor teks pada instance untuk mengedit`default.rb`, dan ganti `centos` dengan`amazon`. Resep Anda sekarang harus terlihat seperti berikut ini.

   ```
   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 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 OpsWorks Stacks untuk memicu peristiwa yang sesuai secara manual. Namun, pendekatan ini menjalankan semua resep acara. Berikut pengingat:  
Gunakan [perintah tumpukan](workingstacks-commands.md) untuk memicu peristiwa Pengaturan atau Konfigurasi.
Gunakan [perintah deploy](workingapps-deploying.md) untuk memicu peristiwa Deploy atau Undeploy.