Mufid's Code blog

Mengatasi Pesan Kesalahan Terraform “Could Not Load Plugin”

| Comments

Saya menggunakan Terraform Cloud. Saya tidak sadar ada perbaruan di Terraform. Akan sangat baik jika saya bisa selalu ada di versi paling tinggi untuk meminimalkan masalah. Akan tetapi, layaknya langkah migrasi untuk perbaruan versi dari 0.11 ke 0.12, versi 0.13 ini juga menawarkan langkah migrasi khusus. Saya menjalankan perintah berikut di lokal kemudian langsung push ke Terraform Cloud via GitHub:

terraform 0.13upgrade

Karena percaya diri tidak ada masalah, saya langsung menggunakan versi 0.13 di Terraform Cloud. Sayang sekali, saya malah menemukan masalah berikut:

Tangkapan Layar Could Not Load Plugin

Wow… kenapa ya? Selidik punya selidik, saya menemui laman GitHub berikut: https://github.com/hashicorp/terraform/issues/26104. Tampaknya saya harus menjalankan perintah replace-provider karena Terraform menggunakan struktur URL yang berbeda untuk provider registry mereka. Pada laman GitHub tersebut, ditampilkan bahwa dia perlu mengganti registry URL untuk Vault. Oleh karena problem saya adalah di DigitalOcean, maka saya mengganti provider untuk DigitalOcean:

$ terraform state replace-provider -auto-approve registry.terraform.io/-/digitalocean registry.terraform.io/digitalocean/digitalocean

Terraform will perform the following actions:

  ~ Updating provider:
    - registry.terraform.io/-/digitalocean
    + registry.terraform.io/digitalocean/digitalocean

Changing 8 resources:

  ...<woops, rahasia he-he-he>

Selesai! Terraform Cloud sekarang berjalan seperti sebagaimana seharusnya.

Sebuah Curhatan Tak Terstruktur tentang Ketimpangan Gaji

| Comments

Mari bicara gaji. Eits, tunggu dulu, bukannya rahasia? Bukannya berbahya memberi tahu gaji kita ke orang lain? Nanti kalau orang lain jadi suka pinjam uang ke kita, bagaimana? Ah, tentu saja dalam konteks lokal, rasanya sangat jarang untuk bicara tentang gaji. Akan tetapi, sesungguhnya bicara tentang gaji bisa bermanfaat.

Karena… ini ada hubungannya dengan ketimpangan gaji. Salah satu upaya untuk melawan ketimpangan gaji adalah… membicarakannya. Pada kasus ekstrim, membicarakan gaji adalah lelucon. Akan tetapi, tempat kerja Anda tentu bukan lelucon, kan?

Di salah satu papan gambar, sesekali ada utas tentang berapa gaji kita. Tayangan di bawah adalah salah satu contoh utas di papan gambar. Saya tidak tampilkan ID dari papan gambar ini karena mungkin terlalu “vulgar”.

Pembahasan gaji di salah satu papan gambar

Kalau kita bisa berbohong di papan gambar tanpa nama, ada juga upaya untuk membahas gaji di Twitter. Dulu, sempat ngetren pembahasan gaji lewat tagar TalkPay.

Sebentar sebentar… bukannya orang bisa berbohong? Tentu saja. Di level yang lebih “gila”, Anda mungkin tertarik untuk melihat levels.fyi. Levels.fyi disebut gila karena… metode verifikasinya dia adalah dengan harus mengirim bukti pajak untuk gaji! Anda diharuskan mengirim formulir W2 ke levels.fyi. Wow?? Apa enggak ngeri tuh?

Tangkapan layar dari situs web levels.fyi (1) Tangkapan layar dari situs web levels.fyi (2)

Saya kurang paham konteks kerahasiaan gaji di Amerika Serikat seperti apa. Akan tetapi, gaji kita sebenarnya enggak rahasia-rahasia amat. DJP tahu penghasilan kita berapa. Bank juga tahu penghasilan Anda berapa, karena jumlah pendapatan bulanan adalah salah satu syarat kolom yang wajib diisi dalam pembukaan rekening. Penyedia jasa kredit, baik itu kartu kredit atau kredit online atau kredit berbasis aplikasi, juga tahu berapa gaji Anda karena itu dibutuhkan untuk verifikasi. Boleh jadi bahkan Anda mengirim bukti pajak dan slip gaji ke lembaga non-bank tersebut. Iya, non bank.

