Traffine I/O

Bahasa Indonesia

2023-03-10

Terraform Workspace

Apa itu Terraform Workspace

Terraform Workspace adalah kontainer logis untuk mengelola state resource infrastruktur di lingkungan yang berbeda. Secara default, setiap konfigurasi Terraform memiliki satu workspace yang disebut 'default'. Namun, Anda dapat membuat workspace tambahan untuk mengelola beberapa lingkungan, seperti pengembangan, staging, dan produksi.

Konsep dan Terminologi Utama

  • Workspace
    Kontainer bernama untuk mengelola state resource infrastruktur Anda di berbagai lingkungan.

  • State
    File berformat JSON yang mencatat state terkini dari resource infrastruktur Anda yang dikelola oleh Terraform.

  • Environment
    Konteks khusus di mana resource infrastruktur Anda dideploy dan dikelola, seperti pengembangan, staging, atau produksi.

Membuat dan Mengelola Workspaces

Membuat Workspace Baru

Untuk membuat workspace baru, gunakan perintah terraform workspace new diikuti dengan nama workspace yang diinginkan. Contohnya:

bash
$ terraform workspace new development

Perintah ini membuat workspace baru bernama 'development', yang dapat Anda gunakan untuk mengelola lingkungan pengembangan Anda.

Beralih Antara Workspaces

Untuk beralih antara workspaces, gunakan perintah terraform workspace select diikuti dengan nama workspace:

bash
$ terraform workspace select development

Perintah ini mengatur workspace aktif ke 'development', memungkinkan Anda mengelola resource dalam workspace tersebut.

Menghapus Workspaces

Untuk menghapus workspace, gunakan perintah terraform workspace delete diikuti dengan nama workspace:

basha
$ terraform workspace delete development

Perintah ini menghapus workspace 'development' beserta file state yang terkait.

Mencantumkan Workspaces

Untuk mencantumkan semua workspace yang tersedia, gunakan perintah terraform workspace list:

bash
$ terraform workspace list

Perintah ini menampilkan daftar semua workspace yang ada, dengan tanda bintang (*) di samping workspace aktif saat ini.

Konfigurasi Workspace-Specific

Penanganan Variable dan Output

Untuk menangani variabel dan output secara khusus untuk workspace, gunakan interpolasi terraform.workspace. Ini memungkinkan Anda mengonfigurasi resource secara dinamis berdasarkan workspace aktif. Contohnya:

tf
variable "instance_type" {
  type    = map(string)
  default = {
    default     = "t2.micro"
    development = "t2.small"
    production  = "m5.large"
  }
}

resource "aws_instance" "example" {
  ami           = "ami-0c94855ba95b798c7" # This is an example Amazon Linux 2 AMI ID
  instance_type = var.instance_type[terraform.workspace]

  tags = {
    Name        = "example-instance-${terraform.workspace}"
    Environment = terraform.workspace
  }
}

Pada contoh ini, variabel instance_type memiliki nilai yang berbeda untuk workspace 'default', 'development', dan 'production'. Atribut instance_type dari resource menggunakan workspace aktif untuk menentukan nilai yang sesuai.

Konfigurasi Backend

Anda juga dapat mengonfigurasi penyimpanan backend Anda agar khusus untuk workspace. Misalnya, menggunakan backend S3 dengan kunci unik untuk setiap workspace:

tf
terraform {
  backend "s3" {
    bucket = "my-terraform-state"
    key    = "state/${terraform.workspace}/terraform.tfstate"
    region = "us-west-2"
  }
}

Konfigurasi ini menyimpan file state untuk setiap workspace dalam kunci terpisah dalam bucket S3 yang sama.

Penandaan Resource

Menandai resource dengan informasi workspace dapat membantu dalam pengelolaan, audit, dan alokasi biaya. Dengan menggunakan interpolasi terraform.workspace, Anda dapat menambahkan tag ke resource Anda:

tf
resource "aws_instance" "example" {
  # ... other configuration ...

  tags = {
    Name        = "example-instance-${terraform.workspace}"
    Environment = terraform.workspace
  }
}

Referensi

https://developer.hashicorp.com/terraform/language/state/workspaces

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!