Contoh 6: Membuat File - AWS OpsWorks

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

Contoh 6: Membuat File

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.

Setelah Anda membuat direktori, Anda sering perlu mengisinya dengan file konfigurasi, file data, dan sebagainya. Topik ini menunjukkan dua cara untuk menginstal file pada sebuah instance.

Menginstal File dari Cookbook

Cara termudah untuk menginstal file pada instance adalah dengan menggunakan cookbook_filesumber daya, yang menyalin file dari buku masak ke lokasi tertentu pada instance untuk sistem Linux dan Windows. Contoh ini memperluas resep dari Contoh 3: Membuat Direktori untuk menambahkan file data /srv/www/shared setelah direktori dibuat. Sebagai referensi, berikut resep aslinya.

directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
Untuk mengatur buku masak
  1. Di dalam opsworks_cookbooks direktori, buat direktori bernama createfile dan navigasikan ke sana.

  2. Tambahkan metadata.rb file createfile dengan konten berikut.

    name "createfile" version "0.1.0"
  3. Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalamContoh 1: Menginstal Paket, dan hapus CentOS dari platforms daftar.

  4. Tambahkan recipes subdirektori kecreatefile.

File yang akan diinstal berisi data JSON berikut.

{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }
Untuk mengatur file data
  1. Tambahkan files subdirektori ke createfile dan default subdirektori ke. files Setiap file yang Anda instal dengan cookbook_file harus dalam subdirektorifiles, seperti files/default dalam contoh ini.

    catatan

    Jika Anda ingin menentukan file yang berbeda untuk sistem yang berbeda, Anda dapat menempatkan setiap file khusus sistem dalam subfolder yang diberi nama untuk sistem, seperti. files/ubuntu cookbook_fileSumber daya menyalin file spesifik sistem yang sesuai, jika ada, dan sebaliknya menggunakan file tersebut. default Untuk informasi selengkapnya, lihat cookbook_file.

  2. Buat file bernama example_data.json dengan JSON dari contoh sebelumnya dan tambahkan ke. files/default

Resep berikut menyalin example_data.json ke lokasi tertentu.

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

Setelah sumber daya direktori dibuat/srv/www/shared, cookbook_file sumber daya menyalin example_data.json ke direktori itu dan juga menetapkan pengguna, grup, dan mode file.

catatan

Sumber cookbook_file daya memperkenalkan tindakan baru:create_if_missing. Anda juga dapat menggunakan create tindakan, tetapi itu menimpa file yang ada. Jika Anda tidak ingin menimpa apa pun, gunakancreate_if_missing, yang menginstal example_data.json hanya jika belum ada.

Untuk menjalankan resep
  1. Jalankan kitchen destroy untuk memulai dengan contoh baru.

  2. Buat default.rb file yang berisi resep sebelumnya dan simpan ke. recipes

  3. Jalankankitchen converge, lalu masuk ke instance untuk memverifikasi yang /srv/www/shared berisiexample_data.json.

Membuat File dari Template

cookbook_fileSumber daya ini berguna untuk beberapa tujuan, tetapi hanya menginstal file apa pun yang Anda miliki di buku masak. templateSumber daya menyediakan cara yang lebih fleksibel untuk menginstal file pada instance Windows atau Linux dengan membuatnya secara dinamis dari template. Anda kemudian dapat menentukan detail konten file saat runtime dan mengubahnya sesuai kebutuhan. Misalnya, Anda mungkin ingin file konfigurasi memiliki pengaturan tertentu ketika Anda memulai instance dan memodifikasi pengaturan nanti ketika Anda menambahkan lebih banyak instance ke tumpukan.

Contoh ini memodifikasi createfile buku masak untuk menggunakan template sumber daya untuk menginstal versi yang sedikit dimodifikasi. example_data.json

Inilah yang akan terlihat seperti file yang diinstal.

{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true, "a_string" : "some string", "platform" : "ubuntu" }

Sumber daya template biasanya digunakan bersama dengan file atribut, jadi contoh menggunakan satu untuk menentukan nilai-nilai berikut.

default['createfile']['my_name'] = 'myname' default['createfile']['your_name'] = 'yourname' default['createfile']['install_file'] = true
Untuk mengatur buku masak
  1. Hapus files direktori createfile buku masak dan isinya.

  2. Tambahkan attributes subdirektori ke createfile dan tambahkan default.rb file attributes yang berisi definisi atribut sebelumnya.

Template adalah .erb file yang pada dasarnya adalah salinan dari file akhir, dengan beberapa konten diwakili oleh placeholder. Saat template sumber daya membuat file, ia menyalin konten template ke file yang ditentukan, dan menimpa placeholder dengan nilai yang ditetapkan. Berikut template untukexample_data.json.

{ "my_name" : "<%= node['createfile']['my_name'] %>", "your_name" : "<%= node['createfile']['your_name'] %>", "a_number" : 42, "a_boolean" : <%= @a_boolean_var %>, "a_string" : "<%= @a_string_var %>", "platform" : "<%= node['platform'] %>" }

<%=...%>Nilainya adalah placeholder.

  • <%=node[...]%>merupakan nilai atribut node.

    Untuk contoh ini, nilai “your_name” adalah placeholder yang mewakili salah satu nilai atribut dari file atribut buku masak.

  • <%=@...%>mewakili nilai variabel yang didefinisikan dalam sumber daya template, seperti yang dibahas segera.

Untuk membuat file template
  1. Tambahkan templates subdirektori ke createfile buku masak dan default subdirektori ke. templates

    catatan

    templatesDirektori bekerja seperti files direktori. Anda dapat menempatkan template khusus sistem dalam subdirektori seperti ubuntu yang dinamai untuk sistem. templateSumber daya menggunakan templat khusus sistem yang sesuai jika ada dan menggunakan templat. default

  2. Buat file bernama example_data.json.erb dan masukkan ke dalam templates/default direktori. Nama template bersifat arbitrer, tetapi Anda biasanya membuatnya dengan menambahkan .erb ke nama file, termasuk ekstensi apa pun.

Resep berikut menggunakan sumber template daya untuk membuat/srv/www/shared/example_data.json.

directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end template "/srv/www/shared/example_data.json" do source "example_data.json.erb" mode 0644 variables( :a_boolean_var => true, :a_string_var => "some string" ) only_if {node['createfile']['install_file']} end

Sumber template daya dibuat example_data.json dari template dan menginstalnya di/srv/www/shared.

  • Nama template,/srv/www/shared/example_data.json, menentukan jalur dan nama file yang diinstal.

  • sourceAtribut menentukan template yang digunakan untuk membuat file.

  • modeAtribut menentukan mode file yang diinstal.

  • Sumber daya mendefinisikan dua variabel, a_boolean_var dana_string_var.

    Ketika sumber daya dibuatexample_data.json, ia menimpa placeholder variabel dalam template dengan nilai yang sesuai dari sumber daya.

  • Atribut only_if guard mengarahkan sumber daya untuk membuat file hanya jika ['createfile']['install_file'] diatur ketrue.

Untuk menjalankan resep
  1. Jalankan kitchen destroy untuk memulai dengan contoh baru.

  2. Ganti kode recipes/default.rb dengan contoh sebelumnya.

  3. Jalankankitchen converge, lalu masuk ke instance untuk memverifikasi bahwa file tersebut masuk /srv/www/shared dan memiliki konten yang benar.

Setelah selesai, jalankan kitchen destroy untuk mematikan instance. Bagian selanjutnya menggunakan buku masak baru.