Penyimpangan Singkat: Buku Masak, Resep, dan AWS OpsWorks Atribut Tumpukan - AWS OpsWorks

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 atau melalui AWS Dukungan Premium.

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]

deployNode 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. Contoh berikut menunjukkan dbsetup.rb kode.

executeadalah sumber daya Chef yang menjalankan perintah tertentu. Dalam hal ini, itu adalah SQL perintah Saya yang membuat tabel. not_ifArahan 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][:app_name] Untuk contoh ini, ia memutuskan untuk. [: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.phptermasukdb-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. Contoh berikut menunjukkan 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.

scriptSumber daya menginstal Composer —manajer ketergantungan untuk aplikasi. PHP Kemudian menjalankan install perintah Composer untuk menginstal dependensi untuk aplikasi sampel ke direktori root aplikasi.

templateSumber 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_ifArahan memberitahu Chef untuk menghasilkan template hanya jika direktori yang ditentukan ada.

templateSumber daya beroperasi pada template yang pada dasarnya memiliki konten dan struktur yang sama dengan file terkait tetapi menyertakan placeholder untuk berbagai nilai data. sourceParameter 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: