Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Struktur Resep
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
Buku masak pada dasarnya adalah seperangkat resep, yang dapat melakukan berbagai 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 resep bawaan OpsWorks Tumpukan
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. Contohnya memiliki empat sumber daya:
-
packageSumber daya, yang mewakili paket yang diinstal, HAProxy serveruntuk contoh ini. -
serviceSumber daya, yang mewakili layanan, HAProxy layanan untuk contoh ini. -
Dua
templatesumber 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" doattribute1'value1'attribute2'value2' ... action :action_namenotifies :action'resource' end
Elemen-elemennya adalah:
- Jenis sumber daya
-
(Wajib) Contoh ini mencakup tiga jenis sumber daya
package,service,, dantemplate. - Nama sumber daya
-
(Wajib) Nama mengidentifikasi sumber daya tertentu dan kadang-kadang digunakan sebagai nilai default untuk salah satu atribut. Dalam contoh,
packagemerupakan sumber daya paket bernamahaproxydantemplatesumber 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
packagedanservicesumber 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_nameatributpackagesumber 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_ifatribut mengarahkan penyedia sumber daya untuk mengambil tindakan hanya jika kondisi tertentu terpenuhi. HAProxy Resepnya 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
packagesumber daya adalahinstall, yang mengarahkan penyedia untuk menginstal paket.templateSumber daya pertama tidak memilikiactionelemen, sehingga penyedia mengambilcreatetindakan default. -
notifiesmengarahkan penyedia sumber daya lain untuk melakukan tindakan, tetapi hanya jika status sumber daya telah berubah.notifiesbiasanya digunakan dengan sumber daya sepertitemplatedanfileuntuk melakukan tugas-tugas seperti memulai kembali layanan setelah memodifikasi file konfigurasi. Sumber daya tidak memiliki pemberitahuan default. Jika Anda menginginkan notifikasi, sumber daya harus memilikinotifieselemen eksplisit. Dalam HAProxy resep,templatesumber daya kedua memberi tahu sumber daya haproxyserviceuntuk 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. HAProxy Resep 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
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.