

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

# Contoh 9: Menggunakan EC2 Instans Amazon
<a name="cookbooks-101-basics-ec2"></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.

Sampai titik ini, Anda telah menjalankan instance secara lokal di. VirtualBox Meskipun ini cepat dan mudah, Anda akhirnya ingin menguji resep Anda pada EC2 contoh Amazon. Secara khusus, jika Anda ingin menjalankan resep di Amazon Linux, itu hanya tersedia di Amazon EC2. Anda dapat menggunakan sistem serupa seperti CentOS untuk implementasi dan pengujian awal, tetapi satu-satunya cara untuk sepenuhnya menguji resep Anda di Amazon Linux adalah dengan instance Amazon EC2 . 

Topik ini menunjukkan cara menjalankan resep pada EC2 instance Amazon. Anda akan menggunakan Test Kitchen dan Vagrant dengan cara yang sama seperti bagian sebelumnya, dengan dua perbedaan: 
+ Pengemudi itu [https://rubygems.org/gems/kitchen-ec2](https://rubygems.org/gems/kitchen-ec2)bukan Vagrant.
+ `.kitchen.yml`File buku masak harus dikonfigurasi dengan informasi yang diperlukan untuk meluncurkan EC2 instance Amazon.

**catatan**  
Pendekatan alternatif adalah dengan menggunakan plug-in `vagrant-aws` Vagrant. Untuk informasi selengkapnya, lihat [Penyedia AWS Vagrant](https://github.com/mitchellh/vagrant-aws).

Anda akan memerlukan kredensyal AWS untuk membuat instans Amazon EC2 . Jika Anda tidak memiliki akun AWS, Anda dapat memperolehnya, sebagai berikut. 

## Mendaftar untuk Akun AWS
<a name="sign-up-for-aws"></a>

Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.

**Untuk mendaftar untuk Akun AWS**

1. Buka [https://portal.aws.amazon.com/billing/pendaftaran.](https://portal.aws.amazon.com/billing/signup)

1. Ikuti petunjuk online.

   Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.

   Saat Anda mendaftar untuk sebuah Akun AWS, sebuah *Pengguna root akun AWS*dibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan [tugas yang memerlukan akses pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk [https://aws.amazon.com.rproxy.govskope.uske/](https://aws.amazon.com/) dan memilih **Akun Saya**.

## Buat pengguna dengan akses administratif
<a name="create-an-admin"></a>

Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.

**Amankan Anda Pengguna root akun AWS**

1.  Masuk ke [Konsol Manajemen AWS](https://console.aws.amazon.com/)sebagai pemilik akun dengan memilih **pengguna Root** dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi.

   Untuk bantuan masuk dengan menggunakan pengguna root, lihat [Masuk sebagai pengguna root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) di *AWS Sign-In Panduan Pengguna*.

1. Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.

   Untuk petunjuk, lihat [Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) di Panduan Pengguna *IAM*.

**Buat pengguna dengan akses administratif**

1. Aktifkan Pusat Identitas IAM.

   Untuk mendapatkan petunjuk, silakan lihat [Mengaktifkan AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html) di *Panduan Pengguna AWS IAM Identity Center *.

1. Di Pusat Identitas IAM, berikan akses administratif ke pengguna.

   Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat [Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/quick-start-default-idc.html) di *Panduan AWS IAM Identity Center Pengguna*.

**Masuk sebagai pengguna dengan akses administratif**
+ Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.

  Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat [Masuk ke portal AWS akses](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) di *Panduan AWS Sign-In Pengguna*.

**Tetapkan akses ke pengguna tambahan**

1. Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.

   Untuk petunjuknya, lihat [Membuat set izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/get-started-create-a-permission-set.html) di *Panduan AWS IAM Identity Center Pengguna*.

1. Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.

   Untuk petunjuk, lihat [Menambahkan grup](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) di *Panduan AWS IAM Identity Center Pengguna*.

Anda harus [membuat pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) dengan izin untuk mengakses Amazon EC2 dan menyimpan akses pengguna dan kunci rahasia ke lokasi yang aman di workstation Anda. Test Kitchen akan menggunakan kredensyal tersebut untuk membuat instance. Cara yang lebih disukai untuk memberikan kredensil ke Test Kitchen adalah dengan menetapkan kunci ke variabel lingkungan berikut di workstation Anda.

**Awas**  
Pengguna IAM memiliki kredensyal jangka panjang, yang menghadirkan risiko keamanan. Untuk membantu mengurangi risiko ini, kami menyarankan agar Anda memberikan pengguna ini hanya izin yang mereka perlukan untuk melakukan tugas dan bahwa Anda menghapus pengguna ini ketika mereka tidak lagi diperlukan.
+ AWS\$1ACCESS\$1KEY — kunci akses pengguna Anda, yang akan terlihat sepertiAKIAIOSFODNN7EXAMPLE.
+ AWS\$1SECRET\$1KEY — kunci rahasia pengguna Anda, yang akan terlihat sepertiwJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.

Pendekatan ini mengurangi kemungkinan secara tidak sengaja membahayakan akun Anda dengan, misalnya, mengunggah proyek yang berisi kredensil Anda ke repositori publik.

**Untuk mengatur buku masak**

1. Untuk menggunakan `kitchen-ec2` driver, Anda harus memiliki `ruby-dev` paket yang diinstal pada sistem Anda. Contoh perintah berikut menunjukkan bagaimana menggunakan `aptitude` untuk menginstal paket pada sistem Ubuntu. 

   ```
   sudo aptitude install ruby1.9.1-dev 
   ```

1. `kitchen-ec2`Driver adalah permata, yang dapat Anda instal sebagai berikut:

   ```
   gem install kitchen-ec2
   ```

   [Tergantung pada workstation Anda, perintah ini mungkin memerlukan`sudo`, atau Anda juga dapat menggunakan manajer lingkungan Ruby seperti RVM.](https://rvm.io/) Prosedur ini diuji dengan versi 0.8.0 `kitchen-ec2` driver, tetapi ada versi yang lebih baru. Untuk menginstal [versi tertentu](https://rubygems.org/gems/kitchen-ec2/versions), jalankan`gem install kitchen-ec2 -v <version number>`.

1. Anda harus menentukan key pair Amazon EC2 SSH yang dapat digunakan Test Kitchen untuk menyambung ke instance. Jika Anda tidak memiliki EC2 key pair Amazon, lihat [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) untuk informasi tentang cara membuatnya. Perhatikan bahwa key pair harus memiliki wilayah AWS yang sama dengan instans. Contohnya menggunakan US West (California N.).

   Setelah Anda memilih key pair, buat subdirektori `opsworks_cookbooks` bernama `ec2_keys` dan salin file private key (`.pem`) key pair ke subdirektori tersebut. Perhatikan bahwa menempatkan kunci pribadi `ec2_keys` hanyalah kenyamanan yang menyederhanakan kode sedikit; itu bisa di mana saja di sistem Anda.

1. Buat subdirektori `opsworks_cookbooks` bernama `createdir-ec2` dan navigasikan ke sana.

1. Tambahkan `metadata.rb` file `createdir-ec2` dengan konten berikut.

   ```
   name "createdir-ec2"
   version "0.1.0"
   ```

1. Inisialisasi Test Kitchen, seperti yang dijelaskan dalam[Contoh 1: Menginstal Paket](cookbooks-101-basics-packages.md). Bagian berikut menjelaskan cara mengkonfigurasi`.kitchen.yml`, yang secara signifikan lebih rumit untuk EC2 instans Amazon.

1. Tambahkan `recipes` subdirektori ke`createdir-ec2`.

## Mengonfigurasi .kitchen.ymluntuk Amazon EC2
<a name="w2ab1c14c71b9c15c17c31c37"></a>

Anda mengonfigurasi `.kitchen.yml` dengan informasi yang dibutuhkan `kitchen-ec2` driver untuk meluncurkan EC2 instans Amazon yang dikonfigurasi dengan tepat. Berikut ini adalah contoh `.kitchen.yml` file untuk instance Amazon Linux di wilayah AS Barat (California N.).

```
driver:
  name: ec2
  aws_ssh_key_id: US-East1
  region: us-west-1
  availability_zone: us-west-1c
  require_chef_omnibus: true
  security_group_ids: sg........
  subnet_id: subnet-.........
  associate_public_ip: true
  interface: dns

provisioner:
  name: chef_solo

platforms:
  -name: amazon
  driver:
    image_id: ami-xxxxxxxx
  transport:
    username: ec2-user
    ssh_key: ../ec2_keys/US-East1.pem

suites:
  - name: default
    run_list:
      - recipe[createdir-ec2::default]
    attributes:
```

Anda dapat menggunakan pengaturan default untuk `suites` bagian `provisioner` dan, tetapi Anda harus mengubah default `driver` dan `platforms` pengaturan. Contoh ini menggunakan daftar pengaturan minimal, dan menerima nilai default untuk sisanya. Untuk daftar lengkap `kitchen-ec2` pengaturan, lihat [Kitchen: :Ec2: A Test Kitchen Driver for Amazon](https://github.com/test-kitchen/kitchen-ec2). EC2

Contoh menetapkan `driver` atribut berikut. Ini mengasumsikan bahwa Anda telah menetapkan akses pengguna dan kunci rahasia ke variabel lingkungan standar, seperti yang dibahas sebelumnya. Pengemudi menggunakan kunci tersebut secara default. Jika tidak, Anda harus secara eksplisit menentukan kunci dengan menambahkan `aws_access_key_id` dan `aws_secret_access_key` ke `driver` atribut, diatur ke nilai kunci yang sesuai.

**name**  
(Wajib) Atribut ini harus disetel ke`ec2`.

**aws\$1ssh\$1key\$1id**  
(Wajib) Nama key pair Amazon EC2 SSH, yang dinamai `US-East1` dalam contoh ini. 

**transport.ssh\$1key**  
(Wajib) File kunci pribadi (`.pem`) untuk kunci yang Anda tentukan`aws_ssh_key_id`. Untuk contoh ini, file diberi nama `US-East1.pem` dan ada di `../opsworks/ec2_keys` direktori.

**region**  
(Wajib) Wilayah AWS instans. Contohnya menggunakan US West (California N.), yang diwakili oleh`us-west-1`).

**availability\$1zone**  
(Opsional) Availability Zone instance. Jika Anda menghilangkan pengaturan ini, Test Kitchen menggunakan Availability Zone default untuk wilayah tertentu, yaitu `us-west-1b` untuk US West (California Utara). Namun, zona default mungkin tidak tersedia untuk akun Anda. Dalam hal ini, Anda harus secara eksplisit menentukan Availability Zone. Seperti yang terjadi, akun yang digunakan untuk menyiapkan contoh tidak mendukung`us-west-1b`, jadi contoh secara eksplisit menentukan. `us-west-1c`

**require\$1chef\$1omnibus**  
Ketika diatur ke`true`, pengaturan ini memastikan bahwa penginstal omnibus digunakan untuk menginstal `chef-client` ke semua instance platform.

**security\$1group\$1ids**  
(Opsional) Daftar grup keamanan IDs untuk diterapkan pada instance. Pengaturan ini menerapkan grup `default` keamanan untuk instance. Pastikan bahwa aturan masuknya grup keamanan mengizinkan koneksi SSH masuk, atau Test Kitchen tidak akan dapat berkomunikasi dengan instans. Jika Anda menggunakan grup `default` keamanan, Anda mungkin perlu mengeditnya. Untuk informasi selengkapnya, lihat [Grup EC2 Keamanan Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html).

**subnet\$1id**  
ID subnet target untuk contoh, jika berlaku.

**associate\$1public\$1ip**  
Anda dapat meminta Amazon EC2 mengaitkan alamat IP publik dengan instance jika Anda ingin dapat mengakses instance dari Internet.

**antarmuka**  
Jenis konfigurasi nama host yang Anda gunakan untuk mengakses instance. Nilai yang valid adalah `dns`, `public`, `private`, atau `private_dns`. Jika Anda tidak menentukan nilai untuk atribut ini, `kitchen-ec2` mengatur konfigurasi nama host dalam urutan berikut. Jika Anda menghilangkan atribut ini, jenis konfigurasi tidak disetel.  

1. Nama DNS

1. Alamat IP publik

1. Alamat IP privat

1. Nama DNS pribadi

**penting**  
Daripada menggunakan kredensi akun Anda untuk akses dan kunci rahasia, Anda harus membuat pengguna dan memberikan kredensi tersebut ke Test Kitchen. Untuk informasi selengkapnya, lihat [Praktik Terbaik untuk Mengelola Kunci Akses AWS](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html).  
Berhati-hatilah untuk tidak menempatkan `.kitchen.yml` di lokasi yang dapat diakses publik, seperti mengunggahnya ke repositori publik GitHub atau Bitbucket. Melakukan hal itu memperlihatkan kredensil Anda dan dapat membahayakan keamanan akun Anda.

`kitchen-ec2`Driver menyediakan dukungan default untuk platform berikut:
+ ubuntu-10.04
+ ubuntu-12.04
+ ubuntu-12.10
+ ubuntu-13.04
+ ubuntu-13.10
+ ubuntu-14.04
+ centos-6.4
+ debian-7.1.0
+ jendela-2012r2
+ jendela-2008r2

Jika Anda ingin menggunakan satu atau lebih platform ini, tambahkan nama platform yang sesuai`platforms`. `kitchen-ec2`Driver secara otomatis memilih AMI yang sesuai dan menghasilkan nama pengguna SSH. Anda dapat menggunakan platform lain—contoh ini menggunakan Amazon Linux—tetapi Anda harus secara eksplisit menentukan atribut berikut. `platforms`

**name**  
Nama platform. Contoh ini menggunakan Amazon Linux, jadi `name` diatur ke`amazon`.

**sopir**  
`driver`Atribut, yang meliputi:  
+ `image_id`— AMI platform, yang harus milik wilayah yang ditentukan. Contohnya menggunakan`ami-ed8e9284`, Amazon Linux AMI dari wilayah AS Barat (California N.).
+ `transport.username`— Nama pengguna SSH yang akan digunakan Test Kitchen untuk berkomunikasi dengan instance.

  Gunakan `ec2-user` untuk Amazon Linux. AMIs Orang lain mungkin memiliki nama pengguna yang berbeda.

Ganti kode `.kitchen.yml` dengan contoh, dan tetapkan nilai yang sesuai ke atribut khusus akun seperti. `aws_access_key_id`

## Menjalankan Resep
<a name="w2ab1c14c71b9c15c17c31c39"></a>

Contoh ini menggunakan resep dari[Iterasi](cookbooks-101-basics-ruby.md#cookbooks-101-basics-ruby-iteration).

**Untuk menjalankan resep**

1. Buat file bernama `default.rb` dengan kode berikut dan simpan ke `recipes` folder buku masak.

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

1. Jalankan `kitchen converge` untuk mengeksekusi resep. Perhatikan bahwa perintah ini akan memakan waktu lebih lama untuk diselesaikan daripada contoh sebelumnya karena waktu yang diperlukan untuk meluncurkan dan menginisialisasi EC2 instance Amazon.

1.  Buka [ EC2konsol Amazon](https://console.aws.amazon.com/ec2/), pilih wilayah AS Barat (California Utara)), dan klik **Instans** di panel navigasi. Anda akan melihat contoh yang baru dibuat dalam daftar. 

1. Jalankan `kitchen login` untuk masuk ke instance, seperti yang telah Anda lakukan untuk instance yang berjalan di VirtualBox. Anda akan melihat direktori yang baru dibuat di bawah`/srv`. Anda juga dapat menggunakan klien SSH favorit Anda untuk terhubung ke instance.