

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
<a name="cookbooks-101-basics-commands"></a>

**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](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

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. 

**Topics**
+ [Menjalankan Perintah](#cookbooks-101-basics-commands-script)
+ [Menjalankan Skrip](#cookbooks-101-basics-commands-execute)

## Menjalankan Perintah
<a name="cookbooks-101-basics-commands-script"></a>

Sumber [https://docs.chef.io/chef/resources.html#script](https://docs.chef.io/chef/resources.html#script)daya menjalankan satu atau lebih perintah. Ini mendukung penerjemah perintah csh, bash, Perl, Python, dan Ruby, sehingga dapat digunakan pada sistem Linux atau Windows selama mereka memiliki interpreter yang sesuai diinstal. Topik ini menunjukkan cara menjalankan perintah bash sederhana pada instance Linux. Chef juga mendukung [powershell\$1script](https://docs.chef.io/chef/resources.html#powershell-script) dan sumber daya [batch](https://docs.chef.io/chef/resources.html#batch) untuk menjalankan skrip di Windows. Untuk informasi selengkapnya, lihat [Menjalankan PowerShell Skrip Windows](cookbooks-101-opsworks-opsworks-powershell.md). 

**Untuk memulai**

1. Di dalam `opsworks_cookbooks` direktori, buat direktori bernama `script` dan navigasikan ke sana.

1. Tambahkan `metadata.rb` file `script` dengan konten berikut.

   ```
   name "script"
   version "0.1.0"
   ```

1. Inisialisasi dan konfigurasikan Test Kitchen, seperti yang dijelaskan dalam[Contoh 1: Menginstal Paket](cookbooks-101-basics-packages.md), dan hapus CentOS dari `platforms` daftar.

1. Di dalam`script`, buat direktori bernama`recipes`.

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 [https://docs.chef.io/chef/resources.html#bash](https://docs.chef.io/chef/resources.html#bash)sumber daya untuk menjalankan skrip bash sederhana.

```
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 di `code` blok.

  Contoh ini memiliki satu perintah`touch somefile`, tetapi sebuah `code` blok dapat berisi beberapa perintah.
+ `user`Atribut menentukan pengguna yang mengeksekusi perintah.
+ `cwd`Atribut menentukan direktori kerja.

  Untuk contoh ini, `touch` buat file di `/tmp` direktori.
+ Atribut `not_if` guard mengarahkan sumber daya untuk tidak mengambil tindakan jika file sudah ada.

**Untuk menjalankan resep**

1. Buat `default.rb` file yang berisi kode contoh sebelumnya dan simpan ke. `recipes`

1. Jalankan`kitchen converge`, lalu masuk ke instance untuk memverifikasi bahwa file tersebut masuk`/tmp`.

## Menjalankan Skrip
<a name="cookbooks-101-basics-commands-execute"></a>

`script`Sumber daya nyaman, terutama jika Anda hanya perlu menjalankan satu atau dua perintah, tetapi seringkali lebih baik untuk menyimpan skrip dalam file dan menjalankan file. [https://docs.chef.io/chef/resources.html#execute](https://docs.chef.io/chef/resources.html#execute)Sumber daya menjalankan file yang dapat dieksekusi tertentu, termasuk file skrip, di Linux atau Windows. Topik ini memodifikasi `script` 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**

1. Tambahkan `files` subdirektori ke `script` dan `default` subdirektori ke. `files`

1. Buat file bernama `touchfile` yang berisi berikut ini dan tambahkan ke`files/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 somefile
   ```

   File skrip dapat berisi sejumlah perintah. Untuk kenyamanan, contoh skrip ini hanya memiliki satu `touch` perintah.

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_file`Sumber daya menyalin file skrip ke `/tmp` dan mengatur mode untuk membuat file dapat dieksekusi. Sumber `execute` daya kemudian mengeksekusi file sebagai berikut:
+ `user`Atribut menentukan pengguna perintah (`root`dalam contoh ini).
+ `cwd`Atribut menentukan direktori kerja (`/tmp`dalam contoh ini).
+ `command`Atribut menentukan skrip yang akan dieksekusi (`touchfile`dalam contoh ini), yang terletak di direktori kerja.

**Untuk menjalankan resep**

1. Ganti kode `recipes/default.rb` dengan contoh sebelumnya.

1. Jalankan`kitchen converge`, lalu masuk ke instance untuk memverifikasi bahwa `/tmp` sekarang berisi file skrip, dengan mode diatur ke 0755, dan`somefile`.

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