Langkah 3: Membuat dan Menyebarkan Buku Masak Kustom - AWS OpsWorks

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

Langkah 3: Membuat dan Menyebarkan Buku Masak Kustom

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 Support Tim di AWS re:Post atau melalui AWS Dukungan Premium.

Saat ini, tumpukan belum cukup fungsional; Anda perlu mengaktifkan aplikasi Anda untuk mengakses server Redis. Pendekatan yang paling fleksibel adalah menempatkan file YAMM dengan informasi akses di config subfolder aplikasi. Aplikasi kemudian dapat memperoleh informasi dari file. Dengan menggunakan pendekatan ini, Anda dapat mengubah informasi koneksi tanpa menulis ulang dan memindahkan aplikasi. Untuk contoh ini, file harus diberi nama redis.yml dan berisi nama host ElastiCache cluster dan port, sebagai berikut:

host: cache-cluster-hostname port: cache-cluster-port

Anda dapat menyalin file ini secara manual ke server Anda, tetapi pendekatan yang lebih baik adalah menerapkan resep Chef untuk menghasilkan file, dan meminta AWS OpsWorks Stacks menjalankan resep di setiap server. Resep koki adalah aplikasi Ruby khusus yang digunakan AWS OpsWorks Stacks untuk melakukan tugas pada instance seperti menginstal paket atau membuat file konfigurasi. Resep dikemas dalam buku masak, yang dapat berisi beberapa resep dan file terkait seperti templat untuk file konfigurasi. Buku masak ditempatkan di repositori, seperti GitHub, dan harus memiliki struktur direktori standar. Jika Anda belum memiliki repositori buku masak khusus, lihat Repositori Buku Masak untuk informasi tentang cara mengaturnya.

Untuk contoh ini, tambahkan buku masak bernama redis-config ke repositori buku masak Anda dengan konten berikut:

my_cookbook_repository redis-config recipes generate.rb templates default redis.yml.erb

recipesFolder berisi resep bernamagenerate.rb, yang menghasilkan file konfigurasi aplikasi dariredis.yml.erb, sebagai berikut:

node[:deploy].each do |app_name, deploy_config| # determine root folder of new app deployment app_root = "#{deploy_config[:deploy_to]}/current" # use template 'redis.yml.erb' to generate 'config/redis.yml' template "#{app_root}/config/redis.yml" do source "redis.yml.erb" cookbook "redis-config" # set mode, group and owner of generated file mode "0660" group deploy_config[:group] owner deploy_config[:user] # define variable “@redis” to be used in the ERB template variables( :redis => deploy_config[:redis] || {} ) # only generate a file if there is Redis configuration not_if do deploy_config[:redis].blank? end end end

Resepnya bergantung pada data dari konfigurasi tumpukan AWS OpsWorks Stacks dan objek JSON penerapan, yang diinstal pada setiap instance dan berisi informasi terperinci tentang tumpukan dan aplikasi apa pun yang diterapkan. deployNode objek memiliki struktur sebagai berikut:

{ ... "deploy": { "app1": { "application" : "short_name", ... } "app2": { ... } ... } }

Node deploy berisi satu set objek JSON yang disematkan, satu untuk setiap aplikasi yang di-deploy, yang diberi nama dengan nama pendek aplikasi. Setiap objek aplikasi berisi sekumpulan atribut yang menentukan konfigurasi aplikasi, seperti root dokumen dan jenis aplikasi. Untuk daftar atribut penerapan, lihatmenyebarkan Atribut. Resep dapat menggunakan sintaks atribut Chef untuk mewakili konfigurasi tumpukan dan penerapan nilai JSON. Misalnya, [:deploy][:app1][:application] mewakili nama pendek aplikasi app1.

Untuk setiap aplikasi di[:deploy], resep mengeksekusi blok kode terkait, yang deploy_config mewakili atribut app. Resep pertama disetel app_root ke direktori root aplikasi,[:deploy][:app_name][:deploy_to]/current. Kemudian menggunakan sumber daya template Chef untuk menghasilkan file konfigurasi dari redis.yml.erb dan menempatkannya di fileapp_root/config.

File konfigurasi biasanya dibuat dari templat, dengan banyak jika tidak sebagian besar pengaturan ditentukan oleh atribut Chef. Dengan atribut Anda dapat mengubah pengaturan menggunakan JSON kustom, seperti yang dijelaskan nanti, alih-alih menulis ulang file template.Template berisi yang berikutredis.yml.erb:

host: <%= @redis[:host] %> port: <%= @redis[:port] || 6379 %>

Elemen <%... %> adalah placeholder yang mewakili nilai atribut.

  • <%= @redis[:host] %>mewakili nilairedis[:host], yang merupakan nama host cluster cache.

  • <%= @redis[:port] || 6379 %>mewakili nilai redis[:port] atau, jika atribut itu tidak didefinisikan, nilai port default, 6379.

Sumber template daya berfungsi sebagai berikut:

  • sourcedan cookbook tentukan nama template dan buku masak, masing-masing.

  • mode,group, dan owner berikan file konfigurasi hak akses yang sama dengan aplikasi.

  • variablesBagian ini menetapkan @redis variabel yang digunakan dalam template, ke nilai [:redis] atribut aplikasi.

    Nilai [:redis] atribut ditetapkan dengan menggunakan JSON kustom, seperti yang dijelaskan nanti; ini bukan salah satu atribut aplikasi standar.

  • not_ifArahan memastikan bahwa resep tidak menghasilkan file konfigurasi jika sudah ada.

Setelah Anda menulis buku masak, Anda harus menerapkannya ke cache buku masak masing-masing instance. Operasi ini tidak menjalankan resep; itu hanya menginstal buku masak baru pada instance tumpukan. Anda biasanya menjalankan resep dengan menetapkannya ke peristiwa siklus hidup lapisan, seperti yang dijelaskan nanti.

Untuk menyebarkan buku masak kustom Anda
  1. Pada halaman AWS OpsWorks Stacks Stack, klik Stack Settings dan kemudian Edit.

  2. Di bagian Manajemen Konfigurasi, atur Gunakan buku masak Chef kustom ke Ya, masukkan informasi repositori buku masak, dan klik Simpan untuk memperbarui konfigurasi tumpukan.

  3. Pada halaman Stack, klik Run Command, pilih perintah Update Custom Cookbooks stack, dan klik Update Custom Cookbooks untuk menginstal buku masak baru di cache buku masak instance.

Jika Anda memodifikasi buku masak Anda, jalankan Perbarui Buku Masak Kustom lagi untuk menginstal versi yang diperbarui. Untuk informasi lebih lanjut tentang prosedur ini, lihatMemasang Buku Masak Kustom.