• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

Otomatisasi Pembuatan Server Upcloud dengan Terraform

Last Updated on 29 July 2021 By tommy Leave a Comment

Terraform adalah tool yang digunakan untuk mengelola Infrastructure-as-a-Service (IaaS). Terraform sangat powerfull sehingga bisa menghancurkan segalanya bila salah menjalankannya, contoh anda menjalankan terraform destroy pada server production kantor ;). Dengan adanya terraform untuk provisioning banyak dan satu server code yang kita buat sama banyaknya, jadi sangat efisien waktu dan tenaga.

Ada baiknya bila ini pertama kali anda menggunakan terraform untuk berhati-hati.

Buat akun API Upcloud

Buat sub-account untuk provisioning server di terraform di upcloud dari menu people
simpan sebagai variable di ~/.bashrc

echo 'export UPCLOUD_USERNAME=username' | tee -a ~/.bashrc
echo 'export UPCLOUD_PASSWORD=password' | tee -a ~/.bashrc

hal ini penting agar credential tidak ikut tersimpan di git, atau version control yang digunakan.

buat variable.tf

terraform {
  required_providers {
    upcloud = {
      source  = "UpCloudLtd/upcloud"
      version = ">= 2.1.1"
    }
  }
}
 
provider "upcloud" {
}
 
variable "server_count" {
  default = "2"
}
 
variable "default_user" {
  default = "jaranguda"
}
 
variable "ssh_public_key" {
  default = "ssh-rsa AAAAB3NzaC1ycxxxxxxx"
}

pada variable.tf tersebut kita buat default_user, server_count dan provider agar tidak perlu berulang dan code lebih rapi dan terstruktur. Isikan SSH Public key anda, bila belum ada bisa dibuat dengan

ssh-keygen

Untuk servernya buat file nginx.tf

resource "upcloud_server" "nginx" {
 
  count    = var.server_count
  hostname = "nginx-${count.index + 1}"
  zone     = "sg-sin1"
  plan     = "1xCPU-1GB"
 
  template {
    size    = 25
    storage = "01000000-0000-4000-8000-000030200200"
  }
 
  # Network interfaces
  network_interface {
    type = "public"
  }
 
  network_interface {
    type = "utility"
  }
 
  # SSH Public key
  login {
    user = var.default_user
    keys = [var.ssh_public_key]
  }
 
  # konek ke server
  connection {
    host        = self.network_interface[0].ip_address
    type        = "ssh"
    user        = var.default_user
    private_key = file("/home/jaranguda/.ssh/id_rsa")
    agent       = true
  }
 
  # Setelah selesai install jalankan command
  provisioner "remote-exec" {
    inline = [
      "sudo apt update && sudo apt install nginx -yq"
    ]
  }
 
  # simpan public IP di file ips.txt
  provisioner "local-exec" {
    command = "echo ${self.network_interface[0].ip_address} >> ~/ips.txt"
  }
 
}

pada proses pembuatan server nginx diatas, kita akan membuat 2 buat web server nginx dan dibuat user jaranguda dan diberikan akses sudo. Contoh

uid=1000(jaranguda) gid=1000(jaranguda) groups=1000(jaranguda),27(sudo)

Setelah server selesai dibuat, akan di update dan install dengan apt, bisa dilihat di remote-exec

Private key sesuaikan dengan letak private key anda, default ada di /home/USERNAME/.ssh/id_rsa

Jalankan Terraform

Sebelum terraform dijalankan, download terlebih dahulu modul Upcloud dengan menjalankan

terraform init

Setelah selesai jalankan proses pembuatan server

terraform apply

tunggu beberapa saat anda akan diminta untuk mengetik yes

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.
 
  Enter a value: yes

lalu tekan enter agar proses provisioning dimulai.
proses terraform install berhasil

Tampilan di dashboard upcloud
terraform dashboard di upcloud

Karena server yang kita buat menggunakan IP Public, jadi bisa langsung di cek dengan mengakses IPv4
tampilan nginx di server terraform

Setelah testing selesai dengan mudah server-server yang tadi dibuat dihapus

terraform destroy

Tulisan menarik lainnya

  • Mengelola Upcloud Server dengan CLI

    Baru-baru ini Upcloud merilis CLI. Buat yang belum tau, Upcloud adalah salah satu penyedia jasa…

  • Monitoring Uptime Server Linux dengan Script PHP

    Dengan bantuang fungsi shell_exec, scriptnya sangat sederhana uptime.php tapi biasanya di web hosting ngga bisa…

  • Mengecek Server Online Atau Offline dengan PHP

    Script dibawah ini bisa digunakan untuk membuat website seperti Is my website down or not…

  • Membangun Web Server dengan Koneksi Indihome

    Ditutorial membangun server dengan koneksi Indihome (Telkom Speedy) ini kita akan membuat web server yang…

Filed Under: Linux Tagged With: devops, sre

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Cara Buat atau Update UID User Docker Image
  • Solusi helm Upgrade Failed
  • macOS package is untrusted
  • Cara Mengganti Port Screen Sharing macOS
  • Cara Menonaktifkan Pager di macOS

Komentar

  • Iqu on Review ISP Fiber Optik Balifiber
  • Sarah on Kemana Menghilangnya Saldo BCA 50 ribu
  • Rizcky on Kemana Menghilangnya Saldo BCA 50 ribu
  • Mubashar sadiq on Password Superadmin Huawei HG8245A
  • Beritalogi on Cara Redirect Domain di Cloudflare

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.3m views
  • Password Terbaru ZTE F609 Indihome 786k views
  • Password Superadmin Huawei HG8245A 330.5k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 275.4k views
  • Cara Setting Wireless ZTE F609 Indihome 260.4k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 172.2k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 162k views
  • Akses UseeTV Indihome via Wireless ZTE F609 157.5k views
  • Cara Reset Password ZTE F609 Indihome 148.5k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 115.5k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
carakami.com
kuotabisa.com
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java