Binar dalam Metabase

Metabase is the easy, open source way for everyone in your company to ask questions and learn from data.

Di Binar Academy, kami menggunakan metabase sebagai mesin untuk mengolah data dari hasil Academy. Metabase dapat dipasang dalam berbagai cara. Namun ketika saya diminta untuk memasang Metabase di lingkungan produksi, baru sadar bahwa stack yang dibutuhkan adalah java. Dan ini membutuhkan resource mesin yang lumayan. Untuk lingkungan development, sebelumnya kita menggunakan Heroku. Dipilihlah untuk menggunakan teknologi container.

Dari halaman dokumentasi, Metabase mampu dipasang pada layanan ElasticBeanstalk. Mari kita coba. Ya Binar Academy menggunakan layanan AWS untuk semua platform infrastruktur. Untuk pemasangan Metabase di ElasticBeanstalk(selanjutnya disingkat EB) saya mencoba menggunakan EB CLI, namun sepertinya terlalu overkill. Saya kembali menggunakan konfigurasi dari dashboard web.

Beberapa langkah yang saya lakukan dalam konfigurasi Metabase:

Memasang metabase di ElasticBeanStalk.

Saya menggunakan panduan dari sini. Beberapa catatan dalam pemasangan:

  • EC2 yang digunakan EB: t2.micro
  • RDS Postgres: t2.micro

Setelah Metabase selesai dipasang, kita akan mendapatkan publik url berupa domain, sebagai contoh: prod-metabase.xxxxxx.ap-southeast-1.elasticbeanstalk.com.

Setting Up Metabase

Silahkan akses domain yang didapat. Saya merujuk dokumentasi resmi untuk melakukan konfigurasi.

  • Setup Admin Account, beserta credential
  • Setup Email untuk notifikasi, saya menggunakan Google Apps, konfigurasinya hampir sama ketika konfigurasi email Mattermost.
  • Setup database internal Metabase (RDS) dan Database Raw Data, (DB Aplikasi, Google Analytic)
  • Invite Team, dengan memasukkan email team.

Setting Domain dan HTTPS

Domain yang didapat merupakan domain costum dari ElasticBeanstalk. Ingin diarahkan ke metabase.domain.id. Caranya:

  • Login ke Domain Management, pilih DNS
  • Buat sebuah CNAME baru dengan isian
    name: metabase
    value: {{enter-your-subdomain}}.elasticbeanstalk.com.
  • Simpan dan tunggu propagasi domain berjalan

Untuk HTTPS, saya menggunakan SSL dari LetsEncrypt. Untuk pembuatannya, saya generate dari mesin lain yang sudah ada certbotnya.

$ sudo service nginx stop
$ sudo certbot certonly --standalone -d metabase.domain.id
$ sudo service nginx start

Kemudian downlaod dua file ini dari sertifikat ke laptop lokal.

  • fullchain.pem
  • privkey.pem

Unggah dua file tadi ke IAM mengunakan AWS CLI dalam format berikut:
aws iam upload-server-certificate –server-certificate-name [berikan nama ssl ke iam] –certificate-body file://[path to fullchain.pem] –private-key file://[path to privkey.pem]

$ aws iam upload-server-certificate --server-certificate-name [berikan nama ssl ke iam] --certificate-body file://[path to fullchain.pem] --private-key file://[path to privkey.pem]
$ cd /path/to/ssl
$ aws iam upload-server-certificate --server-certificate-name metabase.domain.id --certificate-body file://fullchain.pem --private-key file://privkey.pem

Load ssl ke metabase:

  • Buka Elastic Beanstalk dan pilih aplikasi Metabase.
  • Pilih Enviroment metabase
  • Kemudian pilih bagian Load Balancing. Pilih Add Listener. Kemudian isi jendela pop up seperti berikut:
    Listener Port: 443
    Listener Protocol: HTTPS
    Instance Port: 80
    Instance Protocol: HTTP
    SSL Sertificate: metabase.domain.id (sesuai dengan nama yang ditulis ketika Unggah SSL)
  • Simpan.

Silahkan uji akses costum domain dengan HTTPS. Semoga sukses 😀

Dah itu aja.

Estu~

 

Advertisements

Memasang Mattermost di AWS

Rencana Desain

Bagi yang belum mengenal mattermost, bisa membaca postingan saya sebelumnya.

1 Mesin EC2 free tier (1Core1GB) AWS
OS Ubuntu 16.04
IP Publik Static (Elastic IP)

Stack:

  • Nginx (as proxy)
  • Mattermost-server
  • Postgresql
  • SSL letsencrypt

Security Group outbond:

  • 443, 80 (open)
  • Ping (open)
  • 8065 (port mattermost sementara)

Instalasi saya pecah menjadi beberapa bagian

Persiapan Mesin

  1. Buat mesin, sesuai spesifikasi diatas
  2. Login ssh dan mulai masang-masang

Continue reading “Memasang Mattermost di AWS”

Perpaduan Chef, Knife, AWS CLI, Digital Ocean, dan Google Compute Engine

6-alasan-wanita-tertarik-pada-pria-jago-masak
Idenya, saya ingin memanajemen beberapa provider layanan awan dalam satu tools. Kebetulan kantor menggunakan beberapa, diantaranya aws, digital ocean, gce.

 

Saya terbiasa menggunakan ChefDK dan knife sebagai alat masak. Mari kita pasang-pasang tools pendamping.

  1. ChefDK (Chef, Ruby, Knife)
  2. AWS CLI
     $ pip install awscli
    
  3. Google Cloud SDK
  4. Gem (knife-ec2, knife-digital_ocean, knife-google)
    $ chef gem install knife-ec2 knife-digital_ocean knife-google
    
  5. Atur knife.rb untuk masing-masing provider
    $ vim ~/.chef/knife.rb
    

    Atur kira kira seperti ini

    knife[:aws_credential_file] = File.join(ENV['HOME'], "/.aws/credentials")
    knife[:aws_config_file] = File.join(ENV['HOME'], "/.aws/config")
    knife[:aws_profile] = "default"
    knife[:digital_ocean_access_token]  = "xxxxxxxxxxxxxxxxxx"
    knife[:gce_project] = 'my-project-name'
    knife[:gce_zone]    = 'asia-east1-a'
    
  6. Knife siap digunakan
    $ knife ec2 server list
    $ knife digital_ocean droplet list
    $ knife google server list
    

Dah kira-kira begitu.
Sumber gambar dari sini.

Estu~