

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

# Resep
<a name="workingcookbook-installingcustom-components-recipes"></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.

Resep adalah aplikasi Ruby yang mendefinisikan konfigurasi sistem. Mereka menginstal paket, membuat file konfigurasi dari template, menjalankan perintah shell, membuat file dan direktori, dan sebagainya. [Anda biasanya memiliki OpsWorks Stacks mengeksekusi resep secara otomatis ketika [peristiwa siklus hidup](workingcookbook-events.md) terjadi pada instance tetapi Anda juga dapat menjalankannya secara eksplisit kapan saja dengan menggunakan perintah stack Execute Recipes.](workingcookbook-executing.md) Untuk informasi lebih lanjut, lihat [Tentang Resep](http://docs.chef.io/recipes.html).

Resep biasanya sebagian besar terdiri dari serangkaian *sumber daya*, yang masing-masing mewakili keadaan yang diinginkan dari suatu aspek sistem. Setiap sumber daya mencakup seperangkat atribut yang menentukan keadaan yang diinginkan dan menentukan tindakan apa yang harus diambil. Chef mengasosiasikan setiap sumber daya dengan *penyedia* yang sesuai yang melakukan tindakan. Untuk informasi selengkapnya, lihat [Referensi Sumber Daya dan Penyedia](https://docs.chef.io/resource.html).

`package`Sumber daya membantu Anda mengelola paket perangkat lunak pada instance Linux. Contoh berikut menginstal paket Apache.

```
...
package 'apache2' do
  case node[:platform]
  when 'centos','redhat','fedora','amazon'
    package_name 'httpd'
  when 'debian','ubuntu'
    package_name 'apache2'
  end
  action :install
end
...
```

Chef menggunakan penyedia paket yang sesuai untuk platform. Atribut sumber daya seringkali hanya diberi nilai, tetapi Anda dapat menggunakan operasi logis Ruby untuk melakukan tugas bersyarat. Contoh menggunakan `case` operator, yang digunakan `node[:platform]` untuk mengidentifikasi sistem operasi instance dan menetapkan `package_name` atribut yang sesuai. Anda dapat menyisipkan atribut ke dalam resep dengan menggunakan sintaks simpul Chef standar dan Chef menggantinya dengan nilai terkait. Anda dapat menggunakan atribut apa pun di objek node, bukan hanya atribut buku masak Anda.

Setelah menentukan nama paket yang sesuai, segmen kode diakhiri dengan `install` tindakan, yang menginstal paket. Tindakan lain untuk sumber daya ini termasuk `upgrade` dan`remove`. Untuk informasi lebih lanjut, lihat [paket](https://docs.chef.io/chef/resources.html#id150).

Seringkali berguna untuk memecah tugas instalasi dan konfigurasi yang kompleks menjadi satu atau lebih subtugas, masing-masing diimplementasikan sebagai resep terpisah, dan meminta resep utama Anda menjalankannya pada waktu yang tepat. Contoh berikut menunjukkan baris kode yang mengikuti contoh sebelumnya:

```
include_recipe 'apache2::service'
```

Untuk memiliki resep mengeksekusi resep anak, gunakan `include_recipe` kata kunci, diikuti dengan nama resep. Resep diidentifikasi dengan menggunakan `CookbookName::RecipeName` sintaks Chef standar, di mana `RecipeName` menghilangkan ekstensi. `.rb`

**catatan**  
Sebuah `include_recipe` pernyataan secara efektif mengeksekusi resep pada saat itu dalam resep utama. Namun, yang sebenarnya terjadi adalah Chef mengganti setiap `include_recipe` pernyataan dengan kode resep yang ditentukan sebelum mengeksekusi resep utama.

`directory`Sumber daya mewakili direktori, seperti direktori yang berisi file paket. `default.rb`Sumber daya berikut membuat direktori log Linux.

```
directory node[:apache][:log_dir] do
    mode 0755
    action :create
end
```

Direktori log didefinisikan dalam salah satu file atribut buku masak. Sumber daya menentukan mode direktori sebagai 0755, dan menggunakan `create` tindakan untuk membuat direktori. Untuk informasi selengkapnya, lihat [direktori](https://docs.chef.io/chef/resources.html#directory). Anda juga dapat menggunakan sumber daya ini dengan instance Windows.

Sumber `execute` daya mewakili perintah, seperti perintah shell atau skrip. Contoh berikut menghasilkan file module.load.

```
execute 'generate-module-list' do
  if node[:kernel][:machine] == 'x86_64'
    libdir = 'lib64'
  else
    libdir = 'lib'
  end
  command "/usr/local/bin/apache2_module_conf_generate.pl /usr/#{libdir}/httpd/modules /etc/httpd/mods-available"
  action :run
end
```

Sumber daya pertama-tama menentukan jenis CPU. `[:kernel][:machine]`adalah salah satu atribut otomatis yang dihasilkan Chef untuk mewakili berbagai properti sistem, tipe CPU dalam kasus ini. Kemudian menentukan perintah, skrip Perl dan menggunakan `run` tindakan untuk menjalankan skrip, yang menghasilkan file.load modul. Untuk informasi selengkapnya, lihat [mengeksekusi](https://docs.chef.io/chef/resources.html#execute).

`template`Sumber daya mewakili file — biasanya file konfigurasi — yang akan dihasilkan dari salah satu file template buku masak. Contoh berikut membuat file `httpd.conf` konfigurasi dari `apache2.conf.erb` template yang dibahas di[Template](workingcookbook-installingcustom-components-templates.md).

```
template 'apache2.conf' do
  case node[:platform]
  when 'centos','redhat','fedora','amazon'
    path "#{node[:apache][:dir]}/conf/httpd.conf"
  when 'debian','ubuntu'
    path "#{node[:apache][:dir]}/apache2.conf"
  end
  source 'apache2.conf.erb'
  owner 'root'
  group 'root'
  mode 0644
  notifies :restart, resources(:service => 'apache2')
end
```

Sumber daya menentukan nama dan lokasi file yang dihasilkan berdasarkan sistem operasi instance. Kemudian menentukan `apache2.conf.erb` sebagai template yang akan digunakan untuk menghasilkan file dan menetapkan pemilik, grup, dan mode file. Ini menjalankan `notify` tindakan untuk memberi tahu `service` sumber daya yang mewakili server Apache untuk me-restart server. Untuk informasi selengkapnya, lihat [template](https://docs.chef.io/chef/resources.html#template).