Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat kerangka orkestrasi sumber daya berbasis API menggunakan Actions dan Terragrunt GitHub
Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande, dan Akash Kumar, Amazon Web Services
Ringkasan
Pola ini memanfaatkan alur kerja GitHub Actions untuk mengotomatiskan penyediaan sumber daya melalui muatan JSON standar, sehingga tidak perlu konfigurasi manual. Pipeline otomatis ini mengelola siklus hidup penerapan lengkap dan dapat berintegrasi dengan mulus dengan berbagai sistem frontend, dari komponen UI kustom hingga. ServiceNow Fleksibilitas solusi memungkinkan pengguna untuk berinteraksi dengan sistem melalui antarmuka pilihan mereka sambil mempertahankan proses standar.
Arsitektur pipa yang dapat dikonfigurasi dapat disesuaikan untuk memenuhi persyaratan organisasi yang berbeda. Implementasi contoh berfokus pada penyediaan Amazon Virtual Private Cloud (Amazon VPC) dan Amazon Simple Storage Service (Amazon S3). Pola ini secara efektif mengatasi tantangan manajemen sumber daya cloud umum dengan menstandarisasi permintaan di seluruh organisasi dan memberikan poin integrasi yang konsisten. Pendekatan ini memudahkan tim untuk meminta dan mengelola sumber daya sambil memastikan standardisasi.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
GitHub Akun aktif dengan akses ke repositori yang dikonfigurasi
Batasan
Sumber daya baru memerlukan penambahan
terragrunt.hcl
file secara manual ke konfigurasi repositori.Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Arsitektur
Diagram berikut menunjukkan komponen dan alur kerja pola ini.

