Tag: ubuntu

  • Membuat Filesystem /opt dengan LVM Thin di Ubuntu

    Membuat Filesystem /opt dengan LVM Thin di Ubuntu

    Hari ini saya sedang oprek tentang lvm thin dan menempatkan /opt pada disk terpisah sebelum instalasi Carbonio. Untuk itu, disk tambahan 30 GB (/dev/xvdb) saya gunakan sebagai LVM thin pool, lalu saya buat thin volume bernama opt. Volume tersebut diformat dengan ext4 dan di-mount ke /opt. Jadi, filesystem dibuat di atas thin volume. Disk OS tetap berada di /dev/xvda.

    Sebelum mulai, pastikan /dev/xvdb benar-benar disk kosong dan /opt belum berisi aplikasi. Perintah pvcreate dapat merusak data jika dijalankan pada disk atau volume yang tidak sesuai.

    1. Periksa disk dan direktori /opt

    lsblk -f
    findmnt --mountpoint /opt
    ls -la /opt

    Pastikan /dev/xvdb adalah disk tambahan yang kosong dan /opt belum berisi aplikasi. Jangan lanjut jika ada data yang perlu dipertahankan.

    2. Buat volume group dan thin pool

    pvcreate /dev/xvdb
    vgcreate vgthin /dev/xvdb
    lvcreate --type thin-pool -L 24G -n pool vgthin

    Disk 30 GB tersebut sekarang memiliki volume group vgthin dengan thin pool 24 GB.

    3. Buat thin volume untuk /opt

    lvcreate -V 24G -T vgthin/pool -n opt

    Ukuran virtual volume opt adalah 24 GB, sama dengan ukuran pool. Jadi, contoh ini memakai LVM thin, tetapi belum mengalokasikan ukuran virtual melebihi pool.

    4. Format dan pasang ke /opt

    mkfs.ext4 /dev/vgthin/opt
    mkdir -p /opt
    mount /dev/vgthin/opt /opt
    df -hT /opt

    Hasil:

    Filesystem             Type  Size  Mounted on
    /dev/mapper/vgthin-opt ext4   24G  /opt

    5. Buat mount /opt tetap aktif setelah reboot

    Cek UUID volume opt:

    blkid /dev/vgthin/opt

    Dari hasil percobaan, UUID-nya adalah 634be5f6-b864-495a-b688-db33e14d8933. Buka /etc/fstab:

    nano /etc/fstab

    Tambahkan baris berikut di bagian bawah:

    UUID=634be5f6-b864-495a-b688-db33e14d8933  /opt  ext4  defaults  0  2

    Simpan dan periksa konfigurasi dan reload systemd:

    findmnt --verify
    systemctl daemon-reload

    Jika tidak ada error, reboot server. Setelah login kembali, pastikan /opt terpasang:

    findmnt --mountpoint /opt
    df -hT /opt

    Pastikan sumber mount mengarah ke vgthin-opt sebelum melanjutkan instalasi.

  • Hasil Deploy VM Ubuntu di Proxmox dengan Terraform

    Hasil Deploy VM Ubuntu di Proxmox dengan Terraform

    Pada artikel sebelumnya, saya sudah menyiapkan seluruh kebutuhan Terraform untuk Proxmox, mulai dari Terraform Controller, API Token, konfigurasi network, hingga file Terraform untuk membuat tiga VM Ubuntu.

    Kali ini saya akan mengaplikasikan konfigurasi yang sudah dibuat tersebut dan melihat hasil deployment-nya langsung di homelab.

    Topologi homelab

    Seluruh perangkat berada pada network 192.168.14.0/24.

    HostnameFungsiIP Address
    terraform-controllerMenjalankan Terraform192.168.14.80
    ubuntu-tf-01VM hasil Terraform192.168.14.81
    ubuntu-tf-02VM hasil Terraform192.168.14.82
    ubuntu-tf-03VM hasil Terraform192.168.14.83

    Alurnya kurang lebih seperti berikut:

    Terraform Controller
    192.168.14.80
            │
            │ Proxmox API
            ▼
         Proxmox VE
            │
            ├── ubuntu-tf-01 → 192.168.14.81
            ├── ubuntu-tf-02 → 192.168.14.82
            └── ubuntu-tf-03 → 192.168.14.83
    

    Cara Kerjanya

    Saya menggunakan provider bpg/proxmox sebagai penghubung antara Terraform dengan Proxmox API.

    Secara sederhana, Terraform tidak membuat VM dengan mengklik Web UI. Terraform mengirim request ke API Proxmox menggunakan API Token yang sudah dibuat.

    Konfigurasi Terraform
            │
            ▼
    bpg/proxmox Provider
            │
            │ API Request
            ▼
    Proxmox API :8006
            │
            ▼
    Resource dibuat di Proxmox
    

    API tersebut memungkinkan Terraform untuk mengunduh image, membuat VM, mengatur disk, network, Cloud-init, hingga menyalakan VM.

    Terraform kemudian menjalankan beberapa proses secara otomatis:

    1. Mengunduh Ubuntu 24.04 Cloud Image.
    2. Mengimport image ke storage Proxmox.
    3. Membuat tiga VM.
    4. Membuat disk dari Ubuntu Cloud Image.
    5. Mengatur CPU, RAM, disk, dan network.
    6. Mengatur IP statis melalui Cloud-init.
    7. Memasukkan SSH public key.
    8. Menyalakan seluruh VM.

    Dengan cara ini, saya tidak perlu menulis resource VM sebanyak tiga kali. Terraform melakukan iterasi berdasarkan hostname, VM ID, dan IP yang sudah ditentukan.

    Menjalankan Plan yang Sudah Disimpan

    Pada artikel panduan sebelumnya, konfigurasi sudah diperiksa menggunakan:

    terraform init
    terraform validate

    Kemudian rencana deployment dibuat dan disimpan ke file tfplan:

    terraform plan -out=tfplan

    Hasil plan menunjukkan:

    Plan: 4 to add, 0 to change, 0 to destroy.

    Empat resource tersebut terdiri dari:

    ResourceJumlah
    Ubuntu Cloud Image1
    VM Ubuntu3

    Untuk menjalankan rencana yang sudah disimpan tersebut, saya cukup menjalankan:

    terraform apply tfplan

    Dengan menggunakan saved plan, Terraform menerapkan perubahan yang sebelumnya sudah diperiksa pada saat terraform plan.

    Hasil Deployment

    Setelah proses selesai, Terraform berhasil membuat ketiga VM sesuai konfigurasi.

    181  ubuntu-tf-01  → 192.168.14.81
    182  ubuntu-tf-02  → 192.168.14.82
    183  ubuntu-tf-03  → 192.168.14.83

    Masing-masing VM sudah memiliki CPU, RAM, disk, IP statis, Cloud-init, dan SSH key sesuai konfigurasi Terraform.

    Ketiga VM juga langsung terlihat pada Proxmox dan berada dalam kondisi Running.

    Konfigurasi cloud-init

    Untuk memastikan VM benar-benar dapat digunakan, saya mencoba mengakses salah satunya dari Terraform Controller:

    ssh ubuntu@192.168.14.81

    Artinya VM tidak hanya berhasil dibuat di Proxmox, tetapi juga sudah mendapatkan konfigurasi awal dan dapat diakses melalui SSH.

    Terraform State

    VM yang dibuat tidak hanya dibuat sekali oleh Terraform, tetapi selanjutnya juga dikelola oleh Terraform.

    Resource tersebut dapat dilihat menggunakan:

    terraform state list

    Contohnya:

    proxmox_download_file.ubuntu_cloud_image
    proxmox_virtual_environment_vm.ubuntu_vm["ubuntu-tf-01"]
    proxmox_virtual_environment_vm.ubuntu_vm["ubuntu-tf-02"]
    proxmox_virtual_environment_vm.ubuntu_vm["ubuntu-tf-03"]

    State digunakan Terraform untuk mencatat resource yang dikelolanya. Karena itu, konfigurasi yang sama nantinya dapat digunakan untuk menambah, mengubah, atau menghapus VM.

    Kesimpulan

    Percobaan ini berhasil membuat 3 VM Ubuntu di Proxmox secara otomatis menggunakan Terraform.

    Rancang dan konfigurasi
          ↓
    terraform plan -out=tfplan
          ↓
    terraform apply tfplan
          ↓
    3 VM Ubuntu Running

    Jika sebelumnya pembuatan VM dilakukan satu per satu melalui Web UI, sekarang konfigurasi infrastrukturnya sudah tersimpan sebagai kode dan dapat digunakan kembali.

    Percobaan ini juga menjadi dasar sebelum melanjutkan otomatisasi berikutnya menggunakan Ansible untuk melakukan konfigurasi sistem setelah VM selesai dibuat.

    Referensi