Contoh-contoh berikut menggunakan penyedia AWS tetapi sebagian besar prinsip yang digunakan pada contoh-contoh di bawah dapat diaplikasikan ke penyedia komputasi awan dan juga penyedia lainnya seperti DNS, Basis data, Pemantauan sistem, dan lain-lain.
Tipe | Deskripsi | Tingkat Kesiapan |
---|---|---|
Tipe | Deskripsi | Tingkat Kesiapan |
---|---|---|
Beberapa sumber daya, tanpa dependensi eksternal. Satu akun AWS. Satu wilayah. Lingkungan tunggal.
Ya
Beberapa lingkungan dan akun AWS, modul-modul infrastruktur siap pakai. Menggunakan Terraform.
Ya
Banyak akun AWS, banyak wilayah, kebutuhan yang mendesak untuk mengurangi salin tempel, modul infrastruktur pesanan, penggunaan komposisi kelas berat. Menggunakan Terraform.
Sedang dalam pengerjaan
Sangat besar
Beberapa penyedia (AWS, GCP, Azure). Penggelaran di banyak komputasi awan. Menggunakan Terraform.
Tidak
sedang
Beberapa akun AWS dan lingkungan, modul infrastruktur siap pakai, pola komposisi menggunakan Terragrunt.
Tidak
besar
Banyak akun AWS, banyak wilayah, kebutuhan mendesak untuk mengurangi salin tempel, penggunaan komposisi kelas berat. Menggunakan Terragrunt.
Tidak
sangat besar
Beberapa penyedia (AWS, GCP, Azure). Penggelaran di banyak komputasi awan. Menggunakan Terragrunt.
Tidak
Sumber: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraform
Contoh ini mengandung kode sebagai ilustrasi dari struktur konfigurasi Terraform untuk infrastruktur berukuran kecil dimana tidak ada dependensi eksternal di dalamnya.
Sangat cocok untuk permulaan dan direstruktur seiring waktu
Sangat cocok untuk modul sumber daya kecil
Bagus untuk modul infrastruktur kecil dan linier (Contoh terraform-aws-atlantis)
Bagus untuk sumber daya ukuran kecil (lebih sedikit jumlahnya dari 20-30)
Berkas keadaan tunggal untuk semua sumber daya dapat memperlambat proses bekerja dengan Terraform bila jumlah dari sumber daya terus meningkat (Pertimbangkan untuk menggunakan argumen-target
untuk membatasi jumlah sumber daya)
Berikut daftar artikel yang ada di bagian ini:
Contoh di atas berisi kode sebagai ilustrasi struktur konfigurasi Terraform untuk infrastruktur dengan ukuran medium yang menggunakan hal berikut:
2 buah akun AWS
2 lingkungan yang berbeda (prod
dan stage
yang tidak berbagi apa pun). Setiap lingkungan hidup di dalam akun AWS yang berbeda.
Setiap lingkungan menggunakan versi yang sama dari modul internal modules/network
yang bersumber dari direktori lokal.
Sangat cocok untuk proyek dengan infrastruktur yang terpisah secara logis (Akun AWS yang berbeda)
Cocok ketika tidak ada kebutuhan untuk mengubah sumber daya bersama antar akun AWS (satu lingkungan = satu akun AWS = satu berkas keadaan)
Bagus ketika tidak ada kebutuhan mengorkestrasi perubahan antar lingkungan
Bagus ketika sumber daya infrastruktur sengaja dibedakan untuk setiap lingkungan dan tidak bisa digeneralisasi (Contoh beberapa sumber daya tidak ada di satu lingkungan atau beberapa wilayah)
Seiring berkembangnya proyek, akan menjadi lebih sulit untuk menjaga supaya lingkungan-lingkungan tersebut mutakhir. Pertimbangkan untuk menggunakan modul infrastruktur (siap pakai atau internal) untuk pekerjaan yang berulang.
Sumber:
Setiap lingkungan menggunakan versi yang berbeda dari modul infrastruktur siap pakai (alb
) yang berasal dari
Sumber: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraform
Contoh di atas berisi kode sebagai ilustrasi struktur konfigurasi Terraform untuk infrastruktur ukuran besar yang mengandung hal berikut:
2 akun AWS
2 wilayah
2 lingkungan terpisah (prod
dan stage
yang tidak berbagi apa pun). Setiap lingkungan hidup di akun yang berbeda dan menjangkau sumber daya di 2 wilayah
Setiap lingkungan menggunakan versi yang berbeda dari modul infrastruktur siap pakai (alb
) yang berasal dari Terraform Registry
Setiap lingkungan menggunakan versi yang sama dari modul internal modules/network
yang bersumber dari direktori lokal.
Pada proyek besar seperti yang dijabarkan di atas, manfaat dari penggunaan Terragrunt menjadi sangat jelas. Lihat Contoh struktur kode pada Terragrunt .
Sangat cocok untuk proyek dengan infrastruktur yang terpisah secara logis (akun AWS berbeda)
Cocok ketika tidak ada kebutuhan untuk mengubah sumber daya bersama antar akun AWS (satu lingkungan = satu akun AWS = satu berkas keadaan)
Bagus ketika tidak ada kebutuhan mengorkestrasi perubahan antar lingkungan
Bagus ketika sumber daya infrastruktur sengaja dibedakan untuk setiap lingkungan dan tidak bisa digeneralisasi (Contoh beberapa sumber daya tidak ada di satu lingkungan atau beberapa wilayah)
Seiring berkembangnya proyek, akan menjadi lebih sulit untuk menjaga supaya lingkungan-lingkungan tersebut mutakhir. Pertimbangkan untuk menggunakan modul infrastruktur (siap pakai atau internal) untuk pekerjaan yang berulang.