Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memahami status dan backend Terraform
Salah satu konsep terpenting dalam infrastruktur sebagai kode (IAc) adalah konsep negara. Layanan IAc mempertahankan status, yang memungkinkan Anda mendeklarasikan sumber daya dalam file IAc tanpa membuatnya ulang setiap kali Anda menerapkan. File IAC mendokumentasikan status semua sumber daya pada akhir penerapan sehingga kemudian dapat membandingkan status itu dengan status target, seperti yang dinyatakan dalam penerapan berikutnya. Jadi, jika status saat ini berisi bucket Amazon Simple Storage Service (Amazon S3) my-s3-bucket
bernama Simple Storage Service (Amazon S3) dan perubahan yang masuk juga berisi bucket yang sama, proses baru akan menerapkan perubahan apa pun yang ditemukan pada bucket yang ada daripada mencoba membuat bucket baru.
Tabel berikut memberikan contoh proses status IAc umum.
Keadaan saat ini | Status target | Tindakan |
---|---|---|
Tidak ada ember S3 bernama my-s3-bucket |
Ember S3 bernama my-s3-bucket |
Buat bucket S3 bernama my-s3-bucket |
my-s3-bucket tanpa pembuatan versi bucket yang dikonfigurasi |
my-s3-bucket tanpa pembuatan versi bucket yang dikonfigurasi |
Tidak ada tindakan |
my-s3-bucket tanpa pembuatan versi bucket yang dikonfigurasi |
my-s3-bucket dengan pembuatan versi bucket yang dikonfigurasi |
my-s3-bucket Konfigurasikan untuk memiliki versi bucket |
my-s3-bucket dengan pembuatan versi bucket yang dikonfigurasi |
Tidak ada ember S3 bernama my-s3-bucket |
Mencoba untuk menghapus my-s3-bucket |
Untuk memahami berbagai cara di mana AWS CloudFormation dan status trek Terraform, penting untuk mengingat perbedaan dasar pertama antara kedua alat: CloudFormation di-host di dalam AWS Cloud, dan Terraform pada dasarnya jarak jauh. Fakta ini memungkinkan CloudFormation untuk mempertahankan keadaan secara internal. Anda dapat pergi ke CloudFormation konsol dan melihat riwayat peristiwa dari tumpukan tertentu, tetapi CloudFormation layanan itu sendiri memberlakukan aturan status untuk Anda.
Tiga mode yang CloudFormation beroperasi di bawah untuk sumber daya tertentu adalahCreate
,Update
, danDelete
. Mode saat ini ditentukan berdasarkan apa yang terjadi pada penerapan terakhir, dan tidak dapat dipengaruhi sebaliknya. Anda mungkin dapat memperbarui CloudFormation sumber daya secara manual untuk memengaruhi mode mana yang ditentukan, tetapi Anda tidak dapat meneruskan perintah CloudFormation yang mengatakan “Untuk sumber daya ini, operasikan dalam Create
mode.”
Karena Terraform tidak di-host di AWS Cloud, proses pemeliharaan status harus lebih dapat dikonfigurasi. Untuk alasan ini, status Terraform dipertahankan dalam file status
Secara default, file status Terraform disimpan secara lokal di tingkat atas direktori utama yang menjalankan tumpukan Terraform Anda. Jika Anda menjalankan terraform apply
perintah dari lingkungan pengembangan lokal Anda, Anda dapat melihat Terraform menghasilkan file terraform.tfstate yang digunakannya untuk mempertahankan status secara real time. Baik atau buruk, ini memberi Anda lebih banyak kendali atas negara bagian di Terraform daripada yang Anda miliki. CloudFormation Meskipun Anda tidak boleh memperbarui file status secara langsung, ada beberapa perintah CLI Terraform yang dapat Anda jalankan yang akan memperbarui status di antara penerapan. Misalnya, terraform import
Fakta bahwa Terraform perlu menyimpan statusnya di suatu tempat mengarah ke konsep lain yang tidak berlaku untuk CloudFormation: backend. Backend Terraform
Saat mengembangkan untuk integrasi berkelanjutan dan lingkungan penerapan berkelanjutan (CI/CD), file status lokal umumnya disertakan dalam file.gitignore untuk menjauhkannya dari kontrol versi. Maka tidak ada file status lokal yang ada di dalam pipeline. Agar berfungsi dengan baik, tahap pipeline itu perlu menemukan file status yang benar di suatu tempat.Inilah sebabnya mengapa file konfigurasi Terraform sering berisi blok backend. Blok backend menunjukkan ke tumpukan Terraform bahwa ia perlu mencari di suatu tempat selain direktori tingkat atasnya sendiri untuk menemukan file status.
Backend Terraform dapat ditemukan hampir di mana saja: bucket
terraform { backend "s3" { bucket = "my-s3-bucket" key = "state-file-folder" region = "us-east-1" } }
Untuk menghindari penyimpanan informasi sensitif dalam file konfigurasi Terraform, backend juga mendukung konfigurasi sebagian. Pada contoh sebelumnya, kredensional yang diperlukan untuk mengakses bucket tidak ada dalam konfigurasi. Kredensi dapat diperoleh dari variabel lingkungan atau dengan menggunakan cara lain, seperti. AWS Secrets Manager Untuk informasi selengkapnya, lihat Mengamankan data sensitif dengan menggunakan AWS Secrets Manager dan HashiCorp Terraform.
Skenario backend yang umum adalah backend lokal yang digunakan di lingkungan lokal Anda untuk tujuan pengujian. File terraform.tfstate disertakan dalam file.gitignore sehingga tidak didorong ke repositori jarak jauh. Kemudian, setiap lingkungan dalam pipa CI/CD akan mempertahankan backendnya sendiri. Dalam skenario ini, beberapa pengembang mungkin memiliki akses ke status jarak jauh ini, jadi Anda ingin melindungi integritas file status. Jika beberapa penerapan berjalan dan memperbarui status pada saat yang sama, file status dapat menjadi rusak. Untuk alasan ini, dalam situasi dengan backend non-lokal, file status biasanya dikunci