Menggunakan Cookbook Eksternal pada Instance Linux: Berkshelf - AWS OpsWorks

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Cookbook Eksternal pada Instance Linux: Berkshelf

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

catatan

Berkshelf hanya tersedia untuk tumpukan Chef 11.10 Linux.

Sebelum Anda mulai menerapkan buku masak, lihat Buku Masak Komunitas Koki, yang berisi buku masak yang telah dibuat oleh anggota komunitas Chef untuk berbagai tujuan. Banyak dari buku masak ini dapat digunakan dengan AWS OpsWorks Stacks tanpa modifikasi, jadi Anda mungkin dapat memanfaatkannya untuk beberapa tugas Anda alih-alih menerapkan semua kode sendiri.

Untuk menggunakan buku masak eksternal pada sebuah instance, Anda memerlukan cara untuk menginstalnya dan mengelola dependensi apa pun. Pendekatan yang lebih disukai adalah menerapkan buku masak yang mendukung manajer ketergantungan bernama Berkshelf. Berkshelf berfungsi pada instans Amazon EC2, AWS OpsWorks termasuk instans Stacks, tetapi juga dirancang untuk bekerja dengan Test Kitchen dan Vagrant. Namun, penggunaan pada Vagrant sedikit berbeda dengan AWS OpsWorks Stacks, jadi topik ini mencakup contoh untuk kedua platform. Untuk informasi selengkapnya tentang cara menggunakan Berkshelf, lihat Berkshelf.

Menggunakan Berkshelf dengan Test Kitchen dan Vagrant

Contoh ini menunjukkan cara menggunakan Berkshelf untuk menginstal buku masak komunitas yang memulai dan menjalankan resepnya, yang menginstal file teks singkat di direktori home Anda pada instance.

Untuk menginstal Berkshelf dan menginisialisasi buku masak
  1. Di workstation Anda, instal permata Berkshelf, sebagai berikut.

    gem install berkshelf

    Tergantung pada workstation Anda, perintah ini mungkin memerlukansudo, atau Anda juga dapat menggunakan manajer lingkungan Ruby seperti RVM. Untuk memverifikasi bahwa Berkshelf berhasil diinstal, jalankanberks --version.

  2. Buku masak untuk topik ini bernama external_cookbook. Anda dapat menggunakan Berkshelf untuk membuat buku masak yang diinisialisasi alih-alih pendekatan manual yang telah diambil topik sebelumnya. Untuk melakukannya, navigasikan ke opsworks_cookbooks direktori dan jalankan perintah berikut.

    berks cookbook external_cookbook

    Perintah membuat external_cookbook direktori dan beberapa subdirektori Chef dan Test Kitchen standar, termasuk recipes dan. test Perintah ini juga membuat versi default dari sejumlah file standar, termasuk yang berikut ini:

    • metadata.rb

    • File konfigurasi untuk Vagrant, Test Kitchen, dan Berkshelf

    • default.rbResep kosong di recipes direktori

    catatan

    Anda tidak perlu menjalankankitchen init; berks cookbook perintah menangani tugas-tugas itu.

  3. Jalankan kitchen converge. Buku masak yang baru dibuat tidak melakukan sesuatu yang menarik pada saat ini, tetapi buku itu menyatu.

catatan

Anda juga dapat menggunakan berks init untuk menginisialisasi buku masak yang ada untuk menggunakan Berkshelf.

Untuk menggunakan Berkshelf untuk mengelola dependensi eksternal buku masak, direktori root buku masak harus berisiBerksfile, yang merupakan file konfigurasi yang menentukan bagaimana Berkshelf harus mengelola dependensi. Ketika Anda biasa berks cookbook membuat external_cookbook buku masak, itu dibuat Berksfile dengan konten berikut.

source "https://supermarket.chef.io" metadata

File ini memiliki deklarasi berikut:

  • source— URL sumber buku masak.

    Sebuah Berksfile dapat memiliki sejumlah source deklarasi, yang masing-masing menentukan sumber default untuk buku masak dependen. Jika Anda tidak secara eksplisit menentukan sumber buku masak, Berkshelf mencari di repositori default untuk buku masak dengan nama yang sama. Berksfile default mencakup source atribut tunggal yang menentukan repositori buku masak komunitas. Repositori itu berisi buku masak yang memulai, sehingga Anda dapat membiarkan baris tidak berubah.

  • metadata— Mengarahkan Berkshelf untuk menyertakan dependensi buku masak yang dideklarasikan dalam file buku masak. metadata.rb

    Anda juga dapat mendeklarasikan buku masak dependen di Berksfile dengan menyertakan cookbook atribut, seperti yang dibahas nanti.

