Site icon Learning & Doing

Membuat Infrastructure as Code dengan Terraform

Code

“Membuat Infrastructure as Code dengan Terraform”

Pengantar

Terraform adalah infrastructure as code dari HashiCorp. Ini adalah alat untuk membangun, mengubah, dan mengelola infrastruktur dengan cara yang aman dan berulang. Operator dan tim Infrastruktur dapat menggunakan Terraform untuk mengelola lingkungan dengan bahasa konfigurasi yang disebut HashiCorp Configuration Language (HCL) untuk penerapan otomatis yang dapat dibaca manusia.

Infrastructure as code adalah proses mengelola infrastruktur dalam file atau file daripada mengkonfigurasi sumber daya secara manual di antarmuka pengguna. Sumber daya dalam hal ini adalah setiap bagian dari infrastruktur di lingkungan tertentu, seperti mesin virtual, grup keamanan, antarmuka jaringan, dll. Pada tingkat tinggi, Terraform memungkinkan operator untuk menggunakan HCL untuk membuat file yang berisi definisi sumber daya yang mereka inginkan di hampir semua penyedia (AWS, Google Cloud, GitHub, Docker, dll.) dan mengotomatiskan pembuatan sumber daya tersebut pada saat berlaku.

Persyaratan

Cara Membuat Infrastructure

touch main.tf

Tambahkan script berikut -> ganti project ID dengan milikmu

terraform {
  required_providers {
    google = {
      source = "hashicorp/google"
    }
  }
}
provider "google" {
  version = "3.5.0"
  project = "<PROJECT_ID>"
  region  = "us-central1"
  zone    = "us-central1-c"
}
resource "google_compute_network" "vpc_network" {
  name = "terraform-network"
}
terraform init
terraform apply
terraform show

Cara Mengubah Infrastructure

Menambahkan Resources

resource "google_compute_instance" "vm_instance" {
  name         = "terraform-instance"
  machine_type = "f1-micro"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    network = google_compute_network.vpc_network.name
    access_config {
    }
  }
}
terraform apply

Mengganti Resources

resource "google_compute_instance" "vm_instance" {
  name         = "terraform-instance"
  machine_type = "f1-micro"
  tags         = ["web", "dev"]
  # ...
}
terraform apply

Destructive Changes

  boot_disk {
    initialize_params {
      image = "cos-cloud/cos-stable"
    }
  }
terraform apply

Destroy Infrastructure

terraform destroy

Create Resource Dependencies

terraform apply

Menambahkan IP static

resource "google_compute_address" "vm_static_ip" {
  name = "terraform-static-ip"
}
terraform plan
  network_interface {
    network = google_compute_network.vpc_network.self_link
    access_config {
      nat_ip = google_compute_address.vm_static_ip.address
    }
  }
terraform plan -out static_ip
terraform apply "static_ip"

Implicit dan Explicit Dependencies

# New resource for the storage bucket our application will use.
resource "google_storage_bucket" "example_bucket" {
  name     = "<UNIQUE-BUCKET-NAME>"
  location = "US"
  website {
    main_page_suffix = "index.html"
    not_found_page   = "404.html"
  }
}
# Create a new instance that uses the bucket
resource "google_compute_instance" "another_instance" {
  # Tells Terraform that this VM instance must be created only after the
  # storage bucket has been created.
  depends_on = [google_storage_bucket.example_bucket]
  name         = "terraform-instance-2"
  machine_type = "f1-micro"
  boot_disk {
    initialize_params {
      image = "cos-cloud/cos-stable"
    }
  }
  network_interface {
    network = google_compute_network.vpc_network.self_link
    access_config {
    }
  }
}
terraform plan
terraform apply

Provision Infrastructure

Defining a Provisioner

resource "google_compute_instance" "vm_instance" {
  name         = "terraform-instance"
  machine_type = "f1-micro"
  tags         = ["web", "dev"]
  provisioner "local-exec" {
    command = "echo ${google_compute_instance.vm_instance.name}:  ${google_compute_instance.vm_instance.network_interface[0].access_config[0].nat_ip} >> ip_address.txt"
  }
  # ...
}
terraform apply
terraform taint google_compute_instance.vm_instance
terraform apply

Penutup

Sahabat Blog Learning & Doing demikianlah penjelasan mengenai Membuat Infrastructure as Code dengan Terraform. Semoga Bermanfaat . Sampai ketemu lagi di postingan berikut nya.

Exit mobile version