Menggunakan alat AWS OpsWorks Stacks Detach in Place - AWS OpsWorks

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

Menggunakan alat AWS OpsWorks Stacks Detach in Place

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.

Bagian ini menjelaskan cara menggunakan alat AWS OpsWorks Stacks Lepaskan di Tempat untuk melepaskan OpsWorks instance Anda dari layanan Stacks. OpsWorks

Contoh yang Anda lepaskan akan tetap ada di Anda Akun AWS, tetapi Anda tidak lagi dapat mengelolanya menggunakan. OpsWorks Sebagai gantinya, Anda akan menggunakan Amazon EC2, AWS Systems Manager, atau pendekatan yang kompatibel dengan EC2 untuk mengonfigurasi dan mengelola instans.

Pada tingkat tinggi, proses detasemen melibatkan langkah-langkah berikut:

  1. Alat ini melakukan pemeriksaan validasi untuk memastikan sumber daya siap untuk dilepas.

  2. Alat ini mengekspor JSON Kustom dari OpsWorks tumpukan Anda dan menyimpannya sebagai objek di Amazon S3.

  3. Alat ini membuat dokumen Otomasi Systems Manager yang mewakili setiap peristiwa siklus hidup OpsWorks Stacks.

  4. Alat ini membuat AWS Service Catalog AppRegistry Katalog untuk semua instance yang sedang dilepas dan melepaskan penyeimbang beban Elastic Load Balancing (ELB) dari lapisan. OpsWorks

  5. Terakhir, alat ini melepaskan dan membatalkan pendaftaran sumber daya lain termasuk instans Amazon Relational Database Service (Amazon RDS).

Bagaimana prosesnya bekerja

Alat Detach In Place menyediakan 3 perintah berikut dan pengalaman seperti wizard yang memandu Anda melalui serangkaian langkah untuk memeriksa dan mengonfigurasi instance Anda sebelum melanjutkan untuk melepaskan lapisan Anda.

Perintah Deskripsi

handle-prerequisites

Perintah ini menganalisis apakah semua instance dalam lapisan memenuhi syarat untuk detasemen dan menyelesaikan prasyarat. Instans harus dalam keadaan sehat OpsWorks, mereka tidak dapat memiliki penskalaan otomatis berbasis waktu atau beban, dan harus menginstal versi OpsWorks Agen terbaru.

Selain itu, perintah memeriksa apakah semua instance memiliki izin yang diperlukan untuk mendukung Agen SSM dan apakah versi Agen SSM terbaru diinstal. Perintah akan menginstal Agen SSM jika tidak ada dan akan memperbarui Agen SSM jika tidak menggunakan versi terbaru. Perintah juga akan menambahkan izin yang diperlukan.

detach

Perintah ini melepaskan semua OpsWorks instance untuk lapisan yang ditentukan.

Pertama, perintah akan menjalankan pemeriksaan prasyarat untuk memastikan lapisan memenuhi syarat untuk detasemen. Jika Anda tidak ingin menyelesaikan prasyarat, Anda diberi opsi untuk melepaskan paksa.

Selanjutnya, perintah akan menunjukkan bahwa semua tag yang ditambahkan ke instance Anda melalui OpsWorks penandaan API atau melalui propagasi tag dari lapisan dan tumpukan Anda, akan dipertahankan. Anda dapat menghapus salah satu tag ini menggunakan API EC2 yang relevan setelah detasemen selesai.

Kemudian, perintah akan memeriksa apakah Anda ingin mengekspor konfigurasi terkait Chef ke parameter SSM.

Jika Anda memiliki Classic Load Balancer yang terpasang pada layer, perintah akan menanyakan apakah itu dapat melepaskan penyeimbang beban untuk mencegah downtime.

cleanup

Perintah ini menghapus semua entitas OpsWorks dari akun Anda. Ini akan mengakhiri instance dan menghapus semua tumpukan. Ini harus digunakan untuk sumber daya yang tidak lagi diperlukan sebagai langkah terakhir untuk membersihkan akun.

catatan

Kami menyarankan Anda menjalankan pengaturan baru selama beberapa hari sebelum menjalankan cleanup perintah. Ini memastikan bahwa setiap konfigurasi yang diperlukan dari tumpukan sudah tersedia jika diperlukan.

Batasan

Tujuan utama alat Detach In Place adalah untuk melepaskan instance OpsWorks Stacks dengan aman. Bagian ini merangkum keterbatasan alat.

  • Agen SSM Windows - Jika Agen SSM tidak diinstal pada instance, Anda harus menginstalnya secara manual. Hal yang sama berlaku jika Agen tidak diperbarui ke versi terbaru.

  • Instans Time/Load Auto Scaling - Alat detasemen tidak mendukung instance dengan Auto Scaling diaktifkan. Anda harus menonaktifkan Auto Scaling pada instance yang ingin Anda lepaskan.

  • Izin — Alat detasemen tidak membuat atau menghasilkan entitas IAM yang ditentukan pada halaman Izin konsol. OpsWorks

  • Aplikasi — Alat detasemen tidak membuat atau menghasilkan aplikasi di luar. OpsWorks

