Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memahami modul Terraform
Dalam bidang infrastruktur sebagai kode (IAc), modul adalah blok kode mandiri yang diisolasi dan dikemas bersama untuk digunakan kembali. Konsep modul adalah aspek yang tak terhindarkan dari pengembangan Terraform. Untuk informasi selengkapnya, lihat Modul
Perbedaan utama antara modul di Terraform dan CloudFormation modul CloudFormation diimpor dengan menggunakan tipe sumber daya khusus ()AWS::CloudFormation::ModuleVersion
. Di Terraform, setiap konfigurasi memiliki setidaknya satu modul, yang dikenal sebagai modul root
terraform { required_providers { helm = { source = "hashicorp/helm" version = "2.12.1" } } required_version = ">= 1.2.0" } module "eks" { source = "terraform-aws-modules/eks/aws" version = "20.2.1" vpc_id = var.vpc_id } provider "helm" { kubernetes { host = module.eks.cluster_endpoint cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data) } }
Anda mungkin telah memperhatikan bahwa file konfigurasi di atas tidak menyertakan AWS Penyedia. Itu karena modul mandiri dan dapat mencakup penyedia mereka sendiri. Karena penyedia Terraform bersifat global, penyedia dari modul anak dapat digunakan dalam modul root. Ini tidak benar tentang semua nilai modul. Nilai internal lain dalam modul dicakup secara default ke modul itu saja dan perlu dideklarasikan sebagai output agar dapat diakses di modul root. Anda dapat memanfaatkan modul open source untuk menyederhanakan pembuatan sumber daya dalam tumpukan Anda. Misalnya, modul eks melakukan lebih dari sekedar menyediakan kluster EKS — modul ini menyediakan lingkungan Kubernetes yang berfungsi penuh. Menggunakannya dapat menyelamatkan Anda dari menulis lusinan baris kode tambahan, asalkan konfigurasi modul eks sesuai dengan kebutuhan Anda.
Memanggil modul
Dua perintah CLI Terraform utama yang Anda jalankan selama penerapan Terraform adalah terraform init dan terraform apply.terraform init
perintah adalah menemukan semua modul anak dan mengimpornya sebagai dependensi ke dalam direktori. .terraform/modules
Selama pengembangan, setiap kali Anda menambahkan modul bersumber eksternal baru, Anda harus menginisialisasi ulang sebelum menggunakan perintah. apply
Saat Anda mendengar referensi ke modul Terraform, itu mengacu pada paket di direktori ini. Sebenarnya, modul yang Anda deklarasikan dalam kode Anda adalah modul panggilan, jadi dalam praktiknya, kata kunci modul memanggil modul yang sebenarnya, yang disimpan sebagai dependensi.
Dengan cara ini, modul panggilan berfungsi sebagai perwakilan yang lebih ringkas dari modul lengkap yang akan diganti saat penerapan berlangsung. Anda dapat memanfaatkan ide ini dengan membuat modul Anda sendiri di dalam tumpukan Anda untuk menegakkan pemisahan logis sumber daya dengan menggunakan kriteria apa pun yang Anda inginkan. Ingatlah bahwa tujuan akhir dari melakukan ini adalah untuk mengurangi kompleksitas tumpukan Anda. Karena berbagi data antar modul mengharuskan Anda untuk mengeluarkan data itu dari dalam modul, terkadang terlalu mengandalkan modul dapat memperumit banyak hal.
Modul root
Karena setiap konfigurasi Terraform memiliki setidaknya satu modul, ini dapat membantu untuk memeriksa properti modul dari modul yang paling sering Anda tangani: modul root. Setiap kali Anda mengerjakan proyek Terraform, modul root terdiri dari semua .tf
(atau.tf.json
) file di direktori tingkat atas Anda. Saat Anda menjalankan terraform apply
direktori tingkat atas itu, Terraform mencoba menjalankan setiap .tf
file yang ditemukannya di sana. Setiap file di subdirektori diabaikan kecuali mereka dipanggil dalam salah satu file konfigurasi tingkat atas ini.
Ini memberikan beberapa fleksibilitas dalam cara Anda menyusun kode Anda. Ini juga merupakan alasan mengapa lebih akurat untuk merujuk pada penerapan Terraform Anda sebagai modul daripada sebagai file karena beberapa file dapat terlibat dalam satu proses. Ada struktur modul standar.tf
file apa pun di direktori tingkat atas Anda, itu akan berjalan bersama dengan file lainnya. Faktanya, semua .tf
file tingkat atas dalam modul digunakan saat Anda menjalankannya. terraform apply
Jadi file mana yang dijalankan Terraform lebih dulu? Jawaban atas pertanyaan itu sangat penting.
Ada serangkaian langkah yang dilakukan Terraform setelah inisialisasi dan sebelum penerapan tumpukan. Pertama, konfigurasi yang ada dianalisis, dan kemudian grafik ketergantungan dibuatdepends_on
parameter akan ditangani setelah sumber daya yang mereka tentukan. Jika memungkinkan, Terraform dapat menerapkan paralelisme dan menangani sumber daya yang tidak bergantung secara bersamaan. Anda dapat melihat grafik ketergantungan sebelum menerapkan dengan menggunakan perintah grafik terraform
Setelah grafik ketergantungan dibuat, Terraform menentukan apa yang perlu dilakukan selama penerapan. Ini membandingkan grafik ketergantungan dengan file status terbaru. Hasil dari proses ini disebut rencana, dan ini sangat mirip dengan set CloudFormation perubahan. Anda dapat melihat paket saat ini dengan menggunakan perintah terraform plan
Sebagai praktik terbaik, disarankan untuk tetap sedekat mungkin dengan struktur modul standar. Dalam kasus di mana file konfigurasi Anda menjadi terlalu panjang untuk dikelola secara efisien dan pemisahan logis dapat menyederhanakan manajemen, Anda dapat menyebarkan kode Anda di beberapa file. Ingatlah bagaimana grafik ketergantungan dan proses rencana bekerja untuk membuat tumpukan Anda berjalan seefisien mungkin.