Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat permintaan tarik otomatis untuk infrastruktur yang dikelola Terraform AWS dengan menggunakan Tindakan GitHub
Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay, dan Prafful Gupta, Amazon Web Services
Ringkasan
Pola ini menyajikan utilitas otomatisasi yang dirancang untuk menghilangkan pekerjaan manual dan berulang yang terlibat dalam mengelola perubahan di beberapa repositori Terraform. Banyak organisasi menggunakan repositori Terraform untuk mengelola infrastruktur mereka sebagai kode (IAc), seringkali dengan ratusan repositori terpisah yang mewakili lingkungan, layanan, atau tim yang berbeda. Mengelola repositori ini dalam skala besar menghadirkan tantangan operasional yang signifikan. Tugas rutin seperti memperbarui parameter, memutakhirkan versi modul, atau menerapkan perubahan konfigurasi sering kali memerlukan pembuatan dan pengelolaan pull request (PRs) di banyak repositori beberapa kali sehari.
Bahkan untuk perubahan sederhana, proses berulang dan manual ini memakan waktu dan rawan kesalahan. Insinyur harus secara konsisten menerapkan perubahan yang sama di semua repositori yang ditargetkan dan membuat judul dan deskripsi PR yang bermakna. Selain itu, mereka sering harus berinteraksi dengan alat eksternal seperti Jira untuk mengambil atau menyertakan referensi pelacakan masalah. Tugas-tugas ini, meskipun perlu, adalah angkat berat yang tidak berdiferensiasi yang menghabiskan waktu teknik yang berharga dan mengurangi efisiensi secara keseluruhan. Kurangnya otomatisasi dalam alur kerja ini menciptakan gesekan, memperlambat pengiriman, dan meningkatkan beban kognitif pada tim yang bertugas memelihara infrastruktur Terraform skala besar.
Ikhtisar solusi
Untuk mengatasi tantangan ini, pola ini menawarkan utilitas yang sepenuhnya digerakkan oleh konfigurasi, memungkinkan pengguna untuk menentukan perubahan yang diinginkan dalam file konfigurasi terstruktur. File ini menentukan repositori target, modul, parameter, dan nilai menggunakan skema yang jelas.
Setelah dikonfigurasi, utilitas melakukan langkah-langkah otomatis berikut:
Membaca konfigurasi yang ditentukan pengguna untuk menentukan ruang lingkup dan sifat perubahan
Membuat cabang baru di setiap repositori target dengan pembaruan yang diperlukan diterapkan
Menghasilkan PR untuk setiap perubahan, memastikan konsistensi di semua repositori
Mengirim pemberitahuan Slack (opsional) untuk mengingatkan pemangku kepentingan dengan tautan langsung ke yang dibuat PRs
Dengan mengotomatiskan tugas-tugas berulang ini, utilitas secara signifikan mengurangi waktu, tenaga, dan risiko yang terkait dengan pengelolaan pembaruan infrastruktur skala besar. Ini memungkinkan tim untuk fokus pada pekerjaan teknik bernilai lebih tinggi sambil membantu memastikan bahwa perubahan diterapkan secara konsisten dan dapat ditelusuri di semua repositori.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
Python versi 3.8 atau yang lebih baru.
Token akses GitHub pribadi (PAT). Untuk informasi selengkapnya, lihat Membuat token akses pribadi (klasik)
dalam GitHub dokumentasi. GitHub PAT dapat mengakses repositori target Anda sehingga utilitas dapat melakukan operasi seperti membuat cabang dan permintaan tarik. Untuk informasi lebih lanjut, lihat repositori GitHub kode
pola ini.
Batasan
Kompleksitas konfigurasi menghadirkan tantangan utama. Efektivitas otomatisasi dibatasi oleh kemampuan file konfigurasinya. Meskipun sistem menangani perubahan standar secara efisien, modifikasi infrastruktur yang kompleks mungkin memerlukan intervensi manual dan kasus tepi tertentu tetap berada di luar cakupan penanganan otomatis.
Keamanan dan akses menyajikan pertimbangan yang signifikan terutama dalam mengelola token GitHub akses dan batas tarif API. Organizations harus secara hati-hati menyeimbangkan kebutuhan akan otomatisasi dengan penyimpanan dan manajemen kredensi yang aman, memastikan kontrol akses yang tepat sambil mempertahankan efisiensi operasional.
Kendala validasi menimbulkan batasan penting lainnya karena sistem otomatis memiliki kemampuan terbatas untuk memvalidasi logika bisnis dan persyaratan khusus lingkungan. Ketergantungan yang kompleks dan interaksi lintas layanan sering kali memerlukan pengawasan manusia karena validasi otomatis tidak dapat sepenuhnya menangkap semua nuansa kontekstual dan aturan bisnis.
Masalah skala dan kinerja muncul ketika berhadapan dengan perubahan infrastruktur skala besar. Sistem harus beroperasi dalam batas GitHub API sambil mengelola banyak repositori secara bersamaan. Operasi intensif sumber daya di seluruh infrastruktur yang luas dapat menciptakan kemacetan kinerja yang memerlukan manajemen yang cermat.
Batas integrasi membatasi fleksibilitas sistem karena terutama dirancang untuk bekerja dengan alat khusus seperti GitHub dan Slack. Organizations yang menggunakan alat yang berbeda mungkin memerlukan solusi kustom dan opsi penyesuaian alur kerja dari pola ini terbatas pada titik integrasi yang didukung.
Arsitektur
Diagram berikut menunjukkan alur kerja dan komponen untuk solusi ini.