Memulai

Langkah 1: Verifikasi prasyarat terpenuhi

Semua 3 perintah dari alat Detach In Place adalah skrip Python, yang dapat Anda jalankan secara lokal, pada instans EC2, atau dengan menggunakan. AWS CloudShell

AWS CloudShell adalah shell berbasis browser yang memberi Anda akses baris perintah ke AWS sumber daya yang dipilih. Wilayah AWS AWS CloudShell datang pra-instal dengan alat-alat populer (seperti AWS CLI dan Python). Saat menggunakan AWS CloudShell, Anda menggunakan kredensyal yang sama dengan yang Anda gunakan untuk masuk ke konsol.

Panduan ini mengasumsikan bahwa Anda menggunakan. AWS CloudShell

Langkah 2: Unduh skrip

  1. Unduh file zip yang berisi skrip migrasi dan semua file yang relevan dengan menjalankan perintah berikut:

    aws s3api get-object \ --bucket detach-in-place-bucket-prod-us-east-1 \ --key detach_in_place_script.zip detach_in_place_script.zip
  2. Unzip file dengan menjalankan perintah berikut.

    unzip detach_in_place_script.zip

    Setelah file di-unzip, file berikut tersedia:

    • README.md

    • LISENSI

    • MELIHAT

    • requirements.txt

    • TODO.py

  3. Jika perlu, instal pipenv dengan menjalankan perintah berikut.

    pip install pipenv

Langkah 3: Jalankan skrip

Pertama, atur lingkungan Anda sehingga Anda dapat menjalankan skrip dengan menjalankan perintah berikut.

pipenv install -r requirements.txt pipenv shell

Kemudian, tinjau parameter skrip.

Perintah Parameter Deskripsi Jenis Diperlukan Default

handle-prerequisites

--layer-id

ID dari layer yang ingin Anda lepaskan.

Tali

Ya

-

--region

Wilayah OpsWorks tumpukan. Jika OpsWorks Stack Region dan API endpoint Region berbeda, gunakan Stack Region. Ini adalah Wilayah yang sama dengan bagian sumber daya lain dari OpsWorks tumpukan Anda (misalnya, instans dan subnet EC2).

String

Tidak

us-east-1

detach

--layer-id

ID dari layer yang ingin Anda lepaskan.

Tali

Ya

-

--batch-size

Jumlah contoh untuk melepaskan dari lapisan (misalnya, 5).

String

Tidak

-

--region

Wilayah OpsWorks tumpukan. Jika OpsWorks Stack Region dan API endpoint Region berbeda, gunakan Stack Region. Ini adalah Wilayah yang sama dengan bagian sumber daya lain dari OpsWorks tumpukan Anda (misalnya, instans dan subnet EC2).

String

Tidak

us-east-1

cleanup

--stack-id

ID tumpukan yang ingin Anda hapus.

String

Tidak

Saling eksklusif, Anda harus menentukan ID lapisan atau ID tumpukan

--layer-id

ID dari layer yang ingin Anda hapus

String

Tidak

--region

Wilayah OpsWorks tumpukan. Jika OpsWorks Stack Region dan API endpoint Region berbeda, gunakan Stack Region. Ini adalah Wilayah yang sama dengan bagian sumber daya lain dari OpsWorks tumpukan Anda (misalnya, instans dan subnet EC2).

String

Tidak

us-east-1

Anda dapat melihat opsi yang tersedia untukdetach, handle-prerequisites dan cleanup perintah dengan menjalankan perintah dengan --help opsi sebagai berikut:

python3 layer_detacher.py detach --help python3 layer_detacher.py handle-prerequisites --help python3 layer_detacher.py cleanup --help

Anda sekarang siap untuk memulai. Contoh berikut menunjukkan bagaimana Anda dapat menjalankan perintah untuk kasus penggunaan yang berbeda.

Contoh 1: Periksa apakah lapisan memenuhi semua prasyarat dan memenuhi syarat untuk detasemen

Perintah berikut membaca informasi tentang OpsWorks lapisan (dan instance yang disertakan) dan memeriksa apakah prasyarat berikut terpenuhi:

  • Semua contoh online.

  • Tidak ada instans Load/Time Auto Scaling.

  • Semua contoh memiliki OpsWorks Agen terbaru.

  • Semua instance memiliki Agen SSM terbaru yang diinstal dan dikonfigurasi.

  • Semua instance memiliki key pair SSH.

  • Setiap contoh milik tepat satu lapisan.

