

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
<a name="cookbooks-101-opsworks-berkshelf"></a>

**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 Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

**catatan**  
Berkshelf hanya tersedia untuk tumpukan Chef 11.10 Linux.

Sebelum Anda mulai menerapkan buku masak, lihat [Buku Masak Komunitas Chef](https://github.com/opscode-cookbooks), yang berisi buku masak yang telah dibuat oleh anggota komunitas Chef untuk berbagai tujuan. Banyak dari buku masak ini dapat digunakan dengan 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 EC2 instans Amazon, termasuk instans OpsWorks Stacks, tetapi juga dirancang untuk bekerja dengan Test Kitchen dan Vagrant. Namun, penggunaan pada Vagrant sedikit berbeda dengan OpsWorks Stacks, jadi topik ini mencakup contoh untuk kedua platform. Untuk informasi selengkapnya tentang cara menggunakan Berkshelf, lihat [Berkshelf](http://berkshelf.com/).

**Topics**
+ [Menggunakan Berkshelf dengan Test Kitchen dan Vagrant](#cookbooks-101-opsworks-berkshelf-vagrant)
+ [Menggunakan Berkshelf dengan Stacks OpsWorks](#opsworks-berkshelf-opsworks)

## Menggunakan Berkshelf dengan Test Kitchen dan Vagrant
<a name="cookbooks-101-opsworks-berkshelf-vagrant"></a>

 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 memerlukan`sudo`, atau Anda juga dapat menggunakan manajer lingkungan Ruby seperti RVM.](https://rvm.io/) Untuk memverifikasi bahwa Berkshelf berhasil diinstal, jalankan`berks --version`.

1. Buku masak untuk topik ini bernama external\$1cookbook. 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.rb`Resep kosong di `recipes` direktori
**catatan**  
Anda tidak perlu menjalankan`kitchen init`; `berks cookbook` perintah menangani tugas-tugas itu.

1. 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 berisi`Berksfile`, 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 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](http://berkshelf.com/).
+ 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 OpsWorks Stacks.

**Untuk menginstal buku masak yang memulai**

1. Edit Berksfile default untuk mengganti `metadata` deklarasi dengan deklarasi untuk`cookbook`. `getting-started` Isinya akan terlihat seperti berikut ini.

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

1. Jalankan`berks 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`

1. Ganti `external_cookbook::default` dalam daftar `.kitchen.yml` run dengan`getting-started::default`. Contoh ini tidak menjalankan resep apa pun dari external\$1cookbook; ini pada dasarnya hanya cara untuk menggunakan buku masak yang memulai. `.kitchen.yml`File sekarang akan terlihat seperti berikut.

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_solo
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: default
       run_list:
         - recipe[getting-started::default]
       attributes:
   ```

1. 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\$1cookbook dan getting-started.

1. `kitchen destroy`Jalankan untuk mematikan instance. Contoh berikutnya menggunakan instance OpsWorks Stacks.

## Menggunakan Berkshelf dengan Stacks OpsWorks
<a name="opsworks-berkshelf-opsworks"></a>

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.

  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 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](workingcookbook-chef11-10.md#workingcookbook-chef11-10-berkshelf).

Contoh ini menunjukkan cara menggunakan Berkshelf untuk menginstal buku masak komunitas yang memulai pada instance Stacks. 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](cookbooks-101-basics-files.md#cookbooks-101-basics-files-cookbook_file)

**catatan**  
Jika ini adalah pertama kalinya Anda menginstal buku masak khusus pada tumpukan OpsWorks Stacks, Anda harus terlebih dahulu melalui contoh. [Menjalankan Resep pada Instance Linux](cookbooks-101-opsworks-opsworks-instance.md)

Mulailah dengan membuat tumpukan, seperti yang dirangkum dalam berikut ini. Untuk informasi selengkapnya, lihat [Buat Stack Baru](workingstacks-creating.md).

**Buat tumpukan**

1. Buka [konsol OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) dan klik **Add Stack**.

1. **Tentukan pengaturan berikut, terima default untuk pengaturan lainnya, dan klik Tambahkan Tumpukan.**
   + **Nama** - BerksTest
   + **Kunci SSH default** - Sebuah EC2 key pair Amazon

   Jika Anda perlu membuat EC2 key pair Amazon, lihat [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). Perhatikan bahwa key pair harus memiliki wilayah AWS yang sama dengan instans. Contoh menggunakan wilayah AS Barat (Oregon) default.

1. Klik **Tambahkan lapisan** dan [tambahkan lapisan khusus](workinglayers-custom.md) 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.

1. [Tambahkan instance 24/7](workinginstances-add.md) ke BerksTest layer dengan pengaturan default, tetapi jangan memulainya.

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

Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat [Bagaimana Cara Mengosongkan Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

**Untuk membuat repositori buku masak**

1. Di `opsworks_cookbooks` direktori Anda, buat direktori bernama`berkstest_cookbooks`. Jika mau, Anda dapat membuat direktori ini di mana saja yang menurut Anda nyaman, karena Anda akan mengunggahnya ke repositori.

1. 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.

1. Tambahkan `createfile` direktori `berkstest_cookbooks` yang berisi berikut ini.
   + `metadata.rb`File dengan konten berikut.

     ```
     name "createfile"
     version "0.1.0"
     ```
   + `files/default`Direktori 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.
   + `recipes`Direktori 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.

1. Buat `.zip` arsip`berkstest_cookbooks`, [Unggah arsip ke bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html), [buat arsip publik](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html), 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](workingcookbook-installingcustom-enable.md), 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 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. 

1. Edit BerksTest layer untuk [menambahkan resep berikut ke acara siklus hidup Setup layer](workingcookbook-assigningcustom.md).
   + `getting-started::default`
   + `createfile::default`

1. [Mulai](workinginstances-starting.md) instans. Peristiwa Setup terjadi setelah instance selesai booting. 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`

1. Setelah instance online, [gunakan SSH untuk masuk](workinginstances-ssh.md). Anda harus melihat yang berikut
   + `/srv/www/shared`harus mengandung`example_data.json`.
   + `/root`harus mengandung`chef-getting-started.txt`.

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