Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan Resep untuk Tumpukan Chef 11.10
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
Tumpukan Chef 11.10 memberikan keunggulan berikut dibandingkan tumpukan Chef 11.4:
-
Chef menjalankan menggunakan Ruby 2.0.0, sehingga resep Anda dapat menggunakan sintaks Ruby baru.
-
Resep dapat menggunakan pencarian Chef dan tas data.
Tumpukan Chef 11.10 dapat menggunakan banyak buku masak komunitas tanpa modifikasi.
-
Anda dapat menggunakan Berkshelf untuk mengelola buku masak.
Berkshelf menyediakan cara yang jauh lebih fleksibel untuk mengelola buku masak kustom Anda dan menggunakan buku masak komunitas dalam tumpukan.
-
Buku masak harus mendeklarasikan dependensi di.
metadata.rb
Jika buku masak Anda bergantung pada buku masak lain, Anda harus memasukkan ketergantungan itu dalam file buku masak Anda.
metadata.rb
Misalnya, jika buku masak Anda menyertakan resep dengan pernyataan sepertiinclude_recipe anothercookbook::somerecipe
,metadata.rb
file buku masak Anda harus menyertakan baris berikut:depends "anothercookbook"
-
AWS OpsWorks Stacks menginstal SQL klien Saya pada instance tumpukan hanya jika tumpukan menyertakan lapisan Saya. SQL
-
AWS OpsWorks Stacks menginstal klien Ganglia pada instance tumpukan hanya jika tumpukan menyertakan lapisan Ganglia.
-
Jika penerapan berjalan
bundle install
dan penginstalan gagal, penerapan juga gagal.
penting
Jangan gunakan kembali nama buku masak bawaan untuk buku masak khusus atau komunitas. Buku masak khusus yang memiliki nama yang sama dengan buku masak bawaan mungkin gagal. Untuk daftar lengkap buku masak bawaan yang tersedia dengan tumpukan Chef 11.10, 11.4, dan 0.9, lihat repositori opsworks-cookbooks di. GitHub
Buku masak dengan ASCII non-karakter yang berhasil berjalan di tumpukan Chef 0.9 dan 11.4 mungkin gagal pada tumpukan Chef 11.10. Alasannya adalah bahwa tumpukan Chef 11.10 menggunakan Ruby 2.0.0 untuk menjalankan Chef, yang jauh lebih ketat tentang pengkodean daripada Ruby 1.8.7. Untuk memastikan bahwa buku masak tersebut berjalan dengan sukses di tumpukan Chef 11.10, setiap file yang menggunakan ASCII non-karakter harus memiliki komentar di bagian atas yang memberikan petunjuk tentang pengkodean. Misalnya, untuk pengkodean UTF -8, komentarnya adalah. #
encoding: UTF-8
Untuk informasi lebih lanjut tentang pengkodean Ruby 2.0.0, lihat Pengkodean.
Topik
Instalasi dan Prioritas Buku Masak
Prosedur untuk menginstal buku masak AWS OpsWorks Stacks bekerja agak berbeda untuk tumpukan Chef 11.10 daripada versi Chef sebelumnya. Untuk tumpukan Chef 11.10, setelah AWS OpsWorks Stacks menginstal buku masak bawaan, kustom, dan Berkshelf, ia menggabungkannya ke direktori umum dalam urutan berikut:
-
Buku masak bawaan.
-
Buku masak Berkshelf, jika ada.
-
Buku masak khusus, jika ada.
Ketika AWS OpsWorks Stacks melakukan penggabungan ini, ia menyalin seluruh konten direktori, termasuk resep. Jika ada duplikat, aturan berikut berlaku:
-
Isi buku masak Berkshelf lebih diutamakan daripada buku masak bawaan.
-
Isi buku masak khusus lebih diutamakan daripada buku masak Berkshelf.
Untuk mengilustrasikan bagaimana proses ini bekerja, pertimbangkan skenario berikut, di mana ketiga direktori buku masak menyertakan buku masak bernama: mycookbook
-
Buku masak bawaan -
mycookbook
termasuk file atribut bernamasomeattributes.rb
, file template bernamasometemplate.erb
, dan resep bernamasomerecipe.rb
. -
Buku masak Berkshelf —
mycookbook
termasuksometemplate.erb
dan.somerecipe.rb
-
Buku masak khusus —
mycookbook
termasuksomerecipe.rb
.
Buku masak gabungan berisi yang berikut:
-
someattributes.rb
dari buku masak bawaan. -
sometemplate.erb
dari buku masak Berkshelf. -
somerecipe.rb
dari buku masak khusus.
penting
Anda tidak boleh menyesuaikan tumpukan Chef 11.10 Anda dengan menyalin seluruh buku masak bawaan ke repositori Anda dan kemudian memodifikasi bagian buku masak. Melakukannya mengesampingkan seluruh buku masak bawaan, termasuk resep. Jika AWS OpsWorks Stacks memperbarui buku masak itu, tumpukan Anda tidak akan mendapatkan manfaat dari pembaruan tersebut kecuali Anda memperbarui salinan pribadi Anda secara manual. Untuk informasi selengkapnya tentang cara menyesuaikan tumpukan, lihatMenyesuaikan Tumpukan AWS OpsWorks.
Menggunakan Pencarian Chef
Anda dapat menggunakan search
Metode
-
Atribut dari file atribut buku masak bawaan dan kustom instance.
-
Data sistem dikumpulkan oleh Ohai.
Konfigurasi tumpukan dan atribut penyebaran berisi sebagian besar informasi yang biasanya diperoleh resep melalui pencarian, termasuk data seperti nama host dan alamat IP untuk setiap instance online di tumpukan. AWS OpsWorks Stacks memperbarui atribut ini untuk setiap peristiwa siklus hidup, yang memastikan bahwa atribut tersebut secara akurat mencerminkan status tumpukan saat ini. Ini berarti Anda sering dapat menggunakan resep komunitas yang bergantung pada pencarian di tumpukan Anda tanpa modifikasi. Metode pencarian masih mengembalikan data yang sesuai; itu hanya berasal dari konfigurasi tumpukan dan atribut penerapan alih-alih server.
Keterbatasan utama pencarian AWS OpsWorks Stacks adalah hanya menangani data di objek node lokal, konfigurasi tumpukan dan atribut penerapan pada khususnya. Oleh karena itu, jenis data berikut mungkin tidak tersedia melalui penelusuran:
-
Atribut yang didefinisikan secara lokal pada instance lain.
Jika resep mendefinisikan atribut secara lokal, informasi tersebut tidak dilaporkan kembali ke layanan AWS OpsWorks Stacks, sehingga Anda tidak dapat mengakses data tersebut dari instance lain dengan menggunakan penelusuran.
-
deploy
Atribut khusus.Anda dapat menentukan kustom JSON saat menerapkan aplikasi dan atribut terkait diinstal pada instance tumpukan untuk penerapan tersebut. Namun, jika Anda menerapkan hanya ke instance yang dipilih, atribut diinstal hanya pada instance tersebut. Kueri untuk JSON atribut kustom tersebut akan gagal pada semua instance lainnya. Selain itu, atribut kustom disertakan dalam konfigurasi tumpukan dan penerapan JSON hanya untuk penerapan tertentu. Mereka hanya dapat diakses sampai peristiwa siklus hidup berikutnya menginstal satu set konfigurasi tumpukan dan atribut penerapan baru. Perhatikan bahwa jika Anda menentukan kustom JSON untuk tumpukan, atribut diinstal pada setiap instance untuk setiap peristiwa siklus hidup dan selalu dapat diakses melalui penelusuran.
-
Data Ohai dari contoh lain.
Alat Ohai
Chef memperoleh berbagai data sistem pada sebuah instance dan menambahkannya ke objek node. Data ini disimpan secara lokal dan tidak dilaporkan kembali ke layanan AWS OpsWorks Stacks, sehingga pencarian tidak dapat mengakses data Ohai dari instance lain. Namun, beberapa data ini mungkin disertakan dalam konfigurasi tumpukan dan atribut penerapan. -
Contoh offline.
Konfigurasi tumpukan dan atribut penerapan berisi data hanya untuk instance online.
Kutipan resep berikut menunjukkan cara mendapatkan alamat IP pribadi dari instance PHP lapisan dengan menggunakan pencarian.
appserver = search(:node, "role:php-app").first Chef::Log.info("The private IP is '#{appserver[:private_ip]}'")
catatan
Ketika AWS OpsWorks Stacks menambahkan konfigurasi tumpukan dan atribut penyebaran ke objek node, itu sebenarnya menciptakan dua set atribut lapisan, masing-masing dengan data yang sama. Satu set ada di layers
namespace, yang merupakan cara AWS OpsWorks Stacks menyimpan data. Set lainnya ada di role
namespace, yang merupakan cara server Chef menyimpan data yang setara. Tujuan dari role
namespace adalah untuk memungkinkan kode pencarian yang diimplementasikan untuk server Chef berjalan pada instance AWS OpsWorks Stacks. Jika Anda menulis kode khusus untuk AWS OpsWorks Stacks, Anda dapat menggunakan salah satu layers:php-app
atau role:php-app
dalam contoh sebelumnya dan search
akan mengembalikan hasil yang sama.
Menggunakan Tas Data
Anda dapat menggunakan data_bag_item
metodenode.chef_environment
selalu kembali_default
.
Anda membuat tas data dengan menggunakan kustom JSON untuk menambahkan satu atau beberapa atribut ke [:opsworks][:data_bags]
atribut. Contoh berikut menunjukkan format umum untuk membuat tas data dalam kustomJSON.
catatan
Anda tidak dapat membuat tas data dengan menambahkannya ke repositori buku masak Anda. Anda harus menggunakan customJSON.
{ "opsworks": { "data_bags": { "bag_name1": { "item_name1: { "key1" : “value1”, "key2" : “value2”, ... } }, "bag_name2": { "item_name1": { "key1" : “value1”, "key2" : “value2”, ... } }, ... } } }
Anda biasanya menentukan kustom JSON untuk tumpukan, yang menginstal atribut kustom pada setiap instance untuk setiap peristiwa siklus hidup berikutnya. Anda juga dapat menentukan kustom JSON saat menerapkan aplikasi, tetapi atribut tersebut hanya diinstal untuk penerapan tersebut, dan mungkin diinstal hanya untuk satu set instance yang dipilih. Untuk informasi selengkapnya, lihat Menerapkan Aplikasi.
JSONContoh kustom berikut membuat tas data bernamamyapp
. Ini memiliki satu item,mysql
, dengan dua pasangan kunci-nilai.
{ "opsworks": { "data_bags": { "myapp": { "mysql": { "username": "default-user", "password": "default-pass" } } } } }
Untuk menggunakan data dalam resep Anda, Anda dapat memanggil data_bag_item
dan meneruskannya tas data dan nama nilai, seperti yang ditunjukkan pada kutipan berikut.
mything = data_bag_item("myapp", "mysql") Chef::Log.info("The username is '#{mything['username']}' ")
Untuk memodifikasi data dalam kantong data, cukup ubah kustomJSON, dan itu akan diinstal pada instance tumpukan untuk acara siklus hidup berikutnya.
Menggunakan Berkshelf
Dengan tumpukan Chef 0.9 dan Chef 11.4, Anda hanya dapat menginstal satu repositori buku masak khusus. Dengan tumpukan Chef 11.10, Anda dapat menggunakan Berkshelf
Untuk menggunakan Berkshelf, Anda harus secara eksplisit mengaktifkannya, seperti yang dijelaskan dalam. Memasang Buku Masak Kustom Kemudian, sertakan Berksfile
file di direktori root repositori buku masak Anda yang menentukan buku masak mana yang akan diinstal.
Untuk menentukan sumber buku masak eksternal di Berksfile, sertakan atribut sumber di bagian atas file yang menentukan repositori default. URL Berkshelf akan mencari buku masak di sumber URLs kecuali Anda secara eksplisit menentukan repositori. Kemudian sertakan baris untuk setiap buku masak yang ingin Anda instal dalam format berikut:
cookbook '
cookbook_name
', ['>=
cookbook_version
'], [cookbook_options
]
Bidang berikut cookbook
menentukan buku masak tertentu.
-
cookbook_name
— (Wajib) Menentukan nama buku masak ini.Jika Anda tidak menyertakan bidang lain, Berkshelf menginstal buku masak dari sumber yang ditentukan. URLs
-
cookbook_version
— (Opsional) Menentukan versi buku masak atau versi.Anda dapat menggunakan awalan seperti
=
atau>=
untuk menentukan versi tertentu atau rentang versi yang dapat diterima. Jika Anda tidak menentukan versi, Berkshelf menginstal yang terbaru. -
cookbook_options
— (Opsional) Bidang terakhir adalah hash yang berisi satu atau lebih pasangan kunci-nilai yang menentukan opsi seperti lokasi repositori.Misalnya, Anda dapat menyertakan
git
kunci untuk menunjuk repositori Git tertentu dantag
kunci untuk menunjuk cabang repositori tertentu. Menentukan cabang repositori biasanya merupakan cara terbaik untuk memastikan bahwa Anda menginstal buku masak pilihan Anda.
penting
Jangan mendeklarasikan buku masak dengan menyertakan metadata
baris di Berksfile Anda dan mendeklarasikan dependensi buku masak di. metadata.rb
Agar ini berfungsi dengan benar, kedua file harus berada di direktori yang sama. Dengan AWS OpsWorks Stacks, Berksfile harus berada di direktori root repositori, tetapi metadata.rb
file harus berada di direktori buku masak masing-masing. Anda seharusnya secara eksplisit mendeklarasikan buku masak eksternal di Berksfile.
source "https://supermarket.chef.io" cookbook 'apt' cookbook 'bluepill', '>= 2.3.1' cookbook 'ark', git: 'git://github.com/opscode-cookbooks/ark.git' cookbook 'build-essential', '>= 1.4.2', git: 'git://github.com/opscode-cookbooks/build-essential.git', tag: 'v1.4.2'
File ini menginstal buku masak berikut:
-
Versi terbaru
apt
dari repositori buku masak komunitas. -
Versi terbaru
bluepill
dari buku masak komunitas, asalkan versi 2.3.1 atau yang lebih baru. -
Versi terbaru
ark
dari dari repositori tertentu.Contoh URL untuk ini adalah untuk repositori buku masak komunitas publik GitHub, tetapi Anda dapat menginstal buku masak dari repositori lain, termasuk repositori pribadi. Untuk informasi lebih lanjut, lihat Berkshelf
. -
build-essential
Buku masak dari cabang v1.4.2 dari repositori yang ditentukan.
Sebuah repositori buku masak kustom dapat berisi buku masak kustom selain Berksfile. Dalam hal ini, AWS OpsWorks Stacks menginstal kedua set buku masak, yang berarti bahwa sebuah instance dapat memiliki sebanyak tiga repositori buku masak.
-
Buku masak bawaan dipasang ke
/opt/aws/opsworks/current/cookbooks
. -
Jika repositori buku masak kustom Anda berisi buku masak, mereka diinstal ke.
/opt/aws/opsworks/current/site-cookbooks
-
Jika Anda telah mengaktifkan Berkshelf dan repositori buku masak kustom Anda berisi Berksfile, buku masak yang ditentukan diinstal ke.
/opt/aws/opsworks/current/berkshelf-cookbooks
Buku masak bawaan dan buku masak khusus Anda diinstal pada setiap instance selama penyiapan dan tidak diperbarui selanjutnya kecuali Anda menjalankan perintah tumpukan Perbarui Buku Masak Kustom secara manual. AWS OpsWorks Tumpukan berjalan berks install
untuk setiap Chef run, sehingga buku masak Berkshelf Anda diperbarui untuk setiap acara siklus hidup, sesuai dengan aturan berikut:
-
Jika Anda memiliki versi buku masak baru di repositori, operasi ini memperbarui buku masak dari repositori.
-
Jika tidak, operasi ini memperbarui buku masak Berkshelf dari cache lokal.
catatan
Operasi menimpa buku masak Berkshelf, jadi jika Anda telah memodifikasi salinan lokal dari buku masak apa pun, perubahan akan ditimpa. Untuk informasi lebih lanjut, lihat Berkshelf
Anda juga dapat memperbarui buku masak Berkshelf Anda dengan menjalankan perintah tumpukan Update Custom Cookbooks, yang memperbarui buku masak Berkshelf dan buku masak khusus Anda.