Struktur Resep - AWS OpsWorks

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

Struktur Resep

penting

Bagian AWS OpsWorks Stacks layanan 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: posting atau melalui AWS Dukungan Premium.

Buku masak pada dasarnya adalah seperangkat resep, yang dapat melakukan berbagai macam tugas pada sebuah instance. Untuk memperjelas cara menerapkan resep, ada baiknya melihat contoh sederhana. Berikut ini adalah resep pengaturan untuk HAProxylapisan bawaan. Fokus saja pada struktur keseluruhan pada saat ini dan jangan terlalu khawatir tentang detailnya; mereka akan dibahas dalam contoh berikutnya.

package 'haproxy' do action :install end if platform?('debian','ubuntu') template '/etc/default/haproxy' do source 'haproxy-default.erb' owner 'root' group 'root' mode 0644 end end include_recipe 'haproxy::service' service 'haproxy' do action [:enable, :start] end template '/etc/haproxy/haproxy.cfg' do source 'haproxy.cfg.erb' owner 'root' group 'root' mode 0644 notifies :restart, "service[haproxy]" end
catatan

Untuk ini dan contoh lain dari resep kerja dan file terkait, lihat AWS OpsWorks Tumpukan resep bawaan.

Contoh ini menyoroti elemen resep utama, yang dijelaskan di bagian berikut.

Sumber daya

Resep sebagian besar terdiri dari satu set sumber daya Chef. Masing-masing menentukan aspek tertentu dari status akhir instance, seperti paket yang akan diinstal atau layanan yang akan dimulai. Contoh ini memiliki empat sumber daya:

  • packageSumber daya, yang mewakili paket yang diinstal, HAProxyserver untuk contoh ini.

  • serviceSumber daya, yang mewakili layanan, HAProxy layanan untuk contoh ini.

  • Dua template sumber daya, yang mewakili file yang akan dibuat dari template tertentu, dua file HAProxy konfigurasi untuk contoh ini.

Sumber daya menyediakan cara deklaratif untuk menentukan status instance. Di belakang layar, setiap sumber daya memiliki penyedia terkait yang melakukan tugas yang diperlukan, seperti menginstal paket, membuat dan mengonfigurasi direktori, memulai layanan, dan sebagainya. Jika detail tugas bergantung pada sistem operasi tertentu, sumber daya memiliki banyak penyedia dan menggunakan yang sesuai untuk sistem. Misalnya, pada sistem Red Hat Linux yang digunakan package penyedia yum untuk menginstal paket. Pada sistem Ubuntu Linux, package penyedia menggunakanapt-get.

Anda menerapkan sumber daya sebagai blok kode Ruby dengan format umum berikut.

resource_type "resource_name" do attribute1 'value1' attribute2 'value2' ... action :action_name notifies : action 'resource' end

Elemen-elemennya adalah:

Jenis sumber daya

(Wajib) Contoh ini mencakup tiga jenis sumber dayapackage,service,, dantemplate.

Nama sumber daya

(Wajib) Nama mengidentifikasi sumber daya tertentu dan kadang-kadang digunakan sebagai nilai default untuk salah satu atribut. Dalam contoh, package merupakan sumber daya paket bernama haproxy dan template sumber daya pertama mewakili file konfigurasi bernama/etc/default/haproxy.

Atribut

(Opsional) Atribut menentukan konfigurasi sumber daya dan bervariasi tergantung pada jenis sumber daya dan bagaimana Anda ingin mengonfigurasi sumber daya.

  • templateSumber daya contoh secara eksplisit mendefinisikan sekumpulan atribut yang menentukan sumber, pemilik, grup, dan mode file yang dibuat.

  • Contoh package dan service sumber daya tidak secara eksplisit mendefinisikan atribut apa pun.

    Nama sumber daya biasanya merupakan nilai default untuk atribut yang diperlukan dan terkadang semua yang diperlukan. Misalnya, nama sumber daya adalah nilai default untuk package_name atribut package sumber daya, yang merupakan satu-satunya atribut yang diperlukan.

Ada juga beberapa atribut khusus yang disebut atribut penjaga, yang menentukan kapan penyedia sumber daya akan mengambil tindakan. Misalnya, only_if atribut mengarahkan penyedia sumber daya untuk mengambil tindakan hanya jika kondisi tertentu terpenuhi. HAProxyResepnya tidak menggunakan atribut penjaga, tetapi digunakan oleh beberapa contoh berikut.

