Contoh 3: Membuat Direktori - AWS OpsWorks

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

Contoh 3: Membuat Direktori

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.

Ketika Anda menginstal paket pada sebuah instance, Anda sering perlu membuat beberapa file konfigurasi dan menempatkannya di direktori yang sesuai. Namun, direktori tersebut mungkin belum ada. Anda mungkin juga perlu membuat direktori untuk data, file log, dan sebagainya. Misalnya, Anda pertama kali mem-boot sistem Ubuntu yang Anda gunakan untuk sebagian besar contoh, /srv direktori tidak memiliki subdirektori. Jika Anda menginstal server aplikasi, Anda mungkin menginginkan /srv/www/ direktori dan mungkin beberapa subdirektori untuk file data, log, dan sebagainya. Resep berikut dibuat /srv/www/ pada sebuah instance.

directory "/srv/www/" do mode 0755 owner 'root' group 'root' action :create end

Anda menggunakan directorysumber daya untuk membuat dan mengkonfigurasi direktori pada sistem Linux dan Windows, meskipun beberapa atribut digunakan secara berbeda. Nama sumber daya adalah nilai default untuk path atribut sumber daya, sehingga contoh membuat /srv/www/ dan menentukanmode,owner, dan group propertinya.

Untuk menjalankan resep
  1. Buat direktori di dalam opsworks_cookbooks bernama createdir dan arahkan ke sana.

  2. Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalamContoh 1: Menginstal Paket, dan tambahkan recipes direktori di dalamnyacreatedir.

  3. Tambahkan default.rb file dengan kode resep ke recipes subdirektori buku masak.

  4. Jalankan kitchen converge untuk mengeksekusi resep.

  5. Jalankankitchen login, navigasikan ke /srv dan verifikasi bahwa ia memiliki www subdirektori.

  6. Jalankan exit untuk kembali ke workstation Anda tetapi biarkan instance berjalan.

catatan

Untuk membuat direktori relatif terhadap direktori home Anda pada instance, gunakan #{ENV['HOME']} untuk mewakili direktori home. Misalnya, berikut ini membuat ~/shared direktori.

directory "#{ENV['HOME']}/shared" do ... end

Misalkan Anda ingin membuat direktori bersarang lebih dalam, seperti/srv/www/shared. Anda dapat memodifikasi resep sebelumnya sebagai berikut.

directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' action :create end
Untuk menjalankan resep
  1. Ganti kode default.rb dengan resep sebelumnya.

  2. Jalankan kitchen converge dari createdir direktori.

  3. Untuk memverifikasi bahwa direktori memang dibuat, jalankankitchen login, navigasikan ke/srv/www, dan verifikasi bahwa itu berisi shared subdirektori.

  4. kitchen destroyJalankan untuk mematikan instance.

Anda akan melihat kitchen converge perintah berjalan lebih cepat. Itu karena instance sudah berjalan, jadi tidak perlu mem-boot instance, menginstal Chef, dan sebagainya. Uji Dapur hanya untuk menyalin buku masak yang diperbarui ke instance dan memulai menjalankan Chef.

Sekarang jalankan kitchen converge lagi, yang mengeksekusi resep pada instance baru. Anda sekarang akan melihat hasil berikut.

Chef Client failed. 0 resources updated in 1.908125788 seconds [2014-06-20T20:54:26+00:00] ERROR: directory[/srv/www/shared] (createdir::default line 1) had an error: Chef::Exceptions::EnclosingDirectoryDoesNotExist: Parent directory /srv/www does not exist, cannot create /srv/www/shared [2014-06-20T20:54:26+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) >>>>>> Converge failed on instance <default-ubuntu-1204>. >>>>>> Please see .kitchen/logs/default-ubuntu-1204.log for more details >>>>>> ------Exception------- >>>>>> Class: Kitchen::ActionFailed >>>>>> Message: SSH exited (1) for command: [sudo -E chef-solo --config /tmp/kitchen/solo.rb --json-attributes /tmp/kitchen/dna.json --log_level info] >>>>>> ----------------------

Apa yang terjadi? Masalahnya adalah bahwa secara default, directory sumber daya hanya dapat membuat satu direktori pada satu waktu; itu tidak dapat membuat rantai direktori. Alasan resep bekerja sebelumnya adalah bahwa resep pertama yang Anda jalankan pada instance telah dibuat/srv/www, jadi membuat /srv/www/shared hanya satu subdirektori.

catatan

Ketika Anda menjalankankitchen converge, pastikan Anda tahu apakah Anda menjalankan resep Anda pada instance baru atau yang sudah ada. Anda mungkin mendapatkan hasil yang berbeda.

Untuk membuat rantai subdirektori, tambahkan recursive atribut ke directory dan atur ke. true Resep berikut dibuat /srv/www/shared langsung pada contoh yang bersih.

directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end