Memusatkan distribusi paket perangkat lunak di AWS Organizations dengan menggunakan Terraform - AWS Prescriptive Guidance

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

Memusatkan distribusi paket perangkat lunak di AWS Organizations dengan menggunakan Terraform

Pradip Kumar Pandey, Chintamani Aphale, T.V.R.L.Phani Kumar Dadi, Pratap Kumar Nanda, Aarti Rajput, dan Mayuri Shinde, Amazon Web Services

Ringkasan

Perusahaan sering mempertahankan beberapa Akun AWS yang tersebar Wilayah AWS di beberapa untuk menciptakan penghalang isolasi yang kuat antara beban kerja. Agar tetap aman dan patuh, tim administrasi mereka memasang alat berbasis agen seperti CrowdStrike,, atau TrendMicroalat untuk pemindaian keamanan SentinelOne, dan CloudWatch agen Amazon, AgenDatadog, atau agen untuk pemantauan. AppDynamics Tim-tim ini sering menghadapi tantangan ketika mereka ingin mengotomatiskan manajemen dan distribusi paket perangkat lunak secara terpusat di seluruh lanskap besar ini.

Distributor, kemampuan AWS Systems Manager, mengotomatiskan proses pengemasan dan penerbitan perangkat lunak ke instans Microsoft Windows dan Linux yang dikelola di seluruh cloud dan server lokal melalui satu antarmuka yang disederhanakan. Pola ini menunjukkan bagaimana Anda dapat menggunakan Terraform untuk lebih menyederhanakan proses pengelolaan instalasi perangkat lunak dan menjalankan skrip di sejumlah besar instance dan akun anggota di dalamnya dengan sedikit usaha. AWS Organizations

Solusi ini berfungsi untuk instans Amazon, Linux, dan Windows yang dikelola oleh Systems Manager.

Prasyarat dan batasan

Arsitektur

Detail sumber daya

Pola ini menggunakan Account Factory for Terraform (AFT) untuk membuat semua AWS sumber daya yang diperlukan dan pipeline kode untuk menyebarkan sumber daya di akun penerapan. Pipeline kode berjalan di dua repositori:

  • Kustomisasi global berisi kode Terraform yang akan berjalan di semua akun yang terdaftar di AFT.

  • Kustomisasi akun berisi kode Terraform yang akan berjalan di akun penerapan.

Anda juga dapat menerapkan solusi ini tanpa menggunakan AFT, dengan menjalankan perintah Terraform di folder penyesuaian akun.

Kode Terraform menerapkan sumber daya berikut:

  • AWS Identity and Access Management (IAM) peran dan kebijakan

  • File terkompresi dan manifest.json untuk paket

    • Di Systems Manager, sebuah paket mencakup setidaknya satu file.zip perangkat lunak atau aset yang dapat diinstal.

    • Manifes JSON menyertakan pointer ke file kode paket Anda.

  • Bucket S3

    • Paket terdistribusi yang dibagikan di seluruh organisasi disimpan dengan aman di bucket Amazon S3.

  • AWS Systems Manager dokumen (dokumen SSM)

    • DistributeSoftwarePackageberisi logika untuk mendistribusikan paket perangkat lunak ke setiap instance target di akun anggota.

    • AddSoftwarePackageToDistributorberisi logika untuk mengemas aset perangkat lunak yang dapat diinstal dan menambahkannya ke Otomasi, kemampuan. AWS Systems Manager

  • Asosiasi Systems Manager

    • Asosiasi Systems Manager digunakan untuk menyebarkan solusi.

Arsitektur dan alur kerja

Diagram arsitektur untuk memusatkan distribusi paket perangkat lunak di AWS Organizations

Diagram ini menggambarkan langkah-langkah berikut:

  1. Untuk menjalankan solusi dari akun terpusat, Anda mengunggah paket atau perangkat lunak Anda bersama dengan langkah-langkah penerapan ke bucket S3.

  2. Paket kustom Anda akan tersedia di bagian Dokumen konsol Systems Manager, di tab Dimiliki oleh saya.

  3. State Manager, kemampuan Systems Manager, membuat, menjadwalkan, dan menjalankan asosiasi untuk paket di seluruh organisasi. Asosiasi menentukan bahwa paket perangkat lunak harus diinstal dan berjalan pada node terkelola sebelum dapat diinstal pada node target.

  4. Asosiasi menginstruksikan Systems Manager untuk menginstal paket pada node target.

  5. Untuk penginstalan atau perubahan berikutnya, pengguna dapat menjalankan asosiasi yang sama secara berkala atau manual dari satu lokasi untuk melakukan penerapan di seluruh akun.

  6. Di akun anggota, Automation mengirimkan perintah deployment ke Distributor.

  7. Distributor mendistribusikan paket perangkat lunak di seluruh instance.