Tindakan dan Pemberitahuan

(Opsional) Tindakan dan pemberitahuan menentukan tugas apa yang harus dilakukan penyedia.

  • actionmengarahkan penyedia untuk mengambil tindakan tertentu, seperti menginstal atau membuat.

    Setiap sumber daya memiliki serangkaian tindakan yang bergantung pada sumber daya tertentu, salah satunya adalah tindakan default. Dalam contoh, tindakan package sumber daya adalahinstall, yang mengarahkan penyedia untuk menginstal paket. templateSumber daya pertama tidak memiliki action elemen, sehingga penyedia mengambil create tindakan default.

  • notifiesmengarahkan penyedia sumber daya lain untuk melakukan tindakan, tetapi hanya jika status sumber daya telah berubah.

    notifiesbiasanya digunakan dengan sumber daya seperti template dan file untuk melakukan tugas-tugas seperti memulai kembali layanan setelah memodifikasi file konfigurasi. Sumber daya tidak memiliki pemberitahuan default. Jika Anda menginginkan notifikasi, sumber daya harus memiliki notifies elemen eksplisit. Dalam HAProxy resep, template sumber daya kedua memberi tahu sumber daya haproxy service untuk memulai ulang HAProxy layanan jika file konfigurasi terkait telah berubah.

Sumber daya terkadang bergantung pada sistem operasi.

  • Beberapa sumber daya hanya dapat digunakan pada sistem Linux atau Windows.

    Misalnya, paket menginstal paket pada sistem Linux dan windows_package menginstal paket pada sistem Windows.

  • Beberapa sumber daya dapat digunakan dengan sistem operasi apa pun, tetapi memiliki atribut yang spesifik untuk sistem tertentu.

    Misalnya, sumber daya file dapat digunakan pada sistem Linux atau Windows, tetapi memiliki set atribut terpisah untuk mengonfigurasi izin.

Untuk deskripsi sumber daya standar, termasuk atribut, tindakan, dan pemberitahuan yang tersedia untuk setiap sumber daya, lihat Tentang Sumber Daya dan Penyedia.

Kontrol Aliran

Karena resep adalah aplikasi Ruby, Anda dapat menggunakan struktur kontrol Ruby untuk memasukkan kontrol aliran ke dalam resep. Misalnya, Anda dapat menggunakan logika bersyarat Ruby agar resep berperilaku berbeda pada sistem yang berbeda. HAProxyResep termasuk if blok yang menggunakan template sumber daya untuk membuat file konfigurasi, tetapi hanya jika resep berjalan pada sistem Debian atau Ubuntu.

Skenario umum lainnya adalah menggunakan loop untuk mengeksekusi sumber daya beberapa kali dengan pengaturan atribut yang berbeda. Misalnya, Anda dapat membuat satu set direktori dengan menggunakan loop untuk mengeksekusi directory sumber daya beberapa kali dengan nama direktori yang berbeda.

catatan

Jika Anda tidak terbiasa dengan Ruby, lihat Just Enough Ruby for Chef, yang mencakup apa yang perlu Anda ketahui untuk sebagian besar resep.

Termasuk Resep

include_recipetermasuk resep lain dalam kode Anda, yang memungkinkan Anda untuk memodulasi resep Anda dan menggunakan kembali kode yang sama dalam beberapa resep. Saat Anda menjalankan resep host, Chef mengganti setiap include_recipe elemen dengan kode resep yang ditentukan sebelum mengeksekusi resep host. Anda mengidentifikasi resep yang disertakan dengan menggunakan cookbook_name::recipe_name sintaks Chef standar, di mana recipe_name menghilangkan ekstensi. .rb Contohnya termasuk satu resep,haproxy::service, yang mewakili HAProxy layanan.

catatan

Jika Anda menggunakan include_recipe resep yang berjalan pada Chef 11.10 dan yang lebih baru untuk menyertakan resep dari buku masak lain, Anda harus menggunakan depends pernyataan untuk mendeklarasikan ketergantungan dalam file buku masak. metadata.rb Untuk informasi selengkapnya, lihat Resep Penerapan: Chef 11.10.