Di Indonesia banyak upaya serupa untuk bicara gaji dan melawan ketimpangan gaji. Qerja telah melakukannya sejak lama. Akan tetapi, sedikit sekali data di Qerja yang bermakna. Ada juga upaya lain lewat sebuah Tweet Viral yang datanya terlihat lebih sound untuk pekerja IT.

Meski demikian, semua data yang bisa kita dapatkan untuk konteks Indonesia tidaklah bisa diverifikasi. Kita tidak tahu berapa banyak orang yang jujur dan berapa banyak orang yang berbohong. Malah ada yang mengatakan data yang muncul di situs Qerja agak condong ke persentil 30. Artinya, di bawah rata-rata. Besar kemungkinan ketimpangan di sana.

Bagaimana dengan Survei Kelly? Saya tidak tahu, data itu masih kurang bermakna. Bandingkan dengan levels.fyi. Di sana secara persis digambarkan jenjang karirnya, ada apa saja tingkatan karirnya, dan berapa gaji rata-rata untuk tingkatan karir tersebut. Data ini tersebar secara ambigu di survei Kelly.

Berapa gaji sebenernya yang harus kita dapatkan? Berapa gaji orang lain untuk tahun pengalaman yang sama? Kita tidak tahu persis. Banyak sekali persoalan dalam ketenagakerjaan yang perlu diperbaiki. Saya pikir, jika kita lebih berani bicara tentang gaji kita berapa, kehidupan kita akan lebih baik. Saya mengharapkan adanya platform seperti levels.fyi. Jika kita rela memberikan data keuangan yang paling rahasia kepada berbagai macam institusi finansial, mengapa kita juga tidak berbagi data keuangan kita untuk memberikan sedikit tambahan keberuntungan hidup kepada orang lain?

Ahh tapi kan dengan mengirim slip gaji belum tentu datanya akurat? Mungkin perlu saya perjelas: akan lebih baik jika kita berani berbagi informasi gaji dengan data yang akurat. Di sana ada satu yang jelas: data yang dikirimkan akurat. Tidak ada kebohongan di dalamnya. Ya kalaupun ada, itu itikad buruk. Siapapun juga bisa memalsukan slip gaji agar lolos KPR.

Tapi kalau pun mengirimkan data yang sahih, bukankah masih mungkin datanya condong ke persentil rendah atau persentil tinggi? Memang pasti dapat median? Ya bisa saja. Lebih lanjut lagi, bisa saja gaji developer bimodal. Sebagaimana gaji lawyer di Amerika Serikat, bimodal.

Membingungkan? Oh iya jelas, namanya juga curhatan tidak terstruktur. Singkatnya, tolonglah ada semacam platform seperti levels.fyi di Indonesia. Masa iya yang punya data gaji yang akurat hanya petugas pajak, pekerja bank, dan sales kredit? :D

Merakit Komputer untuk Masa Depan

| Comments

Artikel stub.

Agar enggak salah untuk upgrade

Motherboard

Tentukan kebutuhan dasar dari komponen utama:

  • Intel / AMD?
  • Form factor? ATX? ITX?

Tentukan kebutuhan tersier dari komponen utama:

  • Butuh yang bisa Wifi? Kalau hanya kabel, kenapa harus Wifi?

Tentukan kebutuhan ekspansi dari komponen yang ada:

  • Jumlah slot RAM?
  • Akankah Crossfire?
  • Jumlah slot M.2?

Prosesor

Di awal bisa beli yang cupu. Cari prosesor murah. Misal di awal beli i3. Tapi pastikan motherboard support sampai i9, jadi di masa depan bisa upgrade

RAM

Di awal beli kapasitas maksimal. Soalnya cari RAM susah di masa depan. Apalagi dengan clock dan timing yang sama.