Solusi ini menggunakan akun manajemen di dalamnya AWS Organizations, tetapi Anda juga dapat menunjuk akun (administrator yang didelegasikan) untuk mengelola ini atas nama organisasi.

Alat

Layanan AWS

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data. Pola ini menggunakan Amazon S3 untuk memusatkan dan menyimpan paket terdistribusi dengan aman.

  • AWS Systems Managermembantu Anda mengelola aplikasi dan infrastruktur yang berjalan di AWS Cloud. Ini menyederhanakan aplikasi dan manajemen sumber daya, mempersingkat waktu untuk mendeteksi dan menyelesaikan masalah operasional, dan membantu Anda mengelola AWS sumber daya Anda dengan aman dalam skala besar. Pola ini menggunakan kemampuan Systems Manager berikut:

    • Distributor membantu Anda mengemas dan mempublikasikan perangkat lunak ke instans yang dikelola Systems Manager.

    • Otomasi menyederhanakan tugas pemeliharaan, penyebaran, dan remediasi umum untuk banyak layanan. AWS

    • Documents melakukan tindakan pada instans terkelola Systems Manager di seluruh organisasi dan akun Anda.

  • AWS Organizationsadalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa AWS akun ke dalam organisasi yang Anda buat dan kelola secara terpusat.

Alat-alat lainnya

  • Terraform adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.

Repositori kode

Instruksi dan kode untuk pola ini tersedia di repositori distribusi paket GitHub Terpusat.

Praktik terbaik

  • Untuk menetapkan tag ke asosiasi, gunakan AWS Command Line Interface (AWS CLI) atau. Alat AWS untuk PowerShell Menambahkan tag ke asosiasi menggunakan konsol Systems Manager tidak didukung. Untuk informasi selengkapnya, lihat Menandai sumber daya Systems Manager di dokumentasi Systems Manager.

  • Untuk menjalankan asosiasi dengan menggunakan versi baru dokumen yang dibagikan dari akun lain, setel versi dokumen kedefault.

  • Untuk menandai hanya node target, gunakan satu kunci tag. Jika Anda ingin menargetkan node Anda dengan menggunakan beberapa kunci tag, gunakan opsi grup sumber daya.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

  1. Kloning repositori distribusi paket GitHub Terpusat:

    git clone https://github.com/aws-samples/aws-organization-centralised-package-distribution
  2. Repositori kode Terraform memerlukan dua folder kustomisasi yang dikelola oleh AFT. Konfirmasikan bahwa salinan lokal repositori Anda berisi folder-folder ini:

    $ cd centralised-package-distribution $ ls global-customization account-customization
DevOps insinyur

Perbarui variabel global.

Perbarui parameter input berikut dalam global-customization/variables.tf file. Variabel ini berlaku untuk semua akun yang dibuat dan dikelola oleh AFT.

  • account_id: ID akun tempat solusi Distributor akan digunakan.

  • aws_region: Di Wilayah AWS mana asosiasi akan dikerahkan.

DevOps insinyur

Perbarui variabel akun.

Perbarui parameter input berikut dalam account-customization/variables.tf file. Variabel ini hanya berlaku untuk akun tertentu yang dibuat dan dikelola oleh AFT.

  • package_bucket_name: Nama bucket S3 yang berisi file distribusi paket.

  • package_name: Nama file distribusi paket.

  • package_version: Versi paket installer.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Perbarui parameter input untuk asosiasi Manajer Negara.

