Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penyimpangan Singkat: Buku Masak, Resep, dan AWS OpsWorks Atribut Tumpukan
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
Anda sekarang memiliki server aplikasi dan database, tetapi mereka tidak cukup siap untuk digunakan. Anda masih perlu menyiapkan database dan mengonfigurasi pengaturan koneksi aplikasi. AWS OpsWorks Stacks tidak menangani tugas-tugas ini secara otomatis, tetapi mendukung buku masak Chef, resep, dan atribut dinamis. Anda dapat menerapkan sepasang resep, satu untuk menyiapkan database dan satu lagi untuk mengonfigurasi pengaturan koneksi aplikasi, dan memiliki AWS OpsWorks Tumpukan menjalankannya untuk Anda.
Buku masak phpapp, yang berisi resep yang diperlukan, sudah diterapkan dan siap digunakan; Anda bisa langsung melompat ke Langkah 3.3: Tambahkan Buku Masak Kustom ke MyStack jika Anda mau. Jika Anda ingin tahu lebih banyak, bagian ini memberikan beberapa latar belakang tentang buku masak dan resep dan menjelaskan cara kerja resep. Untuk melihat buku masak itu sendiri, buka buku masak phpapp
Resep dan Atribut
Resep Chef pada dasarnya adalah aplikasi Ruby khusus yang melakukan tugas-tugas pada instance seperti menginstal paket, membuat file konfigurasi, menjalankan perintah shell, dan sebagainya. Grup resep terkait diatur ke dalam buku masak, yang juga berisi file pendukung seperti templat untuk membuat file konfigurasi.
AWS OpsWorks Stacks memiliki satu set buku masak yang mendukung lapisan bawaan. Anda juga dapat membuat buku masak khusus dengan resep Anda sendiri untuk melakukan tugas khusus pada instance Anda. Topik ini memberikan pengantar singkat tentang resep dan menunjukkan cara menggunakannya untuk menyiapkan database dan mengonfigurasi setelan koneksi aplikasi. Untuk informasi lebih lanjut tentang buku masak dan resep, lihat Buku Masak dan Resep atauMenyesuaikan AWS OpsWorks Tumpukan.
Resep biasanya bergantung pada atribut Chef untuk data input:
-
Beberapa atribut ini didefinisikan oleh Chef dan memberikan informasi dasar tentang instance seperti sistem operasi.
-
AWS OpsWorks Stacks mendefinisikan sekumpulan atribut yang berisi informasi tentang tumpukan—seperti konfigurasi lapisan—dan tentang aplikasi yang digunakan—seperti repositori aplikasi.
Anda dapat menambahkan atribut kustom ke set ini dengan menetapkan kustom JSON ke tumpukan atau penerapan.
-
Buku masak Anda juga dapat menentukan atribut, yang khusus untuk buku masak.
Atribut buku masak phpapp didefinisikan dalam.
attributes/default.rb
Untuk daftar lengkap AWS OpsWorks Tumpukan atribut, lihat Konfigurasi Stack dan Atribut Deployment: Linux danAtribut Buku Masak Bawaan. Untuk informasi selengkapnya, lihat Mengesampingkan Atribut.
Atribut diatur dalam struktur hierarkis, yang dapat direpresentasikan sebagai JSON objek.
Anda memasukkan data ini ke dalam aplikasi Anda dengan menggunakan sintaks simpul Chef, seperti berikut ini:
[:deploy][:simplephpapp][:database][:username]
deploy
Node ini memiliki satu node aplikasi,simplephpapp
, yang berisi informasi tentang database aplikasi, repositori Git, dan sebagainya. Contoh ini mewakili nilai nama pengguna database, yang memutuskan untuk. root
Mengatur Database
Resep Pengaturan bawaan SQL lapisan Saya secara otomatis membuat database untuk aplikasi yang diberi nama dengan nama pendek aplikasi, jadi untuk contoh ini Anda sudah memiliki database bernama simplephpapp. Namun, Anda harus menyelesaikan pengaturan dengan membuat tabel untuk aplikasi untuk menyimpan datanya. Anda dapat membuat tabel secara manual, tetapi pendekatan yang lebih baik adalah menerapkan resep khusus untuk menangani tugas, dan memiliki AWS OpsWorks Tumpukan menjalankannya untuk Anda. Bagian ini menjelaskan bagaimana resep,dbsetup.rb
, diimplementasikan. Prosedur untuk memiliki AWS OpsWorks Tumpukan menjalankan resep dijelaskan nanti.
Untuk melihat resep di repositori, buka dbsetup.rb.dbsetup.rb
kode.
execute
adalah sumber daya Chef yang menjalankan perintah tertentu. Dalam hal ini, itu adalah SQL perintah Saya yang membuat tabel. not_if
Arahan memastikan bahwa perintah tidak berjalan jika tabel yang ditentukan sudah ada. Untuk informasi selengkapnya tentang sumber daya Chef, lihat Tentang Sumber Daya dan Penyedia
Resep menyisipkan nilai atribut ke dalam string perintah, menggunakan sintaks node dibahas sebelumnya. Misalnya, berikut ini menyisipkan nama pengguna database.
#{deploy[:database][:username]}
Mari kita bongkar kode yang agak samar ini:
-
Untuk setiap iterasi,
deploy
disetel ke node aplikasi saat ini, sehingga diselesaikan menjadi.[:deploy][:
Untuk contoh ini, ia memutuskan untuk.app_name
][:deploy][:simplephpapp]
-
Menggunakan nilai atribut deployment yang ditunjukkan sebelumnya, seluruh node menyelesaikannya.
root
-
Anda membungkus node di # {} untuk memasukkannya ke dalam string.
Sebagian besar node lain menyelesaikan dengan cara yang sama. Pengecualiannya adalah#{node[:phpapp][:dbtable]}
, yang didefinisikan oleh file atribut buku masak kustom dan diselesaikan ke nama tabel,. urler
Oleh karena itu, perintah aktual yang berjalan pada SQL instance Saya adalah:
"/usr/bin/mysql -uroot -pvjud1hw5v8 simplephpapp -e'CREATE TABLE urler( id INT UNSIGNED NOT NULL AUTO_INCREMENT, author VARCHAR(63) NOT NULL, message TEXT, PRIMARY KEY (id))' "
Perintah ini membuat tabel bernama urler
dengan id, author, dan bidang pesan, menggunakan kredensyal dan nama database dari atribut deployment.
Connect Aplikasi ke Database
Bagian kedua dari teka-teki adalah aplikasi, yang membutuhkan informasi koneksi seperti kata sandi database untuk mengakses tabel. S implePHPApp secara efektif hanya memiliki satu file yang berfungsi,app.php
; semua yang index.php
dilakukan adalah memuatapp.php
.
app.php
termasukdb-connect.php
, yang menangani koneksi database, tetapi file itu tidak ada dalam repositori. Anda tidak dapat membuat db-connect.php
terlebih dahulu karena mendefinisikan database berdasarkan instance tertentu. Sebagai gantinya, appsetup.rb
resep menghasilkan db-connect.php
menggunakan data koneksi dari atribut penerapan.
Untuk melihat resep di repositori, buka appsetup.rb.appsetup.rb
kode.
Sepertidbsetup.rb
, appsetup.rb
mengulangi aplikasi di deploy
simpul—hanya simplephpapp lagi—. Ini menjalankan blok kode dengan script
sumber daya dan template
sumber daya.
script
Sumber daya menginstal Composer —manajerinstall
perintah Composer untuk menginstal dependensi untuk aplikasi sampel ke direktori root aplikasi.
template
Sumber daya menghasilkan db-connect.php
dan memasukkannya/srv/www/simplephpapp/current
. Perhatikan hal berikut:
-
Resep menggunakan pernyataan bersyarat untuk menentukan pemilik file, yang tergantung pada sistem operasi instance.
-
only_if
Arahan memberitahu Chef untuk menghasilkan template hanya jika direktori yang ditentukan ada.
template
Sumber daya beroperasi pada template yang pada dasarnya memiliki konten dan struktur yang sama dengan file terkait tetapi menyertakan placeholder untuk berbagai nilai data. source
Parameter menentukan template,db-connect.php.erb
, yang ada di templates/default
direktori buku masak phpapp, dan berisi yang berikut:
Ketika Chef memproses template, itu menggantikan <%= =>
placeholder dengan nilai variabel yang sesuai dalam sumber daya template, yang pada gilirannya diambil dari atribut deployment. Oleh karena itu, file yang dihasilkan adalah: