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

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

Linux

Instalasi dan Konfigurasi Smokeping 2.8.x di Debian 11

Last Updated on 29 December 2021 By tommy Leave a Comment

Smokeping merupakah senjata utama untuk memonitoring services yang menggunakan PING/ICMP. Tidak semua versi smokeping tersedia di Debian 11, untuk itu kita harus compile dari awal untuk versi terbaru, karena kemungkinan besar versi terbaru tidak akan di ikutkan di Debian 11.

Mari mulai proses instalasi Smokeping 2.8.x di Debian 11 (“bullseye”)

Install Dependency

Install dependency berikut ini agar proses compile berjalan dengan sempurna.

sudo apt install gcc make libwww-perl libcgi-fast-perl libtext-soundex-perl libio-pty-perl libcrypt-ssleay-perl rrdtool librrds-perl libssl-dev -y

tambahannya kita install wget, yang akan digunakan untuk mendownload source Smokeping 2.8.2

sudo apt install wget -y

Install fping

Aplikasi ini yang akan digunakan untuk ping ke semua IP/Domain yang digunakan. Install fping dengan cara

sudo apt install fping -y

Download dan Install Smokeping 2.8.x

Saat ini versi terbaru adalah 2.8.2, cara yang sama bisa dijalankan untuk menginstall semua versi 2.8.x, download versi 2.8.2

wget https://oss.oetiker.ch/smokeping/pub/smokeping-2.8.2.tar.gz
# extract 
tar zxvf smokeping-2.8.2.tar.gz
# pindah ke folder smokeping
cd smokeping-2.8.2

Compile dan install

export LC_ALL=C
./configure --prefix=/usr/local/smokeping
# install
sudo make install

proses compile smokeping 2.8.2
tunggu beberapa waktu sampai instalasi selesai dan tidak ada informasi error diakhir instalasi.

Konfigurasi Smokeping 2.8.x

Buat folder untuk menyimpan cache dan data Smokeping

sudo mkdir /usr/local/smokeping/cache
sudo mkdir /usr/local/smokeping/data
sudo mkdir /usr/local/smokeping/var

Buat file baru /usr/local/smokeping/etc/config, untuk konfigurasi smokeping yang berisi

*** General ***
owner    = Jaranguda
contact  = some@address.nowhere
mailhost = my.mail.host
imgcache = /usr/local/smokeping/cache
imgurl   = cache
datadir  = /usr/local/smokeping/data
piddir  = /usr/local/smokeping/var
cgiurl   = http://some.url/smokeping.cgi
smokemail = /usr/local/smokeping/etc/smokemail.dist
tmail = /usr/local/smokeping/etc/tmail.dist
syslogfacility = smokeping
 
*** Alerts ***
to = alertee@address.somewhere
from = smokealert@company.xy
+someloss
type = loss
pattern = >0%,*12*,>0%,*12*,>0%
comment = loss 3 times  in a row
 
*** Database ***
step     = 300
pings    = 20
AVERAGE  0.5   1  1008
AVERAGE  0.5  12  4320
    MIN  0.5  12  4320
    MAX  0.5  12  4320
AVERAGE  0.5 144   720
    MAX  0.5 144   720
    MIN  0.5 144   720
 
*** Presentation ***
template = /usr/local/smokeping/etc/basepage.html.dist
charset  = utf-8
 
+ charts
 
menu = Charts
title = The most interesting destinations
 
++ stddev
sorter = StdDev(entries=>4)
title = Top Standard Deviation
menu = Std Deviation
format = Standard Deviation %f
 
++ max
sorter = Max(entries=>5)
title = Top Max Roundtrip Time
menu = by Max
format = Max Roundtrip Time %f seconds
 
++ loss
sorter = Loss(entries=>5)
title = Top Packet Loss
menu = Loss
format = Packets Lost %f
 
++ median
sorter = Median(entries=>5)
title = Top Median Roundtrip Time
menu = by Median
format = Median RTT %f seconds
 
+ overview 
 
width = 600
height = 50
range = 10h
 
+ detail
 
width = 600
height = 200
unison_tolerance = 2
 
"Last 3 Hours"    3h
"Last 30 Hours"   30h
"Last 10 Days"    10d
"Last 360 Days"   360d
 
 
*** Probes ***
+ FPing
binary = /usr/bin/fping
 
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Welcome to the SmokePing website of jaranguda.com Company.
 
+ DNS
menu = DNS
title = DNS Server
 
++ OpenDNS
menu = OpenDNS
title = OpenDNS
host = 208.67.222.222
 
++ Google
menu = GoogleDNS
title = GoogleDNS
host = 8.8.4.4
 
++ Cloudflare-DNS
menu = Cloudflare-DNS
title = Cloudflare-DNS
host = 1.1.1.1

test config yang baru dibuat

sudo /usr/local/smokeping/bin/smokeping --debug

smokeping debug mode

Systemd Smokeping

Agar mudah mengaktifkan smokeping sewaktu boot, maupun stop, start. Kita gunakan service systemd, buat file /usr/lib/systemd/system/smokeping.service yang berisi

[Unit]
Description=Smokeping Server
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/smokeping/bin/smokeping --nodaemon /usr/local/smokeping/etc/config --logfile=/var/log/smokeping.log
 
[Install]
WantedBy=multi-user.target

lalu jalankan

# aktifkan sewaktu booting
sudo systemctl enable smokeping
# jalankan
sudo systemctl start smokeping
# cek status
sudo systemctl status smokeping

Web UI Smokeping

Grafik smokeping bisa diakses dari browser, tetapi sebelumnya harus diaktifkan. Web server yang akan kita gunakan adalah Apache, berikut ini caranya
1. Install Apache

sudo apt install apache2 libapache2-mod-fcgid -y

2. Setting VHOST Smokeping
Buat file virtual host untuk konfigurasi Smokeping di Apache pada file /etc/apache2/conf-enabled/smokeping.conf, yang isinya

Alias /smokeping/cache /usr/local/smokeping/cache
Alias /smokeping /usr/local/smokeping/htdocs/
 
 
<Directory "/usr/local/smokeping/cache">
  AllowOverride all
  Require all granted
</Directory>
 
<Directory "/usr/local/smokeping/htdocs/">
 Options FollowSymLinks ExecCGI
 AllowOverride all
 Require all granted
</Directory>

3. Aktifkan CGI dan restart Apache

sudo a2enmod cgi
# restart apache
sudo systemctl restart apache2

4. Set permission
Set permission agar apache bisa mengakses file Smokeping

sudo chown www-data:www-data -R /usr/local/smokeping

5. Akses Web UI Smokeping
Buka link http://IP-SERVER/smokeping/smokeping.fcgi.dist
smokeping di browser

Filed Under: Linux

Cara Testing Fluentd dengan Docker

Last Updated on 4 December 2021 By tommy Leave a Comment

Fluentd banyak digunakan dimana-mana sebagai tukang kirim log dan tukang proses/format log. Untuk testing berbagai versi Fluentd, menggunakan docker akan sangat membantu, karena tidak perlu menginstall berbagai dependency Ruby, dan bisa cepat melakukan testing.

Tergantung kebutuhan anda, kita bisa build docker image yang akan digunakan untuk kebutuhan spesifik, sebagai contoh dalam images docker tersebut diperlukan plugin Elasticsearch, Grafana dan lain sebagainya. Disini saya akan build Fluentd dengan plugin ElasticSearch, Sumologic dan Datadog, karena lagi melakukan testing ketiga service tersebut.

Untuk project ini kita akan buat folder baru ~/fluentd

mkdir ~/fluentd

semua file yang akan dibuat diletakkan didalam folder ini.

Buat file Dockerfile

FROM fluent/fluentd
RUN gem install fluent-plugin-elasticsearch
RUN gem install fluent-plugin-sumologic_output
RUN gem install fluent-plugin-datadog

contoh kita akan build dengan tag fluentd-jaranguda

docker build . -t fluentd-jaranguda

untuk memastikan semuanya sudah berjalan dengan lancar, kita perlu membuat config sederhana fluentd.conf

<source>
  @type forward
</source>
 
<match **>
  @type stdout
</match>

lalu jalankan fluentd

docker run -it -p 24224:24224 -v ~/fluentd/fluentd.conf:/fluentd/etc/fluentd.conf -e FLUENTD_CONF=fluentd.conf fluentd-jaranguda:latest

kita menggunakan port 24224, karena port tersebut adalah port default untuk logging docker.

buka terminal satu lagi, lalu jalankan

docker run --log-driver=fluentd -v ~/fluentd:/tmp -it alpine:latest echo "testing log"

testing fluentd config from docker
di terminal anda mejalankan fluentd, harusnya muncul output kurang lebih

2021-12-04 08:24:38.000000000 +0000 335f2a001f26: {"log":"testing log\r","container_id":"335f2a001f26f26d4d86434cd64eadc5b42784bac7236cab9906138e8b2782ad","container_name":"/dazzling_haslett","source":"stdout"}

untuk mengirim log tersebut ke elasticsearch, tinggal ubah confignya

<source>
  @type forward
</source>
 
<match **>
  @type elasticsearch
  host      172.17.0.1 #ganti dengan IP/Host
  scheme    http
  port      9200 
  index_name docker-log
  include_timestamp true
</match>

lalu jalankan ulang container fluentd

Untuk mengirim ke 2 Log Collector sekaligus, gunakan contoh config ini

<source>
  @type forward
</source>
 
 
<match **>
  @type copy
  <store>
    @type relabel
    @label @sumologic
  </store>
  <store>
    @type relabel
    @label @elasticsearch
  </store>
</match>
 
<label @elasticsearch>
  <match **>
    @type elasticsearch
    host      172.17.0.1
    scheme    http
    port      9200
    index_name ns-data-sumo
    include_timestamp true
  </match>
</label>
 
<label @sumologic>
  <match **>
    @type sumologic
    endpoint https://collectors.sumologic.com/receiver/v1/http/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    log_format json
    source_category docker/testing
    source_name sgp
    open_timeout 10
  </match>
</label>

dengan menggunakan docker ini, proses troubleshooting menjadi jauh lebih mudah karena kita bisa mereplica yang terjadi di server lain. Simpan contoh log dibawah ini di file log.log

{"time": "2021-12-04T14:52:13.136+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match011", "status": "degraded"}
{"time": "2021-12-04T14:52:13.137+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match012", "status": "degraded"}
{"time": "2021-12-04T14:52:13.138+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match013", "status": "degraded"}
{"time": "2021-12-04T14:52:13.139+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match014", "status": "degraded"}
{"time": "2021-12-04T14:52:13.139+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "match015", "status": "degraded"}
{"time": "2021-12-04T14:52:13.139+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "sumo015", "status": "degraded"}
{"time": "2021-12-04T14:52:13.140+0000", "level": "info", "msg": "something goes wrong, server timeout", "server": "sumo015", "status": "degraded"}

lalu kirim ke fluentd

docker run --log-driver=fluentd -v ~/fluentd:/tmp -it alpine:latest cat /tmp/log.log

Filed Under: Linux

Cara Lengkap Install VirtualBox 6.x di Debian 11

Last Updated on 28 November 2021 By tommy Leave a Comment

Disini kita akan membahas cara lengkap menginstall VirtualBox 6.1.x di Debian 11. VirtualBox adalah virtualisasi yang banyak digunakan karena gratis, juga karena support berbagai sistem operasi, seperti Linux, Windows dan MacOS.

Tutorial ini bisa dijalankan di server yang baru di install, ataupun server yang sudah digunakan, yang penting anda memiliki minimal 8 GB Memory, 30 GB HD/SSD dan 64 Bit system, agar menjalankan VirtualBox terasa lancar.

Update System

Pastikan ini langkah pertama yang dijalankan, agar sistem mendapatkan sofware-software terbaru yang tersedia di Debian 11.

sudo apt update && sudo apt upgrade -y

bila ada update Kernel, restart dengan

sudo reboot

ini untuk memastikan kita akan menggunakan kernel versi terbaru, dan semua dependency-nya.

Download GPG Key

Download GPG Key VirtualBox ke Debian 11 anda, agar bisa menginstall langsung dari repositorynya

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

Tambah Repository VirtualBox

Buat file baru /etc/apt/sources.list.d/virtualbox.list yang berisi

deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian bullseye contrib

update metadata apt

sudo apt update

Install VirtualBox 6.1

Install VirtualBox 6.1 dengan apt

sudo apt install virtualbox-6.1 -y

Install Extension Pack

Agar bisa menggunakan USB di guest VirtualBox, diperlukan Extension Pack yang di install terpisah, sesuaikan versinya dengan versi VirtualBox yang di install.

# download ext pack
wget https://download.virtualbox.org/virtualbox/6.1.30/Oracle_VM_VirtualBox_Extension_Pack-6.1.30.vbox-extpack
# install ext pack
sudo vboxmanage extpack install --accept-license=33d7284dc4a0ece381196fda3cfe2ed0e1e8e7ed7f27b9a9ebc4ee22e24bd23c Oracle_VM_VirtualBox_Extension_Pack-6.1.30.vbox-extpack

virtualbox 6.1

Filed Under: Linux

Install dan Konfigurasi TigerVNC Server XFCE di Debian 11

Last Updated on 23 November 2021 By tommy Leave a Comment

Keperluan remote desktop, banyak yang menggunakan XFCE, selain karena ukurannya yang kecil, juga karena hemat memory. Dengan XFCE, 1 GB memory bisa diakses oleh beberapa orang, dengan catatan tidak semua menggunakan browser ;) Karena penggunaan browser ini memakai memory yang besar, jadi sebaiknya menggunakan memory 4 GB. Dengan menggunakan VNC kita menggunakan server kita sebagai komputer remote, karena kita bisa menginstall semua aplikasi dan mengaksesnya dengan tampilan GUI.

Di Linux ada banyak aplikasi VNC Server yang bisa digunakan, yang menjadi default di Debian 11 adalah TigerVNC. VNC terbagi menjadi 2, VNC Server sebagai aplikasi yang menjalankan proses VNC, dan VNC client yang mengakses VNC tersebut (remote desktop).

Update Debian 11

Hal ini sangat disarankan untuk dijalankan, agar sistem anda mendapat update terbaru. Jalankan perintah ini secara berkala

sudo apt update; sudo apt upgrade -y

bila terdapat update kernel, reboot server anda.

sudo reboot

Install XFCE

Bila anda menggunakan debian tanpa Desktop Environment, ataupun menggunakan DE selain XFCE install paket XFCE terlebih dahulu

sudo apt install xfce4 -y

paket yang di install xfce4 hanya core untuk xfce saja, untuk menginstall tambahan seperti terminal dan berbagai plugin xfce install

sudo apt install xfce4-goodies -y

Install VNC Server

Untuk menginstall TigerVNC di jalankan

sudo apt install tigervnc-standalone-server -y

Set Password User VNC

Jangan jalankan VNC sebagai sebagai root, karena banyak hal-hal yang tidak diinginkan bisa terjadi, banyak bot berkeliaran yang. Buat password VNC sebagai user anda, disini saya menggunakan user jaranguda.

vncpasswd

masukkan password anda, jangan lebih dari 15 karakter karena beberapa VNC Client tidak support lebih dari 15 karakter.
set vnc password debian 10

Service Systemd

Agar mempermudah mejalankan service VNC, kita akan membuat service systemd, jadi bisa dijalankan, diberhentikan dengan systemctl. Buat file /etc/systemd/system/[email protected], yang isinya

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
 
[Service]
Type=forking
User=jaranguda
ExecStartPre=-/usr/bin/vncserver -kill :%i
ExecStart=/usr/bin/vncserver -localhost no :%i
ExecStop=/usr/bin/vncserver -kill :%i
 
[Install]
WantedBy=multi-user.target

ganti jaranguda menjadi user anda.

Agar TigerVNC dijalankan setelah booting, aktifkan dengan systemctl

systemctl enable vncserver@1.service

Untuk menjalankan TigerVNC, eksekusi

systemctl start vncserver@1.service

Cek status VNC

systemctl status vncserver@:1.service

Lihat Process TigerVNC

Selain dengan menjalankan systemctl status [email protected] bisa dicek dengan ss -tunlp

$ sudo systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)
     Loaded: loaded (/etc/systemd/system/vncserver@1.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-11-23 13:39:10 WIB; 2min 1s ago
    Process: 3926 ExecStartPre=/usr/bin/vncserver -kill :1 (code=exited, status=1/FAILURE)
    Process: 3929 ExecStart=/usr/bin/vncserver -localhost no :1 (code=exited, status=0/SUCCESS)
   Main PID: 3935 (vncserver)
      Tasks: 31 (limit: 16613)
     Memory: 49.6M
        CPU: 414ms
     CGroup: /system.slice/system-vncserver.slice/vncserver@1.service
             ├─3935 /usr/bin/perl /usr/bin/vncserver -localhost no :1
             ├─3936 /usr/bin/Xtigervnc :1 -rfbport 5901 -localhost=0 -SecurityTypes VncAuth,TLSVnc -PasswordFile /home/jaranguda/.vnc/passwd -ClientWaitTimeMillis 30000 -geometry 1920x1200 -desktop kahowa.`:1 (jaranguda>
             ├─3951 /bin/sh /etc/X11/Xtigervnc-session
             ├─3955 tigervncconfig -iconic
             ├─3956 xfce4-session
             └─4002 /usr/bin/ssh-agent x-session-manager
 
Nov 23 13:39:07 kahowa systemd[1]: Starting Remote desktop service (VNC)...
Nov 23 13:39:07 kahowa vncserver[3926]: vncserver: No matching VNC server running for this user!
Nov 23 13:39:07 kahowa vncserver[3935]: New Xtigervnc server 'kahowa.`:1 (jaranguda)' on port 5901 for display :1.
Nov 23 13:39:07 kahowa vncserver[3935]: Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/jaranguda/.vnc/passwd kahowa.`:1 to connect to the VNC server.
Nov 23 13:39:10 kahowa systemd[1]: Started Remote desktop service (VNC).
 
$ ss -tunlp
Netid State  Recv-Q Send-Q Local Address:Port    Peer Address:Port Process                              
udp   UNCONN 0      0            0.0.0.0:5353         0.0.0.0:*                                         
udp   UNCONN 0      0            0.0.0.0:39595        0.0.0.0:*                                         
udp   UNCONN 0      0               [::]:53868           [::]:*                                         
udp   UNCONN 0      0               [::]:5353            [::]:*                                         
tcp   LISTEN 0      128          0.0.0.0:22           0.0.0.0:*                                         
tcp   LISTEN 0      5            0.0.0.0:5901         0.0.0.0:*     users:(("Xtigervnc",pid=3936,fd=9)) 
tcp   LISTEN 0      128             [::]:22              [::]:*                                         
tcp   LISTEN 0      5               [::]:5901            [::]:*     users:(("Xtigervnc",pid=3936,fd=10))

Login ke VNC Server

Akses VNC server dengan vncviewer dari terminal, ataupun VNC client yang lain.

vncviewer IP-SERVER:5901

masukkan password VNC Server
masukkan password vnc server

tampilan vnc pertama login

Mengamankan VNC Server

Cara untuk mengamankan VNC adalah dengan menggunakan SSH Tunnel, jadi VNC hanya bisa dari server tersebut (private IP), bukan dari public IP. Tanpa pengamanan ini pun VNC anda sudah bisa digunakan, tapi sangat direkomendasikan untuk menjalankan settingan ini.
Buka kembali file /etc/systemd/system/[email protected]:1.service, ubah bagian

ExecStart=/usr/bin/vncserver -localhost no :%i

menjadi

ExecStart=/usr/bin/vncserver -localhost yes :%i

lalu restart service systemd

# karena konfigurasi service systemd dirubah, harus di clear cachenya
sudo systemctl daemon-reload
# restart vnc
sudo systemctl restart vncserver@1.service

pastikan VNC sudah listening ke 127.0.0.1 atau [::1]
vnc listening ke ip local

Sekarang untuk login pertama kali harus bind port 5901 dari server ke localhost:5901 bisa juga menggunakan private IP contoh 192.168.88.1:5901, 5901 bisa diganti dengan port lainnya, misalkan 8080 selama port tersebut belum digunakan dan bisa diakses oleh user.

ssh user@SERVER -L 5901:localhost:5901

untuk mengakses remote desktop, jalankan

vncviewer localhost:5901

Filed Under: Linux

Cara Lengkap Deploy Server Hetzner Cloud dengan Terraform

Last Updated on 4 November 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.

Hetzner menggunakan token per-project, jadi kita bisa membuat project baru dan menggunakan token yang khusus untuk project tersebut, tanpa perlu khawatir akan tercampur dengan project yang lainnya. Token bisa dibuat dari Nama Project -> Security -> API Tokens.
generate api token hetzner
Biasanya saya menggunakan namaaplikasi+environment, contoh cmsabc-prod, cmsabc-dev, cmsabc-stg. Penamaan project ini bebas, sebisa mungkin diberi nama yang mudah dimengerti.

Contoh kasus install 3 server untuk aplikasi, IP server yang telah di install disimpan di file server-ips.txt. Mari kita mulai mengerjakan project ini dengan membuat folder app-project-hetzner

mkdir app-project-hetzner

difolder ini buat 4 file

Nama FileKeterangan
provider.tfkonfigurasi provider apa yang digunakan, disini kita menggunakan hetzner
server.tfkonfigurasi untuk server, seperti nama server, ukuran dan lain-lain
ssh.tfuntuk public SSH key yang akan ditambahkan di server yang baru dibuat
variable.tfkonfigurasi default, seperti sistem operasi, datacenter

Tiap-tiap provider bisa menggunakan format yang berbeda, untuk itu cek manual dari masing-masing provider
Mari kita buat satu persatu filenya

1. File provider.tf

Disini kita akan menambahkan provider yang digunakan dan versi dari config yang digunakan

terraform {
  required_providers {
    hcloud = {
      source  = "hetznercloud/hcloud"
      version = ">=1.32.0"
    }
  }
}
 
provider "hcloud" {
  token = var.hcloud_token
}

untuk hetzner, agar tidak perlu menginput token, kita akan menambahkan tokennya sebagai variable.

2. File server.tf

Disini kita akan menambahkan konfigurasi untuk server, seperti image yang digunakan, begitu juga akan dikasi label apa untuk memudahkan memisahkannya dengan berbagai deployment yang lain.
Terakhir setelah di deploy, kita akan menyimpan IPv4 dari masing-masing server pada file server-ips.txt

resource "hcloud_server" "app" {
  count       = var.instances
  name        = "server-${count.index}"
  image       = var.os_type
  server_type = var.server_type
  location    = var.location
  ssh_keys    = [hcloud_ssh_key.default.id]
  labels = {
    type = "app"
  }
 
  provisioner "local-exec" {
    command = "echo ${self.name} : ${self.ipv4_address} >> server-ips.txt"
  }
}

3. File ssh.tf

File ssh.tf ini berguna sebagai kunci untuk mengakses server, file SSH public key yang di deklarasikan disini akan ditambahkan ke user root server yang baru di-provision (deploy), sehingga kita bisa langsung login dan jauh lebih aman dibandingkan menggunakan password manual.

resource "hcloud_ssh_key" "default" {
  name       = "Jaranguda Public Key"
  public_key = file("~/.ssh/id_rsa.pub")
}

File ~/.ssh/id_rsa.pub adalah letak default bila anda menggenerate key SSH. Bila belum ada bisa digenerate dengan ssh-keygen. Salah satu kelemahan cara ini adalah kita tidak bisa menggunakan SSH key dengan nama yang sama untuk beberapa deployment yang berbeda. Solusinya bisa menggunakan remote-exec

4. File variable.tf

Disini tempat variable-nya disimpan, variable-variable ini yang nanti dipanggil dari file terraform

variable "hcloud_token" {
  default = "XXXXXXXXXXXXXXXXXXXX"
}
 
variable "location" {
  default = "ash"
}
 
variable "instances" {
  default = "3"
}
 
variable "server_type" {
  default = "cpx11"
}
 
variable "os_type" {
  default = "debian-11"
}

hcloud_token isi dengan token yang didapat dari console hetzner. Location tersebut adalah datacenter yang digunakan, pilihan Datacenter Hetzner saat ini

DATACENTER CODEDESCRIPTION
nbg1Nuremberg 1 DC 3
hel1Helsinki 1 DC 2
fsn1Falkenstein 1 DC14
ashAshburn DC1

untuk melihat informasi server type, images (distro os) gunakan hcloud, aplikasi CLI hetzner. Karena di dokumentasinya kurang lengkap, lebih baik menggunakan CLI ini.

Setelah selesai membuat ke empat file tersebut, sekarang kita akan memulai proses provisioning (deploy), pertama jalankan

terraform init

untuk mendownload config untuk provider hetzner, sama seperti yang kita set di file provider.tf.

Terakhir lakukan provisioning

terraform apply

saat diminta untuk menjawab “Enter a value:”, ketik yes lalu ENTER. Cara ini bisa dilewatkan dengan menambahkan parameter -auto-approve.

Setelah menjalankan terraform apply lihat control panel Hetzner
3 server baru ditambahkan

Cara konek ke Server

Setelah proses deployment selesai, cara untuk mengakses server tersebut adalah dengan SSH

ssh root@IP-SERVER

IP server tersebut bisa dilihat di file server-ips.txt ataupun dari console hetzner
ip server hetzner

Bersih Bersih

Kalo udah selesai digunakan/testing, semua server dan konfig yang dibuat oleh terraform bisa dihapus langsung, pada contoh diatas kita bisa langsung menghapus ketiga server dan ssh key yang sudah kita setting, caranya adalah dengan menjalankan

terraform destory

INGAT! sebelum menjalankan ini pastikan anda tidak salah folder ataupun project, karena semuanya akan dihapus tanpa tersisa.

Filed Under: Linux

Membuat Custom Reporter Cypress dengan Mocha

Last Updated on 12 October 2021 By tommy Leave a Comment

Di Cypress kita membuat custom reporter dengan bantuan Mocha. Sebagai contoh sederhana kita akan membuat reporter yang menampilkan Nama Test, Status
Bila test berhasil muncul PASS, dan begitu test gagal muncul FAIL
cypress http status

Saat tutorial ini dibuat versi Cypress 8.6.0 dan Mocha 9.1.2

Install Cypress

mkdir ~/custom-reporter
cd ~/custom-reporter
# buat project baru
npm init
# install cypress
npm install cypress@latest

buat folder untuk tempat membuat test Cypress dan juga reporter baru nantinya

mkdir -p cypress/{integration,reporter}

Buat file baru cypress/integration/check-http.spec.js

let url_satu = "https://example.com"
let url_dua = "https://wikipedia.com"
let url_tiga = "https://kadfjasdfjasdjfsadfdio1.com"
 
describe('Situs 1 ' , () => {
  it('Cek HTTP STATUS 200 : ' + url_satu, () => {
    cy.request(`${url_satu}`).then((response) => {
      expect(response.status).to.eq(200)
    })
 
  })
})
 
describe('Situs 2 ' , () => {
  it('Cek HTTP STATUS 200 : ' + url_dua, () => {
    cy.request(`${url_dua}`).then((response) => {
      expect(response.status).to.eq(200)
    })
 
  })
})
 
describe('Situs 3 ' , () => {
  it('Cek HTTP STATUS 200 : ' + url_tiga, () => {
    cy.request(`${url_tiga}`).then((response) => {
      expect(response.status).to.eq(200)
    })
 
  })
})

testing tersebut sudah bisa langsung dijalankan

$(npm bin)/cypress run

default cypress report

Install Mocha

Dari folder project cypress anda, install mocha

npm install mocha

Buat file cypress/reporter/status-reporter.js, yang berisi

'use strict';
 
const Mocha = require('mocha');
 
const {
  EVENT_TEST_FAIL,
  EVENT_TEST_PASS,
} = Mocha.Runner.constants;
 
class StatusReporter {
  constructor(runner) {
 
    runner
      .on(EVENT_TEST_PASS, test => {
        const data = `${test.fullTitle()}, ${test.duration}, PASS`
        console.log(data);
      })
      .on(EVENT_TEST_FAIL, (test, err) => {
        const data = `${test.fullTitle()}, ${test.duration}, FAILED`
        console.log(data);
      })
  }
 
}
 
module.exports = StatusReporter;

dari contoh code diatas, event yang akan kita ambil adalah sewaktu test berhasil, atau gagal. Setelah itu hasilnya ditampilkan di console, jalankan reporter tersebut

$(npm bin)/cypress run --reporter cypress/reporter/status-reporter.js

Setelah report tersebut selesai dibuat dan ditest, kita ingin menambahkan fitur untuk menulis report tersebut ke file pass.txt dan failed.txt. Untuk dapat mengakses file kita akan menggunakan module fs, yang merupakan bawaan nodejs.

Ubah code diatas menjadi

'use strict';
 
const Mocha = require('mocha');
const fs = require('fs');
const testPass = '/tmp/pass.txt'
const testFailed = '/tmp/failed.txt'
 
const {
  EVENT_TEST_FAIL,
  EVENT_TEST_PASS,
} = Mocha.Runner.constants;
 
class StatusReporter {
  constructor(runner) {
 
    runner
      .on(EVENT_TEST_PASS, test => {
        const data = `${test.fullTitle()}, ${test.duration}, PASS`
        console.log(data);
        fs.appendFileSync(testPass, data);
      })
      .on(EVENT_TEST_FAIL, (test, err) => {
        const data = `${test.fullTitle()}, ${test.duration}, FAILED`
        console.log(data);
        fs.appendFileSync(testFailed, data);
      })
  }
 
}
 
module.exports = StatusReporter;

dari ke 5 baris yang kita tambahkan tersebut, fs.appendFileSync adalah yang bertugas untuk menuliskan hasil test ke file. Cek isi file failed.txt dan pass.txt
file okay

Sampai sekian pembahasan cypress kita, dilain kesempatan akan kita bahas lagi mengenai Cypress.

Filed Under: Linux

  • « Go to Previous Page
  • Go to page 1
  • Go to page 2
  • Go to page 3
  • Go to page 4
  • Go to page 5
  • Interim pages omitted …
  • Go to page 125
  • Go to Next Page »

Primary Sidebar

Pencarian

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

Terbaru

  • Cara Menonaktifkan Pager di macOS
  • Cara Mengupdate Nama Apple silicon-as-a-Service Scaleway
  • Cara Force Delete Namespace di Kubernetes
  • Install PHP MariaDB di Mac Monterey
  • MacOS Minta Install Git

Komentar

  • Ari on Cara Mematikan SSID Molecool Balifiber
  • kiki anarki on Mengambil Data dari Situs BPJS Ketenagakerjaan dengan PHP cURL
  • musgan on Password Router Huawei HG8245H5 Indihome
  • ghabily on Mengambil Informasi Router Alcatel Lucent G-241W-A dengan PHP
  • nea on Mencari urutan angka yang hilang di PHP

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.1m views
  • Password Terbaru ZTE F609 Indihome 784k views
  • Password Superadmin Huawei HG8245A 314.2k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 272.2k views
  • Cara Setting Wireless ZTE F609 Indihome 256.1k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 169.1k views
  • Akses UseeTV Indihome via Wireless ZTE F609 156.5k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 150.3k views
  • Cara Reset Password ZTE F609 Indihome 147.2k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 112.9k 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