

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

# Langkah 2.5: Menerapkan Aplikasi
<a name="gettingstarted-windows-deploy"></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.

Instalasi IIS membuat `C:\inetpub\wwwroot` direktori untuk kode aplikasi Anda dan file terkait. Langkah selanjutnya adalah menginstal aplikasi di direktori itu. Untuk contoh ini, Anda akan menginstal halaman beranda HTML statis,`default.html`, di`C:\inetpub\wwwroot`. Anda dapat dengan mudah memperluas pendekatan umum untuk menangani skenario yang lebih kompleks, seperti aplikasi ASP.NET.

Anda dapat memasukkan file aplikasi di buku masak Anda dan `install.rb` menyalinnya. `C:\inetpub\wwwroot` Untuk contoh cara melakukannya, lihat [Contoh 6: Membuat File](cookbooks-101-basics-files.md). Namun, pendekatan ini tidak terlalu fleksibel atau efisien, dan biasanya lebih baik untuk memisahkan pengembangan buku masak dari pengembangan aplikasi.

Solusi yang lebih disukai adalah menerapkan resep penyebaran terpisah yang mengambil kode aplikasi dan file terkait dari repositori — repositori apa pun yang Anda inginkan, bukan hanya repositori buku masak — dan menginstalnya di setiap instance server IIS. Pendekatan ini memisahkan pengembangan buku masak dari pengembangan aplikasi dan, ketika Anda perlu memperbarui aplikasi Anda, ini memungkinkan Anda untuk menjalankan resep penerapan lagi tanpa harus memperbarui buku masak Anda.

Topik ini menunjukkan cara menerapkan resep penyebaran sederhana yang disebarkan `default.htm` ke server IIS Anda. Anda dapat dengan mudah memperluas contoh ini ke aplikasi yang lebih kompleks.

