Hashicorp Terraform 0.14 Telah Dirilis

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Terraform 0.14 telah dirilis
Hashicorp Terraform 0.14 telah dirilis (Sumber: Hashicorp)

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:

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.