

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

# Memperoleh Nilai Atribut Secara Langsung
<a name="cookbooks-101-opsworks-opsworks-stack-config-node"></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**  
Pendekatan ini hanya berfungsi untuk tumpukan Linux.

[Mengejek Konfigurasi Stack dan Atribut Deployment di Vagrant](opsworks-opsworks-mock.md)menunjukkan cara mendapatkan konfigurasi tumpukan dan data penyebaran dengan menggunakan sintaks node untuk secara langsung mereferensikan atribut tertentu. Ini terkadang merupakan pendekatan terbaik. Namun, banyak atribut didefinisikan dalam koleksi atau daftar yang isi dan namanya dapat bervariasi dari tumpukan ke tumpukan dan dari waktu ke waktu untuk tumpukan tertentu. Misalnya, `deploy` atribut berisi daftar atribut aplikasi, yang diberi nama dengan nama pendek aplikasi. Daftar ini, termasuk nama atribut aplikasi, biasanya bervariasi dari tumpukan ke tumpukan dan bahkan dari penerapan ke penerapan. 

Seringkali lebih berguna, dan kadang-kadang bahkan perlu, untuk mendapatkan data yang diperlukan dengan menghitung atribut dalam daftar atau koleksi. Misalnya, misalkan Anda ingin mengetahui alamat IP publik dari instance tumpukan Anda. Informasi itu ada di `['opsworks']['layers']` atribut, yang diatur ke tabel hash yang berisi satu elemen untuk setiap lapisan tumpukan, dinamai dengan nama pendek layer. Setiap elemen layer diatur ke tabel hash yang berisi atribut layer, salah satunya adalah`['instances']`. Elemen itu pada gilirannya diatur ke tabel hash lain yang berisi atribut untuk setiap instance layer, dinamai dengan shortname instance. Setiap atribut instance diatur ke tabel hash lain yang berisi atribut instance, termasuk`['ip']`, yang mewakili alamat IP publik. Jika Anda mengalami kesulitan memvisualisasikan ini, prosedur berikut menyertakan contoh dalam format JSON.

Contoh ini menunjukkan cara mendapatkan data dari konfigurasi tumpukan dan penyebaran JSON untuk lapisan tumpukan.

**Untuk mengatur buku masak**

1. Buat direktori dalam `opsworks_cookbooks` bernama `listip` 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 direktori ke`listip`: `recipes` dan`environments`.

1. Buat versi JSON yang diedit dari MyStack konfigurasi dan atribut penyebaran yang berisi atribut yang relevan. Seharusnya terlihat seperti berikut ini.

   ```
   {
     "opsworks": {
       "layers": {
         "php-app": {
           "name": "PHP App Server",
           "id": "efd36017-ec42-4423-b655-53e4d3710652",
           "instances": {
             "php-app1": {
               "ip": "192.0.2.0"
             }
           }
         },
         "db-master": {
           "name": "MySQL",
           "id": "2d8e0b9a-0d29-43b7-8476-a9b2591a7251",
           "instances": {
             "db-master1": {
               "ip": "192.0.2.5"
             }
           }
         },
         "lb": {
           "name": "HAProxy",
           "id": "d5c4dda9-2888-4b22-b1ea-6d44c7841193",
           "instances": {
             "lb1": {
               "ip": "192.0.2.10"
             }
           }
         }
       }
     }
   }
   ```

1. Buat file lingkungan bernama`test.json`, tempel contoh JSON ke dalam`default_attributes`, dan simpan file ke folder buku `environments` masak. File akan terlihat seperti berikut (untuk singkatnya, sebagian besar contoh JSON diwakili oleh elipsis).

   ```
   {
     "default_attributes" : {
       "opsworks": {
         "layers": {
           ...
         }
       }
     },
     "chef_type" : "environment",
     "json_class" : "Chef::Environment"
   }
   ```

1. Ganti teks `.kitchen.yml` dengan yang berikut ini.

   ```
   ---
   driver:
     name: vagrant
   
   provisioner:
     name: chef_zero
     environments_path: ./environment
   
   platforms:
     - name: ubuntu-12.04
   
   suites:
     - name: listip 
       provisioner:
         client_rb:
           environment: test
       run_list:
         - recipe[listip::default]
       attributes:
   ```

Setelah buku masak disiapkan, Anda dapat menggunakan resep berikut untuk mencatat lapisan IDs.

```
node['opsworks']['layers'].each do |layer, layerdata|
  log "#{layerdata['name']} : #{layerdata['id']}"
end
```

Resep menghitung lapisan dalam `['opsworks']['layers']` dan mencatat nama dan ID setiap lapisan.

**Untuk menjalankan resep logging ID layer**

1. Buat file bernama `default.rb` dengan resep contoh dan simpan ke `recipes` direktori.

1. Jalankan `kitchen converge`.

Bagian yang relevan dari output akan terlihat seperti berikut ini.

```
Recipe: listip::default       
  * log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 4)       
[2014-07-17T22:56:19+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652       
       
       
  * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 4)       
[2014-07-17T22:56:19+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251       
       
       
  * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T22:56:19+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 4)       
[2014-07-17T22:56:19+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193
```

Untuk membuat daftar alamat IP instance, Anda memerlukan loop bersarang seperti berikut ini.

```
node['opsworks']['layers'].each do |layer, layerdata|
  log "#{layerdata['name']} : #{layerdata['id']}"
  layerdata['instances'].each do |instance, instancedata|
    log "Public IP: #{instancedata['ip']}"
  end
end
```

Loop bagian dalam mengulangi instance setiap lapisan dan mencatat alamat IP.

**Untuk menjalankan contoh resep pencatatan IP**

1. Ganti kode `default.rb` dengan resep contoh.

1. Jalankan `kitchen converge` untuk mengeksekusi resep.

Bagian yang relevan dari output akan terlihat seperti berikut ini.

```
  * log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[PHP App Server : efd36017-ec42-4423-b655-53e4d3710652] action write (listip::default line 2)       
[2014-07-17T23:09:34+00:00] INFO: PHP App Server : efd36017-ec42-4423-b655-53e4d3710652       
       
       
  * log[Public IP: 192.0.2.0] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.0] action write (listip::default line 4)       
[2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.0       
       
       
  * log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251] action write (listip::default line 2)       
[2014-07-17T23:09:34+00:00] INFO: MySQL : 2d8e0b9a-0d29-43b7-8476-a9b2591a7251       
       
       
  * log[Public IP: 192.0.2.5] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.5] action write (listip::default line 4)       
[2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.5       
       
       
  * log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193] action write (listip::default line 2)       
[2014-07-17T23:09:34+00:00] INFO: HAProxy : d5c4dda9-2888-4b22-b1ea-6d44c7841193       
       
       
  * log[Public IP: 192.0.2.10] action write[2014-07-17T23:09:34+00:00] INFO: Processing log[Public IP: 192.0.2.10] action write (listip::default line 4)       
[2014-07-17T23:09:34+00:00] INFO: Public IP: 192.0.2.10
```

Setelah selesai, jalankan`kitchen destroy`; topik berikutnya menggunakan buku masak baru.

**catatan**  
Salah satu alasan paling umum untuk menghitung konfigurasi tumpukan dan pengumpulan JSON penyebaran adalah untuk mendapatkan data untuk aplikasi yang diterapkan tertentu, seperti direktori penerapannya. Sebagai contoh, lihat [Menyebarkan Resep](create-custom-deploy.md).