Storage

Bisa mulai dari manapun. Misal HDD dulu, terus mau RAID, terus beli nvme

RAID untuk Kebutuhan Pribadi

| Comments

RAID

Saya sudah lama menggunakan RAID 1 untuk komputer pribadi saya. Sudah sejak 2017. Empat tahun lebih. Sejauh ini saya luar biasa puas dengan hasilnya. Mengapa saya memilih RAID 1 yang notabene harganya menjadi dua kali lipat?

Hal ini karena komputer merupakan aset yang sangat berharga bagi saya. Melakukan riset dan eksperimen pribadi, bermain, hingga hiburan saya lakukan semuanya di komputer Saya. Jika hard disk rusak, saya tidak bisa menggunakan komputer Saya. Pernah beberapa kali hard disknya rusak. Saya haru melakukan pemasangan ulang Windows dan melakukan pemasangan ulang semua perangkat lunak yang saya butuhkan. Seluruh proses penyelamatan memakan waktu 2 hari lebih! Seluruh akhir pekan saya didgunakan hanya untuk penyelamatan dan pemasangan. Tidak efisien.

Hard Disk saya rusak karena banyak hal. Biasanya karena masalah kelistrikan dan umur. Namun saya mencurigai kerusakannya di kelistrikan. Biasanya, Windows tidak mau boot setelah listrik padam secara tiba-tiba dan komputer sedang dinyalakan. Solusi termudahnya adalah beli UPS, tetapi UPS hanya menyelesaikan masalah hard disk yang rusak karena listrik padam tiba-tiba. Tidak menyelesaikan masalah karena umur atau hal lainnya. RAID Mirroring menyelesaikan masalah “masa iya kedua hard disk rusak berbarengan untuk sektor yang sama.”

Saya menggunakan RST atau Intel Rapid Storage — fungsi RAID bawaan dari perangkat keras yang saya miliki. Pertimbangannya saya menggunakan perangkat keras RAID adalah sebagai berikut:

  • Dukungan driver native dari untuk Windows Vista ke atas
  • Tidak perlu konfigurasi apapun di perangkat lunak dan OS
  • Instalasi yang mudah, hanya perlu konfigurasi di BIOS

Adapun salah satu hal yang kurang menyenangkan dalam penggunaan RAID ini adalah kewajiban untuk menjalan RAID verification saat listrik padam tiba-tiba. Pada hard disk dengan kapasitas 3 TB yang saya miliki, proses verifikasi membutuhkan waktu hingga delapan jam lebih! Meski bisa kita lewati, proses verifikasi sudah terjadi saat driver dimuat. Artinya, proses verifikasi sudah dimulai sejak Windows Boot. Jadi, ketika listrik padam, penghidupan komputer selanjutnya akan memperlambat proses boot. Hal ini karena boot, startup, dan verifikasi RAID terjadi bersamaan. Kita baru bisa mengabaikan proses verifikasi ketika menjalankan UI Intel Rapid Storage — yaitu saat sudah login.

Kekurangan lainnya adalah tidak bisa menambah array dengan mudah. Um, ini bukan hanya masalah RAID, sih. Ini masalah yang akan dihadapi kalau kita memiliki lebih dari satu disk. Tanpa RAID pun, menambah disk berarti sudah menambah mount point.

RAID

Tentu saja untuk build selanjutnya saya akan menggunakan RAID 1 lagi. Mungkin juga saya akan pertimbangkan RAID 10. Yang pasti mirroring ini membantu kehidupan saya sekali. Tidak perlu takut bad sector dan hard disk mati tiba-tiba.

Saya tidak mempertimbangkan RAID 5 atau RAID 6 karena terlalu boros untuk pengguna rumahan seperti Saya. Dua disk saja sudah terlalu banyak, apalagi 3 disk atau malah 4 disk. Memang RAID 5 dan RAID 6 menawarkan kecepatan yang lebih tinggi. Akan tetapi, saya akan memilih M.2 SSD jika alasannya adalah kecepatan. Untuk availability yang tinggi seperti RAID 1, kita bisa menggunakan skenario sebagai berikut:

  • SSD digunakan untuk sistem
  • Setup RAID 1 untuk 2 disk
  • Backup full SSD ke disk di RAID 1
  • Andai SSD rusak tiba-tiba, tinggal restore image dari disk di RAID 1 ke SSD.