Alur kerja terdiri dari langkah-langkah berikut:
Pengembang memicu GitHub Tindakan dengan menentukan repositori Terraform.
Utilitas otomatisasi membaca konfigurasi yang ditentukan.
Utilitas otomatisasi juga menarik repositori Terraform yang disediakan.
Utilitas otomatisasi membuat cabang baru dan membuat pembaruan ke templat Terraform secara lokal.
Utilitas otomatisasi mendorong cabang baru ke repositori dan membuat PR baru.
Utilitas otomatisasi menggunakan pemberitahuan Slack yang menyertakan tautan PR untuk memberi tahu pengembang dan mengaktifkan templat Terraform untuk penerapan. AWS Cloud
Alat
GitHub
adalah platform pengembang yang dapat digunakan pengembang untuk membuat, menyimpan, mengelola, dan membagikan kode mereka. 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. HashiCorp Terraform
adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal. Slack
, penawaran Salesforce, adalah platform percakapan bertenaga AI yang menyediakan kolaborasi obrolan dan video, mengotomatiskan proses tanpa kode, dan mendukung berbagi informasi.
Repositori kode
Kode untuk pola ini tersedia di Alur Kerja Pembaruan Infrastruktur Terraform GitHub Otomatis menggunakan GitHub
Praktik terbaik
Manajemen perubahan yang efektif sangat penting untuk implementasi yang sukses. Organizations harus mengadopsi strategi peluncuran bertahap untuk perubahan skala besar. Pertahankan konvensi penamaan cabang dan deskripsi PR yang konsisten dan pastikan dokumentasi komprehensif dari semua perubahan.
Kontrol keamanan harus diterapkan secara ketat, dengan fokus pada prinsip akses hak istimewa dan manajemen kredensi yang aman. Aktifkan aturan perlindungan cabang untuk mencegah perubahan yang tidak sah. Melakukan audit keamanan secara teratur untuk menjaga integritas sistem.
Protokol pengujian yang kuat harus mencakup
terraform planeksekusi otomatis dalam pipeline continuous integration dan continuous deployment (CI/CD). Protokol juga harus mencakup pemeriksaan validasi pra-komit, dan lingkungan tinjauan khusus untuk perubahan kritis. Pendekatan pengujian berlapis-lapis ini membantu menangkap masalah lebih awal dan memastikan stabilitas infrastruktur.Strategi pemantauan perlu mencakup mekanisme peringatan yang komprehensif, pelacakan success/failure metrik terperinci, dan mekanisme coba ulang otomatis untuk operasi yang gagal. Strategi ini membantu memastikan visibilitas operasional dan memungkinkan respons cepat terhadap masalah apa pun yang muncul.
Standar konfigurasi harus menekankan kontrol versi untuk semua konfigurasi, mempertahankan modularitas untuk kegunaan kembali dan skalabilitas. Dokumentasi skema dan contoh yang jelas membantu tim memahami dan menggunakan sistem otomasi secara efektif.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan repositori. | Untuk mengatur repositori, jalankan perintah berikut:
| AWS DevOps |
Instal dependensi. | Untuk menginstal dan memverifikasi dependensi Python, jalankan perintah berikut:
| AWS DevOps |
Konfigurasikan GitHub token. | Untuk mengonfigurasi GitHub token dan kemudian memverifikasi bahwa itu berfungsi, jalankan perintah berikut:
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan | Untuk menentukan repositori target Anda dan perubahan yang diinginkan, edit file
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Lakukan pengujian pra-penerbangan. | Selalu uji konfigurasi Anda sebelum menjalankannya di repositori produksi. Gunakan salah satu perintah berikut ini:
| AWS DevOps |
Verifikasi akses repositori. | Untuk memverifikasi bahwa GitHub token dapat mengakses repositori, jalankan perintah berikut:
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan utilitas otomatisasi dengan menggunakan GitHub Actions UI. | Untuk menjalankan utilitas otomatisasi menggunakan GitHub Actions UI, lakukan hal berikut:
| AWS DevOps |
(Alternatif) Jalankan utilitas otomatisasi dari baris perintah. | Jika mau, Anda dapat menjalankan utilitas otomatisasi dari baris perintah alih-alih dengan menggunakan UI GitHub Tindakan. Gunakan perintah berikut ini.
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tinjau yang dibuat PRs dan perubahan. | Untuk memantau hasil eksekusi GitHub alur kerja, lakukan hal berikut:
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
(Opsional) Bersihkan PRs. | Tutup ditinggalkan atau tidak perlu PRs. | AWS DevOps |
Sumber daya terkait
AWS Bimbingan Preskriptif
GitHub dokumentasi