Diagram arsitektur menunjukkan tindakan berikut:
Pengguna mengirimkan payload JSON ke GitHub Actions, memicu pipeline otomatisasi.
Pipeline GitHub Actions mengambil kode sumber daya yang diperlukan dari repositori Terragrunt dan Terraform, berdasarkan spesifikasi payload.
Pipeline mengasumsikan peran yang sesuai AWS Identity and Access Management (IAM) menggunakan ID yang ditentukan Akun AWS . Kemudian, pipeline menyebarkan sumber daya ke target Akun AWS dan mengelola status Terraform menggunakan bucket Amazon S3 khusus akun dan tabel Amazon DynamoDB.
Masing-masing Akun AWS berisi peran IAM untuk akses aman, bucket Amazon S3 untuk penyimpanan status Terraform, dan tabel DynamoDB untuk penguncian status. Desain ini memungkinkan penyebaran sumber daya yang terkontrol dan otomatis di seluruh Akun AWS. Proses penyebaran mempertahankan manajemen status dan kontrol akses yang tepat melalui bucket Amazon S3 khusus dan peran IAM di setiap akun.
Alat
Layanan AWS
Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan dapat diskalakan.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS
Alat lainnya
GitHub Actions
adalah platform integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang terintegrasi erat dengan GitHub repositori. Anda dapat menggunakan GitHub Actions untuk mengotomatiskan pipeline build, test, dan deployment. Terraform
adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal. Terragrunt
adalah alat orkestrasi yang memperluas keduanya dan kemampuan Terraform. OpenTofu Ini mengelola bagaimana pola infrastruktur generik diterapkan, membuatnya lebih mudah untuk skala dan memelihara perkebunan infrastruktur besar.
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub sample-aws-orchestration-pipeline-terraform
Praktik terbaik
Simpan AWS kredensil dan data sensitif menggunakan rahasia GitHub repositori untuk akses aman.
Konfigurasikan penyedia OpenID Connect (OIDC) untuk GitHub Actions untuk mengambil peran IAM, menghindari kredensi statis.
Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Inisialisasi GitHub repositori. | Untuk menginisialisasi GitHub repositori, gunakan langkah-langkah berikut:
| DevOps insinyur |
Konfigurasikan peran dan izin IAM. | Untuk mengonfigurasi peran dan izin IAM, gunakan langkah-langkah berikut:
| DevOps insinyur |
Siapkan GitHub rahasia dan variabel. | Untuk petunjuk tentang cara mengatur rahasia dan variabel repositori di GitHub repositori, lihat Membuat variabel konfigurasi untuk repositori dalam
| DevOps insinyur |
Buat struktur repositori. | Untuk membuat struktur repositori, gunakan langkah-langkah berikut:
| DevOps insinyur |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Jalankan pipa menggunakan curl. | Untuk menjalankan pipeline dengan menggunakan curl
Untuk informasi selengkapnya tentang proses eksekusi pipeline, lihat Informasi tambahan. | DevOps insinyur |
Validasi hasil eksekusi pipeline | Untuk memvalidasi hasil, gunakan langkah-langkah berikut:
Anda juga dapat memverifikasi silang sumber daya yang dibuat dengan menggunakan | DevOps insinyur |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Kirim permintaan pembersihan. | Untuk menghapus sumber daya yang tidak lagi diperlukan, gunakan langkah-langkah berikut:
| DevOps insinyur |
Sumber daya terkait
AWS Blog
Layanan AWS dokumentasi
GitHub sumber daya
Informasi tambahan
Proses eksekusi pipa
Berikut adalah langkah-langkah eksekusi pipeline:
Memvalidasi format payload JSON - Memastikan bahwa konfigurasi JSON yang masuk terstruktur dengan benar dan berisi semua parameter yang diperlukan
Mengasumsikan peran IAM yang ditentukan - Mengautentikasi dan mengasumsikan peran IAM yang diperlukan untuk operasi AWS
Diperlukan unduhan kode Terraform dan Terragrunt - Mengambil versi kode sumber daya dan dependensi yang ditentukan
Menjalankan penyebaran sumber daya - Menerapkan konfigurasi untuk menyebarkan atau memperbarui AWS sumber daya di lingkungan target
Contoh payload yang digunakan untuk pembuatan VPC
Berikut ini adalah contoh kode untuk pembuatan bucket status backend Terraform:
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
Berikut ini adalah contoh payload untuk membuat VPC dengan Amazon VPC, vpc_cidr
di mana mendefinisikan spesifikasi blok CIDR untuk VPC. Bucket status Terraform dipetakan ke variabel yang ditentukan dalam file. terraform
ref
Parameter berisi nama cabang kode yang akan dieksekusi.
{ "ref": "main", "inputs": { "RequestParameters": { "RequestId": "1111111", "RequestType": "create", "ResourceType": "vpc", "AccountId": "1234567890", "AccountAlias": "account-alias", "RegionId": "us-west-2", "ApplicationName": "myapp", "DivisionName": "division-name", "EnvironmentId": "dev", "Suffix": "poc" }, "ResourceParameters": [ { "VPC": { "vpc_cidr": "10.0.0.0/16" } } ] } }
RequestParameters
digunakan untuk melacak status permintaan di bagian pipeline dan tfstate
dibuat berdasarkan informasi ini. Parameter berikut berisi metadata dan informasi kontrol:
RequestId
— Pengidentifikasi unik untuk permintaanRequestType
— Jenis operasi (membuat, memperbarui, atau menghapus)ResourceType
— Jenis sumber daya yang akan disediakanAccountId
— Target Akun AWS untuk penyebaranAccountAlias
— Nama ramah untuk Akun AWSRegionId
— Wilayah AWS untuk penyebaran sumber dayaApplicationName
— Nama aplikasiDivisionName
— Divisi organisasiEnvironmentId
— Lingkungan (misalnya, dev dan prod)Suffix
— Pengidentifikasi tambahan untuk sumber daya
ResourceParameters
berisi konfigurasi khusus sumber daya yang memetakan ke variabel yang ditentukan dalam file Terraform. Variabel khusus apa pun yang perlu diteruskan ke modul Terraform harus disertakan di dalamnya. ResourceParameters
Parameter vpc_cidr
ini wajib untuk Amazon VPC.