python3 layer_detacher.py handle-prerequisites \ --layer-id opsworks-layer-id \ --region opsworks-stack-region

Contoh 2: Lepaskan semua instance layer

Perintah berikut akan mengulangi semua instance layer, memeriksa apakah instance memenuhi prasyarat dan mencoba melepaskan secara paralel semua instance yang memenuhi prasyarat. Jika satu atau lebih prasyarat tidak terpenuhi, perintah akan memberikan opsi pelepasan paksa untuk instance yang tidak sesuai yang tersisa.

Sebelum melepaskan instance apa pun, perintah akan:

  1. Simpan JSON Kustom dan unggah ke S3.

  2. Buat dokumen SSM Automation untuk setiap peristiwa OpsWorks siklus hidup untuk layer dan unggah log eksekusi untuk dokumen Automation ke S3.

  3. Buat AppRegistry aplikasi untuk semua instance yang akan terlepas. Aplikasi ini memiliki Grup Sumber Daya yang terkait dengannya yang menyimpan semua instance dan sumber daya yang terpisah. Sumber daya termasuk dokumen Otomasi SSM dan parameter SSM yang menyimpan informasi tentang peristiwa siklus hidup dan resep Chef khusus.

  4. Melepaskan Classic Load Balancer dari layer, jika ada.

Perintah ini hanya akan memodifikasi OpsWorks sumber daya. Status instans EC2 akan tetap sama.

python3 layer_detacher.py detach \ --layer-id opsworks-layer-id \ --region opsworks-stack-region

Contoh 3: Lepaskan semua instance layer dalam batch

Perintah berikut melakukan hal yang sama seperti contoh sebelumnya. Satu-satunya perbedaan adalah bahwa hal itu melepaskan instance dalam batch.

Perintah ini hanya akan memodifikasi OpsWorks sumber daya. Status instans EC2 akan tetap sama.

python3 layer_detacher.py detach \ --layer-id opsworks-layer-id \ --region opsworks-stack-region \ --batch-size 5

Contoh 4: Bersihkan semua sumber daya untuk lapisan dan hapus layer

Perintah berikut akan mengulangi semua sumber daya untuk lapisan dan menghapusnya. Secara lebih rinci, ini akan menghentikan dan menghapus semua instance di OpsWorks dan EC2, melepaskan penyeimbang beban dan membatalkan pendaftaran instans Amazon RDS, IP elastis, dan volume. Setelah membersihkan sumber daya, itu akan menghapus lapisan.

Perintah ini akan menghapus OpsWorks sumber daya dan instans EC2. Jika Anda ingin instans EC2 Anda tetap tidak tersentuh, gunakan detach perintah sebelum menggunakan perintah. cleanup Dengan begitu cleanup perintah akan menghapus semua sumber daya yang tersisa.

python3 layer_detacher.py cleanup \ --layer-id opsworks-layer-id \ --region opsworks-stack-region

Contoh 5: Bersihkan semua sumber daya untuk tumpukan dan hapus tumpukan

Perintah berikut akan mengulangi semua lapisan dan kemudian mengulangi sumber daya setiap lapisan. Untuk setiap lapisan, perintah akan menghentikan dan menghapus semua instance di dan EC2, melepaskan penyeimbang beban, OpsWorks dan membatalkan pendaftaran instans Amazon RDS, IP elastis, dan volume. Kemudian, perintah akan menghapus layer. Proses yang sama akan dilakukan di setiap lapisan yang termasuk dalam tumpukan ini. Akhirnya, setelah semua lapisan dihapus, tumpukan akan dihapus.

Perintah ini akan menghapus OpsWorks sumber daya dan instans EC2. Jika Anda ingin instans EC2 Anda tetap tidak tersentuh, gunakan detach perintah sebelum menggunakan perintah. cleanup Dengan begitu cleanup perintah akan menghapus semua sumber daya yang tersisa.

python3 layer_detacher.py cleanup \ --stack-id opsworks-stack-id \ --region opsworks-stack-region

Langkah 4: Lanjutkan mengoperasikan sumber daya Anda setelah melepaskan diri OpsWorks

Setelah menjalankan detach perintah, alat membuat AWS Service Catalog AppRegistry aplikasi baru yang sesuai dengan lapisan terpisah. Nama aplikasi mengikuti formatlayer-name---layer-id. Ini juga menambahkan OpsWorksLayerId tag untuk secara unik mengidentifikasi aplikasi yang cocok dengan lapisan terpisah.

