Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan 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
Resep penyebaran ditetapkan ke acara siklus hidup Deploy layer. Ini biasanya terjadi pada semua instance tumpukan setiap kali Anda menerapkan aplikasi, meskipun Anda secara opsional dapat membatasi acara hanya untuk instance tertentu. AWS OpsWorks Stacks juga menjalankan resep Deploy pada instance baru, setelah resep Setup selesai. Tujuan utama dari resep Deploy adalah untuk menyebarkan kode dan file terkait dari repositori ke instance lapisan server aplikasi. Namun, Anda sering menjalankan resep Deploy di lapisan lain juga. Hal ini memungkinkan instance lapisan tersebut, misalnya, memperbarui konfigurasi mereka untuk mengakomodasi aplikasi yang baru diterapkan. Saat Anda menerapkan resep Deploy, ingatlah bahwa peristiwa Deploy tidak selalu berarti bahwa aplikasi sedang di-deploy ke instance. Ini bisa berupa pemberitahuan bahwa aplikasi sedang digunakan ke instance lain di tumpukan, untuk memungkinkan instance melakukan pembaruan yang diperlukan. Resepnya harus dapat merespons dengan tepat, yang mungkin berarti tidak melakukan apa-apa.
AWS OpsWorks Stacks secara otomatis menyebarkan aplikasi dari jenis aplikasi standar ke lapisan server aplikasi bawaan yang sesuai. Untuk menerapkan aplikasi ke lapisan kustom, Anda harus menerapkan resep Deploy kustom yang mengunduh file aplikasi dari repositori ke lokasi yang sesuai pada instance. Namun, Anda sering dapat membatasi jumlah kode yang harus Anda tulis dengan menggunakan buku masak deploy
tomcat::deploy
Resep ini dimaksudkan untuk ditetapkan ke peristiwa siklus hidup Deploy.
include_recipe 'deploy' node[:deploy].each do |application, deploy| opsworks_deploy_dir do user deploy[:user] group deploy[:group] path deploy[:deploy_to] end opsworks_deploy do deploy_data deploy app application end ...
tomcat::deploy
Resepnya menggunakan buku masak penerapan bawaan untuk aspek penerapan yang tidak spesifik untuk aplikasi. deploy
Resep (yang merupakan singkatan dari deploy::default
resep bawaan) adalah resep bawaan yang menangani detail pengaturan pengguna, grup, dan sebagainya, berdasarkan data dari atribut. deploy
Resepnya menggunakan dua definisi Chef bawaan, opsworks_deploy_dir
dan opworks_deploy
untuk menginstal aplikasi.
opsworks_deploy_dir
Definisi ini mengatur struktur direktori, berdasarkan data dari penerapan JSON aplikasi. Definisi pada dasarnya adalah cara yang nyaman untuk mengemas definisi sumber daya, dan terletak di definitions
direktori buku masak. Resep dapat menggunakan definisi seperti sumber daya, tetapi definisi itu sendiri tidak memiliki penyedia terkait, hanya sumber daya yang termasuk dalam definisi. Anda dapat menentukan variabel dalam resep, yang diteruskan ke definisi sumber daya yang mendasarinya. Set tomcat::deploy
resepuser
,group
, dan path
variabel berdasarkan data dari penerapanJSON. Mereka diteruskan ke sumber daya direktori
catatan
Pengguna dan grup aplikasi yang Anda gunakan ditentukan oleh [:opsworks][:deploy_user][:group]
atribut [:opsworks][:deploy_user][:user]
dan, yang ditentukan dalam file atribut buku masak penerapan bawaandeploy.rb
Nilai default [:opsworks][:deploy_user][:user]
adalah deploy
. Nilai default [:opsworks][:deploy_user][:group]
tergantung pada sistem operasi instans:
-
Untuk instance Ubuntu, grup defaultnya adalah
www-data
. -
Untuk instance Amazon Linux yang merupakan anggota lapisan Rails App Server yang menggunakan Nginx dan Unicorn, grup defaultnya adalah.
nginx
-
Untuk semua instance Amazon Linux lainnya, grup defaultnya adalah
apache
.
Anda dapat mengubah pengaturan dengan menggunakan file atribut kustom JSON atau kustom untuk mengganti atribut yang sesuai. Untuk informasi selengkapnya, lihat Mengesampingkan Atribut.
Definisi lain,opsworks_deploy
, menangani detail memeriksa kode aplikasi dan file terkait dari repositori dan menerapkannya ke instance, berdasarkan data dari atribut. deploy
Anda dapat menggunakan definisi ini untuk semua jenis aplikasi; detail penerapan seperti nama direktori ditentukan di konsol atau melalui atribut API dan dimasukkan ke dalam deploy
atribut. Namun, hanya opsworks_deploy
berfungsi untuk empat jenis repositori yang didukung: Git, Subversion, S3, dan. HTTP Anda harus menerapkan kode ini sendiri jika Anda ingin menggunakan jenis repositori yang berbeda.
Anda menginstal file aplikasi di webapps
direktori Tomcat. Praktik yang umum adalah menyalin file langsung kewebapps
. Namun, AWS OpsWorks Penerapan Stacks dirancang untuk mempertahankan hingga lima versi aplikasi pada instans, sehingga Anda dapat memutar kembali ke versi sebelumnya jika perlu. AWS OpsWorks Oleh karena itu, tumpukan melakukan hal berikut:
-
Menyebarkan aplikasi ke direktori berbeda yang namanya berisi cap waktu, seperti.
/srv/www/my_1st_jsp/releases/20130731141527
-
Membuat symlink bernama
current
, seperti/srv/www/my_1st_jsp/current
, ke direktori unik ini. -
Jika belum ada, buat symlink dari
webapps
direktori kecurrent
symlink yang dibuat di Langkah 2.
Jika Anda perlu memutar kembali ke versi sebelumnya, ubah current
symlink untuk menunjuk ke direktori berbeda yang berisi stempel waktu yang sesuai, misalnya, dengan mengubah target tautan. /srv/www/my_1st_jsp/current
Bagian tengah tomcat::deploy
mengatur symlink.
... current_dir = ::File.join(deploy[:deploy_to], 'current') webapp_dir = ::File.join(node['tomcat']['webapps_base_dir'], deploy[:document_root].blank? ? application : deploy[:document_root]) # opsworks_deploy creates some stub dirs, which are not needed for typical webapps ruby_block "remove unnecessary directory entries in #{current_dir}" do block do node['tomcat']['webapps_dir_entries_to_delete'].each do |dir_entry| ::FileUtils.rm_rf(::File.join(current_dir, dir_entry), :secure => true) end end end link webapp_dir do to current_dir action :create end ...
Resep pertama menciptakan dua variabel, current_dir
dan webapp_dir
untuk mewakili current
dan webapp
direktori, masing-masing. Kemudian menggunakan link
sumber daya untuk webapp_dir
ditautkancurrent_dir
. Bagian AWS OpsWorks deploy::default
Resep tumpukan membuat beberapa direktori rintisan yang tidak diperlukan untuk contoh ini, sehingga bagian tengah kutipan menghapusnya.
Bagian terakhir dari tomcat::deploy
restart layanan Tomcat, jika perlu.
... include_recipe 'tomcat::service' execute 'trigger tomcat service restart' do command '/bin/true' not_if { node['tomcat']['auto_deploy'].to_s == 'true' } notifies :restart, resources(:service => 'tomcat') end end include_recipe 'tomcat::context'
Resep pertama berjalantomcat::service
, untuk memastikan bahwa layanan ditentukan untuk menjalankan Chef ini. Kemudian menggunakan sumber daya eksekusi['tomcat']['auto_deploy']
diatur ke'true'
. Jika tidak, Tomcat mendengarkan perubahan dalam webapps
direktorinya, yang membuat restart layanan Tomcat eksplisit tidak perlu.
catatan
execute
Sumber daya tidak benar-benar mengeksekusi sesuatu yang substantif; /bin/true
adalah skrip shell dummy yang hanya mengembalikan kode sukses. Ini digunakan di sini hanya sebagai cara mudah untuk menghasilkan pemberitahuan restart. Seperti disebutkan sebelumnya, menggunakan notifikasi memastikan bahwa layanan tidak dimulai ulang terlalu sering.
Terakhir, tomcat::deploy
runtomcat::context
, yang memperbarui file konfigurasi konteks aplikasi web jika Anda telah mengubah database back end.