Ada dua cara untuk mendeklarasikan ketergantungan buku masak:

  • Dengan memasukkan cookbook deklarasi dalam Berksfile.

    Ini adalah pendekatan yang digunakan oleh AWS OpsWorks Stacks. Misalnya untuk menentukan buku masak memulai yang digunakan dalam contoh ini, sertakan cookbook "getting-started" dalam Berksfile. Berkshelf kemudian akan mencari di repositori default untuk buku masak dengan nama itu. Anda juga dapat menggunakan cookbook untuk secara eksplisit menentukan sumber buku masak, dan bahkan versi tertentu. Untuk informasi lebih lanjut, lihat Berkshelf.

  • Dengan memasukkan metadata deklarasi di Berksfile dan mendeklarasikan ketergantungan di. metadata.rb

    Deklarasi ini mengarahkan Berkshelf untuk menyertakan dependensi buku masak yang dideklarasikan di. metadata.rb Misalnya, untuk mendeklarasikan dependensi memulai, tambahkan depends 'getting-started' deklarasi ke file buku masak. metadata.rb

Contoh ini menggunakan pendekatan pertama, untuk konsistensi dengan AWS OpsWorks Stacks.

Untuk menginstal buku masak yang memulai
  1. Edit Berksfile default untuk mengganti metadata deklarasi dengan deklarasi untukcookbook. getting-started Isinya akan terlihat seperti berikut.

    source "https://supermarket.chef.io" cookbook 'getting-started'
  2. Jalankanberks install, yang mengunduh buku masak yang memulai dari repositori buku masak komunitas ke direktori Berkshelf workstation Anda, yang biasanya. ~/.berkshelf Direktori ini sering disebut Berkshelf. Lihat di cookbooks direktori Berkshelf, dan Anda akan melihat direktori untuk buku masak yang memulai, yang akan diberi nama seperti. getting-started-0.4.0

  3. Ganti external_cookbook::default dalam daftar .kitchen.yml run dengangetting-started::default. Contoh ini tidak menjalankan resep apa pun dari external_cookbook; ini pada dasarnya hanya cara untuk menggunakan buku masak yang memulai. .kitchen.ymlFile sekarang akan terlihat seperti berikut ini.

    --- driver: name: vagrant provisioner: name: chef_solo platforms: - name: ubuntu-12.04 suites: - name: default run_list: - recipe[getting-started::default] attributes:
  4. Jalankan kitchen converge dan kemudian gunakan kitchen login untuk masuk ke instance. Direktori login harus berisi file bernama chef-getting-started.txt dengan sesuatu seperti berikut:

    Welcome to Chef! This is Chef version 11.12.8. Running on ubuntu. Version 12.04.

    Test Kitchen menginstal buku masak di direktori instance. /tmp/kitchen/cookbooks Jika Anda mencantumkan isi direktori itu, Anda akan melihat dua buku masak: external_cookbook dan getting-started.

  5. kitchen destroyJalankan untuk mematikan instance. Contoh berikutnya menggunakan instance AWS OpsWorks Stacks.

Menggunakan Berkshelf dengan Stacks AWS OpsWorks

AWS OpsWorks Stacks secara opsional mendukung Berkshelf untuk tumpukan Chef 11.10. Untuk menggunakan Berkshelf dengan tumpukan Anda, Anda harus melakukan hal berikut.

  • Aktifkan Berkshelf untuk tumpukan.

    AWS OpsWorks Stacks kemudian menangani rincian menginstal Berkshelf pada instance stack.

  • Tambahkan Berksfile ke direktori root repositori buku masak Anda.

    Berksfile harus berisi source dan cookbook deklarasi untuk semua buku masak dependen.

Ketika AWS OpsWorks Stacks menginstal repositori buku masak kustom Anda pada sebuah instance, ia menggunakan Berkshelf untuk menginstal buku masak dependen yang dideklarasikan dalam Berksfile repositori. Untuk informasi selengkapnya, lihat Menggunakan Berkshelf.

Contoh ini menunjukkan cara menggunakan Berkshelf untuk menginstal buku masak komunitas yang memulai pada instance Stacks. AWS OpsWorks Ini juga menginstal versi createfile custom cookbook, yang membuat file dalam direktori tertentu. Untuk informasi selengkapnya tentang cara kerja createfile, lihat. Menginstal File dari Cookbook

catatan

Jika ini adalah pertama kalinya Anda menginstal buku masak khusus pada tumpukan AWS OpsWorks Stacks, Anda harus terlebih dahulu melalui contoh. Menjalankan Resep pada Instance Linux

Mulailah dengan membuat tumpukan, seperti yang dirangkum dalam berikut ini. Untuk informasi selengkapnya, lihat Buat Stack Baru.

