TeknoCerdas.com – Salam cerdas untuk kita semua. Dilansir melalui rilis resmi dari blog Hashicorp, Terraform 0.14 telah dirilis atau dikenal dengan Generel Availability (GA). Terraform adalah software Infrastructure as Code (IaC) populer untuk melakukan deployment infrastuktur ke berbagai cloud provider.
Perubahan atau fitur baru pada Hashicorp Terraform versi 0.14 diantaranya adalah:
- Concise Diff (Perubahan Ringkas)
- Provider Dependency Lockfile
- Sensitive Input Variables
- Dukungan untuk Linux ARM64
Baca Juga
Terraform 0.13 Resmi Dirilis oleh HashiCorp
Concise Diff
Pada versi sebelum 0.14 setiap dilakukan perintah plan
, apply
atau show
maka nilai yang tidak berubah dari status sebelumnya selalu ditampilkan. Hal ini sebenarnya “cukup” mengotori informasi utama yaitu apa saja yang berubah.
Pada Terraform 0.14 secara bawaan maka hanya nilai yang berubah yang akan ditampilkan. Nilai yang tidak berubah akan disembunyikan. Hal ini sangat membantu dalam melakukan auditing atau analisi sebelum deployment dilakukan. Karena biasanya terlalu banyak informasi yang ditampilkan namun tidak terlalu dibutuhkan.
Berikut ini adalah contoh dari perubahan atribut.
# test_resource.foo will be updated in-place
~ resource "test_resource""foo" {
id = "foo_123"
~ checksum = 28987129 -> (known after apply)
- mode = "test" -> null
name = "Foo Test"
tags = []
~ totals = {
- "bar" = 5 -> null
+ "baz" = 5
# (2 unchanged elements hidden)
}
~ values = [
- "alpha",
- "gamma",
+ "alpaca",
+ "goblin",
+ "zephyr",
# (23 unchanged elements hidden)
]
# (5 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
Dapat dilihat bahwa sekarang informasi perubahan jauh lebih ringkas.
Provider Dependency Lockfile
Terraform 0.14 menghadirkan penguncian terhadap versi provider yang digunakan. Jadi setelah melakukan perintah terraform ini
maka akan ada lock file yang mengindikasikan provider yang digunakan dan versinya. File ini dianjurkan untuk dimasukkan atau di-commit ke version control agar versi provider yang digunakan bisa sama persis ketika dijalankan pada mesin yang lain. Hal ini cukup vital pada proses CI/CD.
Jika ingin melakukan upgrade provider maka harus dilakukan secara eksplisit lewat perintah terraform init -upgrade
.
Berikut ini adalah contoh dari provider dependency lockfile yang ada pada terraform.lock
.
provider "registry.terraform.io/hashicorp/azurerm" {
version = "2.30.0"
constraints = "~> 2.12"
hashes = [
"h1:FJwsuowaG5CIdZ0WQyFZH9r6kIJeRKts9+GcRsTz1+Y=",
"h1:c/ntSXrDYM1mUir2KufijYebPcwKqS9CRGd3duDSGfY=",
"h1:yre4Ph76g9H84MbuhZ2z5MuldjSA4FsrX6538O7PCcY=",
"zh:04f0a50bb2ba92f3bea6f0a9e549ace5a4c13ef0cbb6975494cac0ef7d4acb43",
"zh:2082e12548ebcdd6fd73580e83f626ed4ed13f8cdfd51205d8696ffe54f30734",
"zh:246bcc449e9a92679fb30f3c0a77f05513886565e2dcc66b16c4486f51533064",
"zh:24de3930625ac9014594d79bfa42d600eca65e9022b9668b54bfd0d924e21d14",
"zh:2a22893a576ff6f268d9bf81cf4a56406f7ba79f77826f6df51ee787f6d2840a",
"zh:2b27485e19c2aaa9f15f29c4cff46154a9720647610171e30fc6c18ddc42ec28",
"zh:435f24ce1fb2b63f7f02aa3c84ac29c5757cd29ec4d297ed0618423387fe7bd4",
"zh:7d99725923de5240ff8b34b5510569aa4ebdc0bdb27b7bac2aa911a8037a3893",
"zh:7e3b5d0af3b7411dd9dc65ec9ab6caee8c191aee0fa7f20fc4f51716e67f50c0",
"zh:da0af4552bef5a29b88f6a0718253f3bf71ce471c959816eb7602b0dadb469ca",
]
}
Sensitive Input Variables
Terraform 0.14 menambahkan fitur yang berhubungan dengan output yaitu melakukan masking terhadap nilai yang sensitif contohnya password atau secret key. Caranya adalah dengan mendefinisikan atribut sensitive
dengan nilai true
pada variabel yang dibuat.
Hal ini sebagai langkah pencegahan agar output tersebut tidak tercatat atau tidak bisa dilihat oleh pihak yang tidak memiliki hak. Sebagai contoh jika melakukan build pada Terraform pada cloud maka logging informasi sensitif harus disembunyikan.
Berikut ini adalah contoh penerapan masking pada informasi sensitif.
variable "user_information" {
type = object({
name = string
address = string
})
sensitive = true
}
resource "some_resource""a" {
name = var.user_information.name
address = var.user_information.address
}
Ketika dilakukan perintah apply
atau plan
harusnya output akan seperti dibawah.
Terraform will perform the following actions:
# some_resource.a will be created
+ resource "some_resource""a" {
+ name = (sensitive)
+ address = (sensitive)
}
Plan:1 to add, 0 to change, 0 to destroy.
Dukungan untuk Linux ARM64
Pangsa pasar arsitektur ARM semakin hari semakin besar. Apalagi dengan dirilisnya chip M1 dari Apple Silicon untuk jajaran macbook. Hashicorp pun tidak ketinggalan untuk mengembangan Terraform untuk arsitektur ARM64.
Baca Juga
Chip M1 Apple Silicon pada MacBook Air Mengalahkan MacBook Pro
Saat ini arsitektur Terraform untuk ARM64 hanya tersedia untuk sistem operasi Linux. Kedepan harusnya tidak sulit bagi Hashicorp untuk mengeluarkan versi ARM64 untuk sistem operasi lain.
Dengan Terraform 0.14 telah dirilis ke publik para pengembang dapat diharapkan menggunakan versi ini untuk pengalaman deploy yang lebih baik.