

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

# Mengejek Konfigurasi Stack dan Atribut Deployment di Vagrant
<a name="opsworks-opsworks-mock"></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**  
Topik ini hanya berlaku untuk instance Linux. Test Kitchen belum mendukung Windows, jadi Anda akan menjalankan semua contoh Windows pada instance OpsWorks Stacks.

OpsWorks Stacks menambahkan [konfigurasi tumpukan dan atribut penerapan](workingcookbook-json.md) ke objek node untuk setiap instance di tumpukan Anda untuk setiap peristiwa siklus hidup. Atribut ini menyediakan snapshot konfigurasi tumpukan, termasuk konfigurasi setiap lapisan dan instance online-nya, konfigurasi setiap aplikasi yang diterapkan, dan sebagainya. Karena atribut ini berada di objek node, mereka dapat diakses oleh resep apa pun; sebagian besar resep untuk instance OpsWorks Stacks menggunakan satu atau lebih atribut ini. 

Instance yang berjalan di kotak Vagrant tidak dikelola oleh OpsWorks Stacks, sehingga objek simpulnya tidak menyertakan konfigurasi tumpukan dan atribut penerapan apa pun secara default. Namun, Anda dapat menambahkan serangkaian atribut yang sesuai ke lingkungan Test Kitchen. Test Kitchen kemudian menambahkan atribut ke objek node instance, dan resep Anda dapat mengakses atribut seperti pada instance OpsWorks Stacks.

Topik ini menunjukkan cara mendapatkan salinan konfigurasi tumpukan dan atribut penerapan yang sesuai, menginstal atribut pada instance, dan mengaksesnya.

