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
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
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:
-
package
Sumber daya, yang mewakili paket yang diinstal, HAProxyserveruntuk contoh ini. -
service
Sumber 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
" doattribute1
'value1
'attribute2
'value2
' ... action :action_name
notifies :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,
package
merupakan sumber daya paket bernamahaproxy
dantemplate
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.
-
template
Sumber daya contoh secara eksplisit mendefinisikan sekumpulan atribut yang menentukan sumber, pemilik, grup, dan mode file yang dibuat. -
Contoh
package
danservice
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
atributpackage
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.
-
action
mengarahkan 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.template
Sumber daya pertama tidak memilikiaction
elemen, sehingga penyedia mengambilcreate
tindakan default. -
notifies
mengarahkan penyedia sumber daya lain untuk melakukan tindakan, tetapi hanya jika status sumber daya telah berubah.notifies
biasanya digunakan dengan sumber daya sepertitemplate
danfile
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 memilikinotifies
elemen eksplisit. Dalam HAProxy resep,template
sumber daya kedua memberi tahu sumber daya haproxyservice
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
Termasuk Resep
include_recipe
termasuk 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.