Untuk menambahkan AWS sumber daya baru ke aplikasi ini (misalnya, instans EC2 baru), Anda dapat melakukan salah satu hal berikut:

  1. Tandai sumber daya dengan tag aplikasi unik AppRegistry aplikasi:

    Kunci tag: awsApplication

    Nilai: arn:aws:resource-groups:region:account-id:group/application-name/application-id>

  2. Jalankan perintah associate-resource.

Selain itu, untuk setiap AppRegistry aplikasi, Grup Sumber Daya dibuat. Grup Sumber Daya berisi tag berikut.

Tombol tanda Nilai

EnableAWSServiceCatalogAppRegistry

TRUE

aws:servicecatalog:applicationName

application-name

aws:servicecatalog:applicationId

application-id

aws:servicecatalog:applicationArn

arn:aws:servicecatalog:region:account-id:/applications/application-id

Melakukan tugas setelah detasemen

Tabel berikut memberikan informasi tentang cara melakukan tugas setelah detasemen:

Tugas Deskripsi

Menjalankan peristiwa siklus hidup

Setelah menjalankan detach perintah dan jika Anda memilih opsi, skrip membuat 5 dokumen Otomasi yang cocok dengan 5 peristiwa OpsWorks siklus hidup.

Nama setiap dokumen Otomasi mengikuti format ini:layer-id_lifecycle-event_automation_document.

Untuk mensimulasikan OpsWorks perilaku di Systems Manager, Anda harus secara manual memicu eksekusi Otomasi saat menyediakan, menghentikan instans EC2, atau menerapkan/menghapus resep.

Memperbarui JSON Kustom

JSON khusus untuk tumpukan dan lapisan disimpan dalam bucket S3 yang ditentukan selama detasemen, atau sebagai alternatif di bucket S3 baru yang dibuat.

Nama file yang disimpan untuk file JSON adalah sebagai berikut:

  • layercustomjson.json

  • stackcustomjson.json

Mengubah daftar jalankan untuk peristiwa siklus hidup

Daftar jalankan untuk setiap peristiwa siklus hidup ditentukan dalam dokumen Otomasi yang sesuai. Untuk mengubah daftar run, cari dokumen Otomasi dalam AppRegistry aplikasi dan ubah RunList parameternya.

Proses untuk memperbarui resep dan buku masak tidak berubah karenaAWS-ApplyChefRecipes, yang dipicu oleh dokumen Otomasi, mendukung sumber yang sama seperti. OpsWorks

Mengelola penyembuhan otomatis/penskalaan otomatis

Saat Anda melepaskan instance, OpsWorks Agen akan menghapus instalan. Tanpa agen, OpsWorks tidak dapat secara otomatis menyembuhkan atau mengganti instance yang tidak sehat, juga tidak dapat secara otomatis menskalakan armada Anda. Untuk melanjutkan penskalaan otomatis dan mengganti instans yang gagal, buat grup Auto Scaling Amazon EC2. Grup ini akan meluncurkan instans baru untuk mempertahankan kapasitas yang diinginkan ketika Amazon EC2 mendeteksi instans tidak sehat yang perlu diganti.

Mengelola Load Balancer

Jika layer Anda menggunakan Classic Load Balancer, detach perintah akan melepaskannya sebelum membatalkan pendaftaran instance. Hal ini dilakukan untuk memastikan bahwa semua asosiasi instans ELB tetap dipertahankan di Amazon EC2 selama proses pelepasan, sehingga mengarah ke nol downtime. Setelah proses selesai, Anda akan dapat mengelola ELB Anda di EC2.

Menghubungkan ke instans Anda

Ketika Anda menjalankan detach perintah handle-prerequisites or, dua pemeriksaan terjadi:

  • Versi Agen SSM dan izin

  • Kunci SSH

Perintah juga menawarkan opsi untuk memperbarui Agen SSM dan menambahkan izin yang diperlukan sehingga Anda dapat terhubung ke instance menggunakan Session Manager. Jika kunci SSH ada, Anda juga memiliki opsi untuk SSH ke dalam instance.

Menggunakan tab Instans Manajer Aplikasi Systems Manager

Setelah detasemen, Anda akan dapat melihat dan mengelola instance Anda di tab Instans Manajer Aplikasi.

Tab Instances menyediakan informasi agregat tentang instans EC2 aplikasi, seperti status, status kesehatan, dan status perintah terakhir. Dengan menggunakan tab ini, Anda dapat melihat informasi terperinci tentang instance individual seperti riwayat perintah, status alarm, kesehatan agen Systems Manager, dan banyak lagi. Tab Instances juga menyediakan berbagai tindakan, seperti kemampuan untuk menerapkan resep Chef, memulai atau menghentikan instance, atau menambah atau menghapus instance dari grup Auto Scaling.