**catatan**  
Jika Anda menggunakan Test Kitchen untuk menjalankan pengujian pada resep Anda, [fauxhai](https://github.com/customink/fauxhai) menyediakan cara alternatif untuk mengejek konfigurasi tumpukan dan penerapan JSON.

**Untuk mengatur buku masak**

1. Buat subdirektori `opsworks_cookbooks` bernama `printjson` dan navigasikan ke sana.

1. Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalam[Contoh 1: Menginstal Paket](cookbooks-101-basics-packages.md).

1. Tambahkan dua subdirektori ke`printjson`: `recipes` dan. `environments`

Anda dapat mengejek konfigurasi tumpukan dan atribut penerapan dengan menambahkan file atribut ke buku masak Anda dengan definisi yang sesuai, tetapi pendekatan yang lebih baik adalah menggunakan lingkungan Test Kitchen. Ada dua pendekatan dasar:
+ Tambahkan definisi atribut ke`.kitchen.yml`.

  Pendekatan ini paling berguna jika Anda hanya memiliki beberapa atribut. Untuk informasi lebih lanjut, lihat [kitchen.yl](https://docs.chef.io/config_yml_kitchen.html).
+ Tentukan atribut dalam file lingkungan dan referensi file di`.kitchen.yml`.

  Pendekatan ini biasanya lebih disukai untuk konfigurasi tumpukan dan atribut penyebaran karena file lingkungan sudah dalam format JSON. Anda bisa mendapatkan salinan atribut dalam format JSON dari instance OpsWorks Stacks yang sesuai dan hanya menempelkannya. Semua contoh menggunakan file lingkungan.

Cara termudah untuk membuat konfigurasi tumpukan dan atribut penerapan untuk buku masak Anda adalah dengan membuat tumpukan yang dikonfigurasi dengan tepat dan menyalin atribut yang dihasilkan dari sebuah instance sebagai JSON. Agar file lingkungan Test Kitchen Anda tetap dapat dikelola, Anda kemudian dapat mengedit JSON itu agar hanya memiliki atribut yang dibutuhkan resep Anda. Contoh dalam Bab ini didasarkan pada tumpukan dari[Memulai dengan Chef 11 Linux Stacks](gettingstarted.md), yang merupakan tumpukan server aplikasi PHP sederhana dengan penyeimbang beban, server aplikasi PHP, dan server database MySQL.

**Untuk membuat konfigurasi tumpukan dan penerapan JSON**

1. Buat MyStack seperti yang dijelaskan dalam[Memulai dengan Chef 11 Linux Stacks](gettingstarted.md), termasuk menerapkan SimplePHPApp. Jika mau, Anda dapat menghilangkan instance PHP App Server kedua yang dipanggil[Langkah 4: Skala Keluar MyStack](gettingstarted-scale.md); contoh tidak menggunakan atribut tersebut.

1. Jika Anda belum melakukannya, mulai `php-app1` instance, lalu [masuk dengan SSH](workinginstances-ssh.md).

1. Di jendela terminal, jalankan perintah [agent cli](agent.md) berikut:

   ```
   sudo opsworks-agent-cli get_json
   ```

   Perintah ini mencetak konfigurasi tumpukan terbaru dan atribut penerapan instance ke jendela terminal dalam format JSON.

1. Salin JSON ke `.json` file dan simpan di lokasi yang nyaman di workstation Anda. Detailnya tergantung pada klien SSH Anda. Misalnya, jika Anda menggunakan PuTTY di Windows, Anda dapat menjalankan `Copy All to Clipboard` perintah, yang menyalin semua teks di jendela terminal ke clipboard Windows. Anda kemudian dapat menempelkan konten ke dalam `.json` file dan mengedit file untuk menghapus teks asing.

1. Edit MyStack JSON sesuai kebutuhan. Konfigurasi tumpukan dan atribut penerapan sangat banyak, dan buku masak biasanya hanya menggunakan sebagian kecil saja. Agar file lingkungan Anda tetap terkelola, Anda dapat mengedit JSON sehingga mempertahankan struktur aslinya tetapi hanya berisi atribut yang benar-benar digunakan oleh buku masak Anda.

   Contoh ini menggunakan versi MyStack JSON yang banyak diedit yang mencakup hanya dua `['opsworks']['stack']` atribut, `['id]` dan. `['name']` Buat versi MyStack JSON yang diedit yang terlihat seperti berikut ini:

   ```
   {
     "opsworks": {
       "stack": {
         "name": "MyStack",
         "id": "42dfd151-6766-4f1c-9940-ba79e5220b58",
       },
     },
   }
   ```

Untuk mendapatkan JSON ini ke objek node instance, Anda perlu menambahkannya ke lingkungan Test Kitchen.

**Untuk menambahkan konfigurasi tumpukan dan atribut penerapan ke lingkungan Test Kitchen**

1. Buat file lingkungan bernama `test.json` dengan konten berikut dan simpan ke `environments` folder buku masak.

   ```
   {
     "default_attributes": {
       "opsworks" : {
         "stack" : {
           "name" : "MyStack",
           "id" : "42dfd151-6766-4f1c-9940-ba79e5220b58"
         }
       }
     },
     "chef_type" : "environment",
     "json_class" : "Chef::Environment"
   }
   ```

   File lingkungan memiliki elemen-elemen berikut:
   + `default_attributes`— Atribut default dalam format JSON.

     Atribut ini ditambahkan ke objek node dengan tipe `default` atribut, yang merupakan tipe yang digunakan oleh semua konfigurasi tumpukan dan penerapan atribut JSON. Contoh ini menggunakan versi yang diedit dari konfigurasi tumpukan dan penerapan JSON yang ditunjukkan sebelumnya.
   + `chef_type`— Atur elemen ini ke`environment`.
   + `json_class`— Atur elemen ini ke`Chef::Environment`.

1. Edit `.kitchen.yml` untuk menentukan lingkungan Test Kitchen, sebagai berikut.

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_solo
     environments_path: ./environments
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: printjson 
       provisioner:
         solo_rb:
           environment: test
       run_list:
         - recipe[printjson::default]
       attributes:
   ```

   Anda menentukan lingkungan dengan menambahkan elemen berikut ke default yang `.kitchen.yml` dibuat oleh`kitchen init`.  
**penyedia**  
Tambahkan elemen berikut.  
   + `name`— Atur elemen ini ke`chef_solo`.

     Untuk mereplikasi lingkungan OpsWorks Stacks lebih dekat, Anda dapat menggunakan [mode lokal klien Chef](https://docs.chef.io/ctl_chef_client.html) alih-alih Chef solo. Mode lokal adalah opsi klien Chef yang menggunakan versi ringan dari server Chef (Chef Zero) yang berjalan secara lokal pada instance alih-alih server jarak jauh. Ini memungkinkan resep Anda untuk menggunakan fitur server Chef seperti pencarian atau tas data tanpa terhubung ke server jarak jauh.
   + `environments_path`— Subdirektori buku masak yang berisi file lingkungan, `./environments` untuk contoh ini.  
**setelan:penyedia**  
Tambahkan `solo_rb` elemen dengan `environment` elemen yang disetel ke nama file lingkungan, dikurangi ekstensi.json. Contoh ini ditetapkan `environment` ke`test`.

1. Buat file resep bernama `default.rb` dengan konten berikut dan simpan ke `recipes` direktori buku masak.

   ```
   log "Stack name: #{node['opsworks']['stack']['name']}"
   log "Stack id: #{node['opsworks']['stack']['id']}"
   ```

   Resep ini hanya mencatat dua konfigurasi tumpukan dan nilai penerapan yang Anda tambahkan ke lingkungan. Meskipun resep berjalan secara lokal di Virtual Box, Anda mereferensikan atribut tersebut menggunakan sintaks node yang sama dengan yang Anda lakukan jika resep berjalan pada instance OpsWorks Stacks.

1. Jalankan `kitchen converge`. Anda akan melihat sesuatu seperti output log berikut.

   ```
   ...
   Converging 2 resources       
   Recipe: printjson::default       
     * log[Stack name: MyStack] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack name: MyStack] action write (printjson::default line 1)       
   [2014-07-01T23:14:09+00:00] INFO: Stack name: MyStack       
                
     * log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write[2014-07-01T23:14:09+00:00] INFO: Processing log[Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58] action write (printjson::default line 2)       
   [2014-07-01T23:14:09+00:00] INFO: Stack id: 42dfd151-6766-4f1c-9940-ba79e5220b58       
   ...
   ```