Perbarui parameter input berikut dalam account-customization/association.tf file untuk menentukan status yang ingin Anda pertahankan pada instance Anda. Anda dapat menggunakan nilai parameter default jika mereka mendukung kasus penggunaan Anda.

  • targetAccounts: Unit organisasi (OU) IDs dalam AWS Organizations yang mewakili akun dengan instans target untuk distribusi. OU IDs mulai dengan “ou”.

  • targetRegions: Wilayah AWS (misalnya, “us-east-1″ atau “ap-southeast-2") tempat instance target berjalan.

  • action: Tentukan apakah akan menginstal atau menghapus paket.

  • installationType: Salah satu jenis instalasi berikut:

    • uninstall: Paket dihapus.

    • reinstall: Aplikasi diambil secara offline hingga proses penginstalan ulang selesai.

    • In-place update: Aplikasi ini tersedia sementara file baru atau yang diperbarui ditambahkan ke instalasi.

  • name: Nama paket untuk menginstal atau menghapus instalasi.

  • version: Versi paket untuk menginstal atau menghapus instalasi. Jika tidak ada versi paket yang diinstal, sistem mengembalikan kesalahan.

  • bucketName: Nama bucket S3 paket telah digunakan. Bucket ini harus terdiri dari paket dan file manifes saja.

  • bucketPrefix: Awalan S3 tempat aset paket disimpan.

  • AutomationAssumeRole: Nama Sumber Daya Amazon (ARN) dari. SystemsManager-AutomationAdministrationRole

DevOps insinyur

Siapkan file terkompresi dan manifest.json file untuk paket.

Pola ini menyediakan contoh file PowerShell yang dapat diinstal (.msi untuk Windows dan.rpm untuk Linux) dengan skrip instal dan hapus instalan di folder. account-customization/package

  1. Ganti file yang PowerShell dapat diinstal dengan file Anda sendiri, atau berikan file yang dapat diinstal, instal dan hapus instalan skrip, dan file manifes untuk membuat paket di account-customization folder di akun Anda.

  2. Sesuaikan manifest.json file default yang dihasilkan Terraform di account-customization folder sesuai dengan kebutuhan Anda.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Inisialisasi konfigurasi Terraform.

Untuk menerapkan solusi secara otomatis dengan AFT, tekan kode ke AWS CodeCommit:

$ git add * $ git commit -m "message" $ git push

Anda juga dapat menerapkan solusi ini tanpa menggunakan AFT dengan menjalankan perintah Terraform dari folder. account-customization Untuk menginisialisasi direktori kerja yang berisi file Terraform, jalankan:

$ terraform init
DevOps insinyur

Pratinjau perubahan.

Untuk melihat pratinjau perubahan yang akan dilakukan Terraform pada infrastruktur, jalankan perintah:

$ terraform plan

Perintah ini mengevaluasi konfigurasi Terraform untuk menentukan status sumber daya yang diinginkan yang telah dideklarasikan. Ini juga membandingkan keadaan yang diinginkan dengan infrastruktur aktual untuk penyediaan di dalam ruang kerja.

DevOps insinyur

Terapkan perubahan.

Jalankan perintah berikut untuk mengimplementasikan perubahan yang Anda buat pada variables.tf file:

$ terraform apply
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Validasi pembuatan dokumen SSM.

  1. Pada konsol Systems Manager, di panel navigasi kiri, pilih Documents.

  2. Pilih tab Dimiliki oleh saya.

Anda harus melihat DistributeSoftwarePackage dan AddSoftwarePackageToDistributor paket.

DevOps insinyur

Validasi keberhasilan penerapan otomatisasi.

  1. Pada konsol Systems Manager, di panel navigasi kiri, pilih Otomasi.

  2. Dalam daftar eksekusi Otomasi, Anda akan melihat yang terbaru DistributeSoftwarePackage dan AddSoftwarePackageToDistributor penerapan.

  3. Pilih Execution ID untuk memvalidasi bahwa mereka berhasil diselesaikan.

DevOps insinyur

Validasi bahwa paket disebarkan ke instance akun anggota yang ditargetkan.

  1. Pada konsol Systems Manager, di panel navigasi, pilih Run Command.

  2. Dalam riwayat Perintah, Anda akan melihat setiap pemanggilan dan statusnya.

  3. Pilih Command ID apa pun untuk melihat riwayat penerapan untuk setiap instance target.

  4. Pilih ID Instance dan periksa bagian Output untuk distribusi.

DevOps insinyur

Pemecahan Masalah

IsuSolusi

Asosiasi Manajer Negara gagal atau terjebak dalam status tertunda.

Lihat informasi pemecahan masalah di Pusat AWS Pengetahuan.

Asosiasi terjadwal gagal dijalankan.

Spesifikasi jadwal Anda mungkin tidak valid. State Manager saat ini tidak mendukung menentukan bulan dalam ekspresi cron untuk asosiasi. Gunakan ekspresi cron atau rate untuk mengonfirmasi jadwal.

Sumber daya terkait