Memperoleh Nilai Atribut Secara Langsung - AWS OpsWorks

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

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

Pendekatan ini hanya berfungsi untuk tumpukan Linux.

Mengejek Konfigurasi Stack dan Atribut Deployment di Vagrantmenunjukkan 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.

  2. Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalamContoh 1: Menginstal Paket.

  3. Tambahkan dua direktori kelistip: recipes danenvironments.

  4. 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" } } } } } }
  5. Buat file lingkungan bernamatest.json, tempel contoh JSON ke dalamdefault_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" }
  6. 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 diatur, Anda dapat menggunakan resep berikut untuk mencatat ID lapisan.

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.

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

  2. 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, jalankankitchen 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.