Bagaimana dengan NAS?

Sepertinya NAS adalah hal yang berbeda — terlepas dukungan RAID yang ditawarkan oleh NAS. NAS tidak bisa digunakan untuk menyimpan berkas sistem. Meski ada yang menawarkan Network Boot dari NAS, itu tidak memenuhi kebutuhan rumahan seperti saya. Latency network boot terlalu tinggi. Lagipula, NAS memindahkan risiko fisik dari komputer saya ke luar — yang mana saya juga tidak butuh. Terlalu banyak fitur-fiturnya yang mubazir.

Masuk dengan MFA pada antarmuka AWS CLI

| Comments

MFA (multi-factor authentication) menawarkan mekanisme login yang lebih aman. Pada AWS, kita bisa memaksa setiap pengguna agar menghidupkan MFA. Setiap kali kita login, kita akan ditanya token untuk MFA. MFA yang cukup lazim adalah menggunakan TOTP seperti Google Authenticator atau Authy.

Pada kasus kali ini, saya mengasumsikan setiap akun IAM memiliki akses yang terbatas (hanya read). Jika akun pengguna tersebut mau melakukan akses tulis, mereka harus melakukan Switch Role.

Berikut adalah script yang bisa digunakan untuk switch role melalui MFA

# Ganti ini ke ARN perangkat Anda
export DEVICE_ARN="arn:aws:iam::054121719833:mfa/mufid"

read -p "Enter token from MFA(from $DEVICE_ARN): " TOKEN
RESULT=$(aws sts get-session-token --serial-number $DEVICE_ARN --token-code $TOKEN)
export AWS_SECRET_ACCESS_KEY=$(echo "$RESULT" | yq -r '.Credentials.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo "$RESULT" | yq -r '.Credentials.SessionToken')
export AWS_ACCESS_KEY_ID=$(echo "$RESULT" | yq -r '.Credentials.AccessKeyId')

echo "SecretAccessKey = $AWS_SECRET_ACCESS_KEY"
echo "SessionToken = $AWS_SESSION_TOKEN"
echo "AccessKeyId = $AWS_ACCESS_KEY_ID"

aws configure set profile.mfa.aws_secret_access_key "$AWS_SECRET_ACCESS_KEY"
aws configure set profile.mfa.aws_access_key_id "$AWS_ACCESS_KEY_ID"
aws configure set profile.mfa.aws_session_token "$AWS_SESSION_TOKEN"

echo "Selesai! Lakukan perintah ini untuk mengakses role baru"
echo
echo "         export AWS_PROFILE=secureadmin"
echo

Melakukan Analisis Log Nginx dengan GoAccess

| Comments

Dokumen ini valid saat waktu penulisan. Saya menggunakan Ubuntu 18.04 dengan GoAccess versi 1.3.

Lakukan instalasi GoAccess: [sumber]

echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install goaccess

Buka hasilnya [sumber]

cd /var/log/nginx
zcat -f access.log* | goaccess --log-format=COMBINED

Voila, selesai!

Rails Static Router

| Comments

One year ago, I need to serve single page on asset folder in my Rails application. However, I can’t use Nginx to directly serve the file since preprocessing is required by Rack middleware. Also, all of the assets is served via CDN and I can’t simply redirect the path into CDN, as JEB path my change dependencing on CDN configuration. Then I found following StackOverflow question:

Mendapatkan Surel (Email) Phising

| Comments

Ini pertama kalinya saya mendapatkan surel Phising. Surel Phising ini sendiri adalah sebuah surel yang mirip seolah-olah seperti surel asli dengan tujuan mencuri data pengguna. Kalau di SMS, ini mirip seperti “SELAMAT! NOMOR ANDA MENDAPAT HADIAH.” Padahal hadiahnya tidak ada.

Phising 1 Phising 2 Phising 3