Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh 7: Menjalankan Perintah dan Skrip
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
Sumber daya koki dapat menangani berbagai macam tugas pada sebuah instance, tetapi terkadang lebih baik menggunakan perintah shell atau skrip. Misalnya, Anda mungkin sudah memiliki skrip yang Anda gunakan untuk menyelesaikan tugas tertentu, dan akan lebih mudah untuk terus menggunakannya daripada menerapkan kode baru. Bagian ini menunjukkan cara menjalankan perintah atau skrip pada sebuah instance.
Menjalankan Perintah
Sumber script
Untuk memulai
-
Di dalam
opsworks_cookbooksdirektori, buat direktori bernamascriptdan navigasikan ke sana. -
Tambahkan
metadata.rbfilescriptdengan konten berikut.name "script" version "0.1.0" -
Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalamContoh 1: Menginstal Paket, dan hapus CentOS dari
platformsdaftar. -
Di dalam
script, buat direktori bernamarecipes.
Anda dapat menjalankan perintah dengan menggunakan script sumber daya itu sendiri, tetapi Chef juga mendukung satu set versi khusus penerjemah perintah dari sumber daya, yang dinamai untuk penerjemah. Resep berikut menggunakan bash
bash "install_something" do user "root" cwd "/tmp" code <<-EOH touch somefile EOH not_if do File.exists?("/tmp/somefile") end end
Sumber bash daya dikonfigurasi sebagai berikut.
-
Ini menggunakan tindakan default,
run, yang menjalankan perintah dicodeblok.Contoh ini memiliki satu perintah
touch somefile, tetapicodeblok dapat berisi beberapa perintah. -
userAtribut menentukan pengguna yang mengeksekusi perintah. -
cwdAtribut menentukan direktori kerja.Untuk contoh ini,
touchbuat file di/tmpdirektori. -
Atribut
not_ifguard mengarahkan sumber daya untuk tidak mengambil tindakan jika file sudah ada.
Untuk menjalankan resep
-
Buat
default.rbfile yang berisi kode contoh sebelumnya dan simpan ke.recipes -
Jalankan
kitchen converge, lalu masuk ke instance untuk memverifikasi bahwa file tersebut masuk/tmp.
Menjalankan Skrip
scriptSumber daya nyaman, terutama jika Anda hanya perlu menjalankan satu atau dua perintah, tetapi seringkali lebih baik untuk menyimpan skrip dalam file dan menjalankan file. executescript buku masak dari contoh sebelumnya untuk digunakan execute untuk menjalankan skrip shell sederhana. Anda dapat dengan mudah memperluas contoh ke skrip yang lebih kompleks, atau jenis file yang dapat dieksekusi lainnya.
Untuk mengatur file skrip
-
Tambahkan
filessubdirektori kescriptdandefaultsubdirektori ke.files -
Buat file bernama
touchfileyang berisi berikut ini dan tambahkan kefiles/default. Baris interpreter Bash umum digunakan dalam contoh ini, tetapi gantikan interpreter yang berfungsi untuk lingkungan shell Anda jika perlu.#!/usr/bin/env bash touch somefileFile skrip dapat berisi sejumlah perintah. Untuk kenyamanan, contoh skrip ini hanya memiliki satu
touchperintah.
Resep berikut mengeksekusi skrip.
cookbook_file "/tmp/touchfile" do source "touchfile" mode 0755 end execute "touchfile" do user "root" cwd "/tmp" command "./touchfile" end
cookbook_fileSumber daya menyalin file skrip ke /tmp dan mengatur mode untuk membuat file dapat dieksekusi. Sumber execute daya kemudian mengeksekusi file sebagai berikut:
-
userAtribut menentukan pengguna perintah (rootdalam contoh ini). -
cwdAtribut menentukan direktori kerja (/tmpdalam contoh ini). -
commandAtribut menentukan skrip yang akan dieksekusi (touchfiledalam contoh ini), yang terletak di direktori kerja.
Untuk menjalankan resep
-
Ganti kode
recipes/default.rbdengan contoh sebelumnya. -
Jalankan
kitchen converge, lalu masuk ke instance untuk memverifikasi bahwa/tmpsekarang berisi file skrip, dengan mode diatur ke 0755, dansomefile.
Setelah selesai, jalankan kitchen destroy untuk mematikan instance. Bagian selanjutnya menggunakan buku masak baru.