Buat tumpukan
  1. Buka konsol AWS OpsWorks Stacks dan klik Add Stack.

  2. Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan klik Tambahkan Tumpukan.

    • Nama - BerksTest

    • Kunci SSH default - Sebuah key pair Amazon EC2

    Jika Anda perlu membuat key pair Amazon EC2, lihat Amazon EC2 Key Pairs. Perhatikan bahwa key pair harus memiliki wilayah AWS yang sama dengan instans. Contoh menggunakan wilayah AS Barat (Oregon) default.

  3. Klik Tambahkan lapisan dan tambahkan lapisan khusus ke tumpukan dengan pengaturan berikut.

    • Nama - BerksTest

    • Nama pendek — berkstest

    Anda benar-benar dapat menggunakan jenis lapisan apa pun untuk contoh ini. Namun, contoh tidak memerlukan paket apa pun yang diinstal oleh lapisan lain, jadi lapisan khusus adalah pendekatan yang paling sederhana.

  4. Tambahkan instance 24/7 ke BerksTest layer dengan pengaturan default, tetapi jangan memulainya.

Dengan AWS OpsWorks Stacks, buku masak harus berada dalam repositori jarak jauh dengan struktur direktori standar. Anda kemudian memberikan informasi unduhan ke AWS OpsWorks Stacks, yang secara otomatis mengunduh repositori ke setiap instance tumpukan saat startup. Untuk mempermudah, repositori untuk contoh ini adalah arsip Amazon S3 publik, AWS OpsWorks tetapi Stacks juga mendukung arsip HTTP, repositori Git, dan repositori Subversion. Untuk informasi selengkapnya, lihat Repositori Buku Masak.

Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat Bagaimana Cara Mengosongkan Bucket S3? atau Bagaimana Saya Menghapus Bucket S3? .

Untuk membuat repositori buku masak
  1. Di opsworks_cookbooks direktori Anda, buat direktori bernamaberkstest_cookbooks. Jika mau, Anda dapat membuat direktori ini di mana saja yang menurut Anda nyaman, karena Anda akan mengunggahnya ke repositori.

  2. Tambahkan file bernama Berksfile berkstest_cookbooks dengan konten berikut.

    source "https://supermarket.chef.io" cookbook 'getting-started'

    File ini mendeklarasikan ketergantungan buku masak yang memulai, dan mengarahkan Berkshelf untuk mengunduhnya dari situs buku masak komunitas.

  3. Tambahkan createfile direktori berkstest_cookbooks yang berisi berikut ini.

    • metadata.rbFile dengan konten berikut.

      name "createfile" version "0.1.0"
    • files/defaultDirektori yang berisi example_data.json file dengan konten berikut.

      { "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }

      Nama dan konten file bersifat arbitrer. Resepnya cukup menyalin file ke lokasi yang ditentukan.

    • recipesDirektori yang berisi default.rb file dengan kode resep berikut.

      directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end cookbook_file "/srv/www/shared/example_data.json" do source "example_data.json" mode 0644 action :create_if_missing end

      Resep ini membuat /srv/www/shared dan menyalin example_data.json ke direktori itu dari files direktori buku masak.

  4. Buat .zip arsipberkstest_cookbooks, Unggah arsip ke bucket Amazon S3, buat arsip publik, dan rekam URL arsip.

Anda sekarang dapat menginstal buku masak dan menjalankan resepnya.

Untuk menginstal buku masak dan menjalankan resep
  1. Edit tumpukan untuk mengaktifkan buku masak khusus, dan tentukan pengaturan berikut.

    • Jenis repositori - Arsip Http

    • URL Repositori — URL arsip buku masak yang Anda rekam sebelumnya

    • Kelola Berkshelf — Ya

    Dua pengaturan pertama memberi AWS OpsWorks Stacks informasi yang dibutuhkan untuk mengunduh repositori buku masak ke instans Anda. Pengaturan terakhir memungkinkan dukungan Berkshelf, yang mengunduh buku masak yang memulai ke instance. Terima nilai default untuk pengaturan lain dan klik Simpan untuk memperbarui konfigurasi tumpukan.

  2. Edit BerksTest layer untuk menambahkan resep berikut ke acara siklus hidup Setup layer.

    • getting-started::default

    • createfile::default

  3. Mulai instans. Peristiwa Setup terjadi setelah instance selesai booting. AWS OpsWorks Stacks kemudian menginstal repositori buku masak, menggunakan Berkshelf untuk mengunduh buku masak yang memulai, dan menjalankan pengaturan lapisan dan menyebarkan resep, termasuk dan. getting-started::default createfile::default

  4. Setelah instance online, gunakan SSH untuk masuk. Anda harus melihat yang berikut ini

    • /srv/www/sharedharus mengandungexample_data.json.

    • /rootharus mengandungchef-getting-started.txt.

      AWS OpsWorks Stacks menjalankan resep sebagai root, jadi memulai menginstal file di /root direktori daripada direktori home Anda.