Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh 8: Mengelola Layanan
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
Paket seperti server aplikasi biasanya memiliki layanan terkait yang harus dimulai, dihentikan, dimulai ulang, dan sebagainya. Misalnya, Anda perlu memulai layanan Tomcat setelah menginstal paket atau setelah instance selesai booting, dan restart layanan setiap kali Anda memodifikasi file konfigurasi. Topik ini membahas dasar-dasar bagaimana mengelola layanan pada instance Linux, menggunakan server aplikasi Tomcat sebagai contoh. Sumber daya layanan bekerja dengan cara yang sama pada instance Windows, meskipun ada beberapa perbedaan secara detail. Untuk informasi selengkapnya, lihat service
catatan
Contohnya melakukan instalasi Tomcat yang sangat minim, cukup untuk menunjukkan dasar-dasar cara menggunakan service sumber daya. Untuk contoh bagaimana menerapkan resep untuk server Tomcat yang lebih fungsional, lihatMembuat Layer Server Tomcat Kustom.
Topik
Mendefinisikan dan Memulai Layanan
Bagian ini menunjukkan dasar-dasar cara mendefinisikan dan memulai layanan.
Untuk memulai
-
Di
opsworks_cookbooksdirektori, buat direktori bernamatomcatdan navigasikan ke sana. -
Tambahkan
metadata.rbfiletomcatdengan konten berikut.name "tomcat" version "0.1.0" -
Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalamContoh 1: Menginstal Paket, dan hapus CentOS dari
platformsdaftar. -
Tambahkan
recipessubdirektori ketomcat.
Anda menggunakan service
execute "install_updates" do command "apt-get update" end package "tomcat7" do action :install end include_recipe 'tomcat::service' service 'tomcat' do action :start end
Resepnya melakukan hal berikut:
-
Sumber
executedaya berjalanapt-get updateuntuk menginstal pembaruan sistem saat ini.Untuk contoh Ubuntu yang digunakan dalam contoh ini, Anda harus menginstal pembaruan sebelum menginstal Tomcat. Sistem lain mungkin memiliki persyaratan yang berbeda.
-
Sumber
packagedaya menginstal Tomcat 7. -
tomcat::serviceResep yang disertakan mendefinisikan layanan dan dibahas nanti. -
Sumber
servicedaya memulai layanan Tomcat.Anda juga dapat menggunakan sumber daya ini untuk mengeluarkan perintah lain, seperti menghentikan dan memulai ulang layanan.
Contoh berikut menunjukkan tomcat::service resepnya.
service 'tomcat' do service_name "tomcat7" supports :restart => true, :reload => false, :status => true action :nothing end
Resep ini menciptakan definisi layanan Tomcat sebagai berikut:
-
Nama sumber daya
tomcat,, digunakan oleh resep lain untuk referensi layanan.Misalnya,
default.rbreferensitomcatuntuk memulai layanan. -
Sumber
service_namedaya menentukan nama layanan.Saat Anda mencantumkan layanan pada instance, layanan Tomcat akan diberi nama tomcat7.
-
supportsmenentukan bagaimana Chef mengelola layananrestart,reload, danstatusperintah.-
truemenunjukkan bahwa Chef dapat menggunakan skrip init atau penyedia layanan lain untuk menjalankan perintah. -
falsemenunjukkan bahwa Chef harus mencoba menjalankan perintah dengan cara lain.
-
Perhatikan bahwa action diatur ke:nothing, yang mengarahkan sumber daya untuk tidak mengambil tindakan. Sumber daya layanan mendukung tindakan seperti start danrestart. Namun, buku masak ini mengikuti praktik standar menggunakan definisi layanan yang tidak mengambil tindakan dan memulai atau memulai kembali layanan di tempat lain. Setiap resep yang memulai atau memulai ulang layanan harus terlebih dahulu mendefinisikannya, jadi pendekatan paling sederhana adalah menempatkan definisi layanan dalam resep terpisah dan memasukkannya ke dalam resep lain sesuai kebutuhan.
catatan
Untuk mempermudah, resep default untuk contoh ini menggunakan service sumber daya untuk memulai layanan setelah menjalankan definisi layanan. Implementasi produksi biasanya memulai atau memulai ulang layanan dengan menggunakannotifies, seperti yang dibahas nanti.
Untuk menjalankan resep
-
Buat
default.rbfile yang berisi contoh resep default dan simpan kerecipes. -
Buat
service.rbfile yang berisi contoh definisi layanan dan simpan kerecipes. -
Jalankan
kitchen converge, lalu masuk ke instance dan jalankan perintah berikut untuk memverifikasi bahwa layanan sedang berjalan.sudo service tomcat7 status
catatan
Jika Anda menjalankan secara service.rb terpisah daridefault.rb, Anda harus mengedit .kitchen.yml untuk menambahkan tomcat::service ke daftar run. Namun, ketika Anda memasukkan resep, kodenya dimasukkan ke dalam resep induk sebelum resep dijalankan. service.rbOleh karena itu pada dasarnya merupakan bagian dari default.rb dan tidak memerlukan entri daftar lari terpisah.
Menggunakan pemberitahuan untuk Memulai atau Memulai Ulang Layanan
Implementasi produksi biasanya tidak digunakan service untuk memulai atau memulai ulang layanan. Sebaliknya, mereka notifies menambah salah satu dari beberapa sumber daya. Misalnya, jika Anda ingin memulai ulang layanan setelah memodifikasi file konfigurasi, Anda menyertakan notifies template sumber daya terkait. Menggunakan notifies memiliki keuntungan sebagai berikut dibandingkan menggunakan service sumber daya untuk memulai ulang layanan secara eksplisit.
-
notifiesElemen memulai ulang layanan hanya jika file konfigurasi terkait telah berubah, sehingga tidak ada risiko menyebabkan restart layanan yang tidak perlu. -
Chef memulai ulang layanan paling banyak sekali di akhir setiap proses, terlepas dari berapa banyak
notifiesrun yang dikandungnya.Misalnya, Chef run mungkin menyertakan beberapa sumber template, yang masing-masing memodifikasi file konfigurasi yang berbeda dan memerlukan layanan restart jika file telah berubah. Namun, Anda biasanya ingin memulai ulang layanan hanya sekali, di akhir menjalankan Chef. Jika tidak, Anda mungkin mencoba memulai ulang layanan yang belum sepenuhnya beroperasi dari restart sebelumnya, yang dapat menyebabkan kesalahan.
Contoh ini memodifikasi tomcat::default untuk menyertakan template sumber daya yang digunakan notifies untuk memulai ulang layanan. Contoh realistis akan menggunakan sumber daya template yang membuat versi khusus dari salah satu file konfigurasi Tomcat, tetapi itu agak panjang dan kompleks. Untuk kesederhanaan, contoh hanya menggunakan sumber daya template dariMembuat File dari Template. Ini tidak ada hubungannya dengan Tomcat, tetapi menyediakan cara sederhana untuk menunjukkan cara menggunakannyanotifies. Untuk contoh cara menggunakan templat untuk membuat file konfigurasi Tomcat, lihatResep Pengaturan.
Untuk mengatur buku masak
-
Tambahkan
templatessubdirektori ketomcatdandefaultsubdirektori ke.templates -
Salin
example_data.json.erbtemplate daricreatefilebuku masak ketemplates/defaultdirektori. -
Tambahkan
attributessubdirektori ketomcat. -
Salin file
default.rbatribut daricreatefilebuku masak keattributesdirektori.
Resep berikut digunakan notifies untuk memulai kembali layanan Tomcat.
execute "install_updates" do command "apt-get update" end package "tomcat7" do action :install end include_recipe 'tomcat::service' service 'tomcat' do action :enable end directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end template "/srv/www/shared/example_data.json" do source "example_data.json.erb" mode 0644 variables( :a_boolean_var => true, :a_string_var => "some string" ) only_if {node['createfile']['install_file']} notifies :restart, resources(:service => 'tomcat') end
Contoh menggabungkan resep dari Membuat File dari Template ke dalam resep dari bagian sebelumnya, dengan dua perubahan signifikan:
-
serviceSumber daya masih ada, tetapi sekarang melayani tujuan yang agak berbeda.:enableTindakan ini memungkinkan layanan Tomcat saat boot. -
Sumber daya template sekarang termasuk
notifies, yang memulai ulang layanan Tomcat jikaexample_data.jsontelah berubah.Ini memastikan bahwa layanan dimulai ketika Tomcat pertama kali diinstal dan dimulai ulang setelah setiap perubahan konfigurasi.
Untuk menjalankan resep
-
Jalankan
kitchen destroyuntuk memulai dengan instance bersih. -
Ganti kode
default.rbdengan contoh sebelumnya. -
Jalankan
kitchen converge, lalu masuk ke instance dan verifikasi bahwa layanan sedang berjalan.
catatan
Jika Anda ingin memulai ulang layanan tetapi resepnya tidak menyertakan sumber daya seperti template yang mendukungnotifies, Anda dapat menggunakan execute sumber daya tiruan. Sebagai contoh
execute 'trigger tomcat service restart' do command 'bin/true' notifies :restart, resources(:service => 'tomcat') end
executeSumber daya harus memiliki command atribut, bahkan jika Anda menggunakan sumber daya hanya sebagai cara untuk menjalankannyanotifies. Contoh ini mengatasi persyaratan itu dengan menjalankan/bin/true, yang merupakan perintah shell yang hanya mengembalikan kode sukses.