**Topics**
+ [Buat Aplikasi dan Simpan di Repositori](#w2ab1c14c47c17c23c25c15)
+ [Menerapkan Resep untuk Menyebarkan Aplikasi](#w2ab1c14c47c17c23c25c17)
+ [Perbarui Buku Masak Instance](#w2ab1c14c47c17c23c25c19)
+ [Tambahkan Resep ke Layer IIS Kustom](#w2ab1c14c47c17c23c25c21)
+ [Menambahkan Aplikasi](#w2ab1c14c47c17c23c25c23)
+ [Terapkan Aplikasi dan Buka Aplikasi](#w2ab1c14c47c17c23c25c25)

## Buat Aplikasi dan Simpan di Repositori
<a name="w2ab1c14c47c17c23c25c15"></a>

Anda dapat menggunakan repositori apa pun yang Anda inginkan untuk aplikasi Anda. Untuk kesederhanaan, contoh ini disimpan `default.htm` di bucket S3 publik.

**Untuk membuat aplikasi**

1. Buat direktori bernama `iis-application` di lokasi yang nyaman di workstation Anda.

1. Tambahkan `default.htm` file `iis-application` dengan konten berikut.

   ```
   <!DOCTYPE html>
   <html>
     <head>
       <title>IIS Example</title>
     </head>
     <body>
       <h1>Hello World!</h1>
     </body>
   </html>
   ```

1. [Buat bucket S3](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html), [unggah `default.htm` ke bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/PuttingAnObjectInABucket.html), dan rekam URL untuk digunakan nanti. Untuk kesederhanaan, [buat file publik](https://docs.aws.amazon.com/AmazonS3/latest/gsg/OpeningAnObject.html). 
**catatan**  
Ini adalah aplikasi yang sangat sederhana, tetapi Anda dapat memperluas prinsip-prinsip dasar untuk menangani aplikasi tingkat produksi.  
Untuk aplikasi yang lebih kompleks dengan banyak file, biasanya lebih mudah untuk membuat arsip.zip `iis-application` dan mengunggahnya ke bucket S3 Anda.  
Anda kemudian dapat mengunduh file.zip dan mengekstrak konten ke direktori yang sesuai. Tidak perlu mengunduh banyak file, membuat struktur direktori, atau sebagainya.
Untuk aplikasi produksi, Anda mungkin ingin menyimpan file Anda secara pribadi. Untuk contoh cara mengunduh file resep dari bucket S3 pribadi, lihat[Menggunakan SDK for Ruby OpsWorks pada Instans Windows Stacks](cookbooks-101-opsworks-s3-windows.md).
Anda dapat menyimpan aplikasi Anda di repositori yang sesuai.  
Anda biasanya mengunduh aplikasi dengan menggunakan API publik repositori. Contoh ini menggunakan Amazon S3 API. Jika, misalnya, Anda menyimpan aplikasi Anda GitHub, Anda dapat menggunakan [GitHub API](https://developer.github.com/guides/getting-started/).

## Menerapkan Resep untuk Menyebarkan Aplikasi
<a name="w2ab1c14c47c17c23c25c17"></a>

Tambahkan resep bernama `deploy.rb` ke `iis-cookbook` `recipes` direktori, dengan konten berikut.

```
chef_gem "aws-sdk-s3" do
  compile_time false
  action :install
end

ruby_block "download-object" do
  block do
    require 'aws-sdk-s3'

    #1  
    # Aws.config[:ssl_ca_bundle] = 'C:\ProgramData\Git\bin\curl-ca-bundle.crt'
    Aws.use_bundled_cert!

    #2  
    query = Chef::Search::Query.new
    app = query.search(:aws_opsworks_app, "type:other").first
    s3region = app[0][:environment][:S3REGION]
    s3bucket = app[0][:environment][:BUCKET]
    s3filename = app[0][:environment][:FILENAME]

    #3  
    s3_client = Aws::S3::Client.new(region: s3region)
    s3_client.get_object(bucket: s3bucket,
                         key: s3filename,
                         response_target: 'C:\inetpub\wwwroot\default.htm')
  end 
  action :run
end
```

Contoh ini menggunakan [SDK for Ruby v2 untuk](https://docs.aws.amazon.com/sdkforruby/api/index.html) mengunduh file. Namun, OpsWorks Stacks tidak menginstal SDK ini pada instance Windows, jadi resep dimulai dengan [https://docs.chef.io/chef/resources.html#chef-gem](https://docs.chef.io/chef/resources.html#chef-gem)sumber daya, yang menangani tugas itu.

**catatan**  
`chef_gem`Sumber daya menginstal permata ke dalam versi Ruby khusus Chef, yang merupakan versi yang digunakan resep. [Jika Anda ingin menginstal permata untuk versi Ruby seluruh sistem, gunakan sumber daya gem\$1package.](https://docs.chef.io/chef/resources.html#gem-package)

Sebagian besar resep adalah [https://docs.chef.io/chef/resources.html#ruby-block](https://docs.chef.io/chef/resources.html#ruby-block)sumber daya, yang menjalankan blok kode Ruby yang menggunakan SDK for Ruby untuk diunduh. `default.htm` Kode dalam `ruby_block` dapat dibagi menjadi beberapa bagian berikut, yang sesuai dengan komentar bernomor dalam contoh kode. 

**1: Tentukan Bundel Sertifikat**  
Amazon S3 menggunakan SSL, jadi Anda memerlukan sertifikat yang sesuai untuk mengunduh objek dari bucket S3. SDK for Ruby v2 tidak menyertakan bundel sertifikat, jadi Anda harus menyediakannya dan mengonfigurasi SDK for Ruby untuk menggunakannya. OpsWorks Stacks tidak menginstal bundel sertifikat secara langsung, tetapi menginstal Git, yang mencakup bundel sertifikat (`curl-ca-bundle.crt`). Untuk kenyamanan, contoh ini mengonfigurasi SDK for Ruby untuk menggunakan bundel sertifikat Git untuk SSL. Anda juga dapat menginstal bundel Anda sendiri dan mengonfigurasi SDK yang sesuai.

**2: Ambil Data Repositori**  
Untuk mengunduh objek dari Amazon S3, Anda memerlukan wilayah AWS, nama bucket, dan nama kunci. Seperti yang dijelaskan nanti, contoh ini memberikan informasi ini dengan mengaitkan satu set variabel lingkungan dengan aplikasi. Saat Anda menerapkan aplikasi, OpsWorks Stacks menambahkan satu set atribut ke objek node instance. Atribut ini pada dasarnya adalah tabel hash yang berisi konfigurasi aplikasi, termasuk variabel lingkungan. Atribut aplikasi untuk aplikasi ini akan terlihat seperti berikut, dalam format JSON.   

```
{
  "app_id": "8f71a9b5-de7f-451c-8505-3f35086e5bb3",
  "app_source": {
      "password": null,
      "revision": null,
      "ssh_key": null,
      "type": "other",
      "url": null,
      "user": null
  },
  "attributes": {
      "auto_bundle_on_deploy": true,
      "aws_flow_ruby_settings": {},
      "document_root": null,
      "rails_env": null
  },
  "data_sources": [{"type": "None"}],
  "domains": ["iis_example_app"],
  "enable_ssl": false,
  "environment": {
      "S3REGION": "us-west-2",
      "BUCKET": "windows-example-app",
      "FILENAME": "default.htm"
  },
  "name": "IIS-Example-App",
  "shortname": "iis_example_app",
  "ssl_configuration": {
      "certificate": null,
      "private_key": null,
      "chain": null
  },
  "type": "other",
  "deploy": true
}
```
Variabel lingkungan aplikasi disimpan dalam `[:environment]` atribut. Untuk mengambilnya, gunakan kueri penelusuran Chef untuk mengambil tabel hash aplikasi, yang berada di bawah node. `aws_opsworks_app` Aplikasi ini akan didefinisikan sebagai `other` jenisnya, sehingga kueri mencari aplikasi jenis itu. Resepnya memanfaatkan fakta bahwa hanya ada satu aplikasi pada contoh ini, jadi tabel hash yang menarik adalah adil`app[0]`. Untuk kenyamanan, resep kemudian menetapkan wilayah, ember, dan nama file ke variabel.  
Untuk informasi selengkapnya tentang cara menggunakan pencarian Chef, lihat. [Memperoleh Nilai Atribut dengan Pencarian Chef](cookbooks-101-opsworks-opsworks-stack-config-search.md)

**3: Unduh file**  
Bagian ketiga dari resep membuat [objek klien S3](https://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html) dan menggunakan `[get\$1object](https://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Client.html#get_object-instance_method)` metodenya untuk mengunduh `default.htm` ke `C:\inetpub\wwwroot` direktori instance. 

**catatan**  
Resep adalah aplikasi Ruby, jadi kode Ruby tidak harus ada di file. `ruby_block` Namun, kode di badan resep berjalan lebih dulu, diikuti oleh sumber daya, secara berurutan. Untuk contoh ini, jika Anda meletakkan kode unduhan di badan resep, itu akan gagal karena `chef_gem` sumber daya belum menginstal SDK for Ruby. Kode dalam `ruby_block` sumber daya dijalankan ketika sumber daya dijalankan, setelah sumber `chef_gem` daya menginstal SDK for Ruby.

## Perbarui Buku Masak Instance
<a name="w2ab1c14c47c17c23c25c19"></a>

OpsWorks Stacks secara otomatis menginstal buku masak khusus pada instance baru. Namun, Anda bekerja dengan instance yang ada, jadi Anda harus memperbarui buku masak Anda secara manual.

**Untuk memperbarui buku masak instans**

1. Buat `.zip` arsip`iis-cookbook`, dan unggah ke bucket S3.

   Ini menimpa buku masak yang ada, tetapi URL-nya tetap sama, jadi Anda tidak perlu memperbarui konfigurasi tumpukan.

1. Jika instans Anda tidak online, restart.

1. Setelah instance online, pilih **Stack** di panel navigasi, lalu pilih **Run Command**.

1. Untuk **Perintah**, pilih [Perbarui Buku Masak Kustom](workingstacks-commands.md). Perintah ini menginstal buku masak yang diperbarui pada instance.

1. Pilih **Perbarui Buku Masak Kustom**. Perintah mungkin memakan waktu beberapa menit untuk menyelesaikannya.

## Tambahkan Resep ke Layer IIS Kustom
<a name="w2ab1c14c47c17c23c25c21"></a>

Seperti halnya`install.rb`, cara yang lebih disukai untuk menangani penerapan adalah dengan menetapkan `deploy.rb` ke peristiwa siklus hidup yang sesuai. Anda biasanya menetapkan resep penyebaran ke acara Deploy, dan mereka disebut secara kolektif sebagai resep Deploy. Menetapkan resep ke acara Deploy tidak memicu peristiwa. Sebagai gantinya:
+ Untuk instance baru, OpsWorks Stacks secara otomatis menjalankan resep Deploy setelah resep Setup selesai, sehingga instance baru secara otomatis memiliki versi aplikasi saat ini.
+ Untuk instance online, Anda menggunakan [perintah deploy](workingapps-deploying.md) untuk menginstal aplikasi baru atau yang diperbarui secara manual.

  Perintah ini memicu peristiwa Deploy pada instance stack, yang menjalankan resep Deploy.

**Untuk menetapkan deploy.rb ke event Deploy layer**

1. Pilih **Layers** di panel navigasi, lalu pilih **Recipes** di bawah **Layer IISExample**.

1. Di bawah **Custom Chef Recipes**, tambahkan **iis-cookbook::deploy** ke kotak **Deploy** recipes dan pilih **\$1** untuk menambahkan resep ke layer.

1. Pilih **Simpan** untuk menyimpan konfigurasi baru. Resep Deploy khusus sekarang harus disertakan`iis-cookbook::deploy`.

## Menambahkan Aplikasi
<a name="w2ab1c14c47c17c23c25c23"></a>

Tugas terakhir adalah menambahkan aplikasi ke tumpukan untuk mewakili aplikasi Anda di lingkungan OpsWorks Stacks. Aplikasi menyertakan metadata seperti nama tampilan aplikasi, dan data yang diperlukan untuk mengunduh aplikasi dari repositorinya.

**Untuk menambahkan aplikasi ke tumpukan**

1. Pilih **Aplikasi** di panel navigasi, lalu pilih **Tambahkan aplikasi**.

1. Konfigurasikan aplikasi dengan pengaturan berikut.
   + **Nama** - I **IIS-Example-App**
   + **Jenis Repositori** **— Lainnya**
   + **Variabel Lingkungan** - Tambahkan tiga variabel lingkungan berikut:
     + **S3REGION**— Wilayah ember (dalam hal ini,`us-west-1`).
     + **BUCKET**— Nama ember, seperti`windows-example-app`.
     + **FILENAME**— Nama file:**default.htm**.

1. Terima nilai default untuk setelan yang tersisa, lalu pilih **Tambah Aplikasi** untuk menambahkan aplikasi ke tumpukan.

**catatan**  
Contoh ini menggunakan variabel lingkungan untuk menyediakan data unduhan. Pendekatan alternatif adalah dengan menggunakan jenis repositori Arsip S3 dan menyediakan URL file. OpsWorks Stacks menambahkan informasi, bersama dengan data opsional, seperti kredensil AWS Anda, ke atribut aplikasi. `app_source` Resep penerapan Anda harus mendapatkan URL dari atribut aplikasi dan mengurainya untuk mengekstrak wilayah, nama bucket, dan nama file.

## Terapkan Aplikasi dan Buka Aplikasi
<a name="w2ab1c14c47c17c23c25c25"></a>

OpsWorks Stacks secara otomatis menyebarkan aplikasi ke instance baru, tetapi tidak ke instance online. Karena instance Anda sudah berjalan, Anda harus menerapkan aplikasi secara manual.

**Untuk menyebarkan aplikasi**

1. Pilih **Aplikasi** di panel navigasi, lalu pilih **deploy** di kolom **Tindakan** aplikasi.

1. **Perintah** harus diatur ke **Deploy**. Pilih **Deploy** di kanan bawah halaman **Deploy App**. Perintah mungkin memakan waktu beberapa menit untuk menyelesaikannya.

   Setelah penerapan selesai, Anda kembali ke halaman **Aplikasi**. Indikator **Status** menunjukkan **keberhasilan** dalam warna hijau, dan nama aplikasi memiliki tanda centang hijau di sebelahnya untuk menunjukkan penerapan yang berhasil.

**catatan**  
Aplikasi Windows selalu merupakan jenis aplikasi **Lain**, jadi menerapkan aplikasi melakukan hal berikut:  
Menambahkan data aplikasi ke [konfigurasi stack dan atribut deployment](workingcookbook-json.md), seperti yang dijelaskan sebelumnya.
Memicu peristiwa Deploy pada instance stack, yang menjalankan resep Deploy kustom Anda.

**catatan**  
Untuk informasi selengkapnya tentang cara memecahkan masalah penerapan atau aplikasi yang gagal, lihat. [Resep Debugging](troubleshoot-debug.md)

Aplikasi ini sekarang diinstal. Anda dapat membukanya dengan memilih **Instans** di panel **Navigasi**, lalu memilih alamat IP publik instans. Ini mengirimkan permintaan HTTP ke instance, dan Anda akan melihat sesuatu seperti berikut di browser Anda.

![\[Text displaying "Hello World!" in large, bold font against a white background.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/windows-iis-app.png)
