Mengejek Konfigurasi Stack dan Atribut Deployment di Vagrant - AWS OpsWorks

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

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

Topik ini hanya berlaku untuk instance Linux. Test Kitchen belum mendukung Windows, jadi Anda akan menjalankan semua contoh Windows pada instance AWS OpsWorks Stacks.

AWS OpsWorks Stacks menambahkan konfigurasi tumpukan dan atribut penerapan 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 AWS OpsWorks Stacks menggunakan satu atau lebih atribut ini.

Instance yang berjalan di kotak Vagrant tidak dikelola oleh AWS 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 AWS 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 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.

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

  3. Tambahkan dua subdirektori keprintjson: 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.

  • 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 AWS 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 dariMemulai dengan Chef 11 Linux Stacks, 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 dalamMemulai dengan Chef 11 Linux Stacks, termasuk menerapkan SimplePhpApp. Jika mau, Anda dapat menghilangkan instance PHP App Server kedua yang dipanggilLangkah 4: Skala Keluar MyStack; contoh tidak menggunakan atribut tersebut.

  2. Jika Anda belum melakukannya, mulai php-app1 instance, lalu masuk dengan SSH.

  3. Di jendela terminal, jalankan perintah agent cli berikut:

    sudo opsworks-agent-cli get_json

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

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

  5. 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 keenvironment.

    • json_class— Atur elemen ini keChef::Environment.

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

    penyedia

    Tambahkan elemen-elemen berikut.

    • name— Atur elemen ini kechef_solo.

      Untuk mereplikasi lingkungan AWS OpsWorks Stacks lebih dekat, Anda dapat menggunakan mode lokal klien Chef 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 ketest.

  3. 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 AWS OpsWorks Stacks.

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