Bagaimana cara menginstall docker swarm?

Docker swarm default sudah dimasukkan kedalam versi 1.12, kebar baiknya adalah untuk konfigurasinya sangat mudah. Anda tidak perlu bersusah payah melakukan konfigurasi seperti di versi sebelum versi 1.12.

Kali ini saya akan mendemontrasikan betapa mudahnya melakukan setup docker swarm di versi 1.12, pada saat menulis ini saya menggunakan Ubuntu Xenial (16.04 LTS) dan menggunakan repository dari docker. dalam lab ini saya menggunakan lima server dengan dua sebagai manager dan tiga sebagai worker. Dalam penamaan node, sayamenggunakan nama manager-X dan worker-Y untuk menunjukkan fungsi dari node itu sendiri.

Untuk pengaturan IP, pada manager akan dibari IP 192.168.0.11 sampai dengan 192.168.0.99, dan worker akan mempunyai ip mulai dari 192.168.0.101 sampai dengan 192.168.0.254.

Sebelum melakukan konfigurasi docker swarm, silakan install docker dulu pada tulisan saya sebelumnya

Memastikan versi docker

Silakan pastikan bahwa docker anda mempunyai versi 1.12 atau lebih tinggi.

$ docker version
Docker version 1.12.1, build 23cf638

Dari hasil diatas menunjukkan bahwa docker saya adalah versi 1.12.1 sehingga pemasangan akan mudah.

atau jika anda belum memasang docker baik itu di manager maupun di worker, anda dapat menggunakan docker-machine untuk melakukan pemasangan docker-engine. Sebelumnya pastikan bahwa anda dapat login dengan seh key sehingga anda dapat melakukan login dengan passwordless

Untuk melakukan setup sshkey silakan ketik:

$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa.
Your public key has been saved in /home/ubuntu/.ssh/id_ecdsa.pub.
The key fingerprint is:
20:96:c8:f6:5a:5c:cc:cd:8c:33:45:97:de:a3:55:61 [email protected]
The key's randomart image is:
+--[ECDSA  256]---+
|       .o ..  E. |
| . . + * ..  ..  |
|  + + O +. . .   |
| . + o +  . +    |
|    +   S  o .   |
|   o      .      |
|  .              |
|                 |
|                 |
+-----------------+

Selanjutnya silakan copy ssh key ke mesin manager dan worker dengan perintah berikut:

$ ssh-key-id 192.168.0.11

Anda akan dimintai password untuk login. silakan masukkan password dari user anda

Selanjutnya adalah melakukan pemasangan dengan docker-machine:

$ docker-machine create --driver generic --generic-ip-address=$IP-ADDPRESS \
 --generic-ssh-key ~/.ssh/$KEY --generic-ssh-user $USER manager-1

Contoh bila ingin menginstall manager-1 dengan user ubuntu dan ssh ecdsa contohnya adalah sebagai berikut:

$ docker-machine create --driver generic --generic-ip-address=192.168.0.11 \
 --generic-ssh-key ~/.ssh/id_ecdsa --generic-ssh-user ubuntu manager-1

Silakan ulangi pada manager-2 dan worker1 sampai worker-3, kemudian verifikasi dengan perintah berikut:

$ docker-machine ls
NAME		ACTIVE	DRIVER    	STATE     URL						SWARM	DOCKER    ERRORS
worker-1	-		generic		Running   tcp://192.168.0.101:2376			v1.12.1   
worker-2	-		generic		Running   tcp://192.168.0.102:2376			v1.12.1   
worker-3	-		generic		Running   tcp://192.168.0.103:2376			v1.12.1   
manager-2	-		generic		Running   tcp://192.168.0.12:2376			v1.12.1   
manager-1   *		generic		Running   tcp://192.168.0.11:2376			v1.12.1   

Memulai setup docker swarm

Untuk memulainya, silakan login di node yang bertugas sebiagai manager, dan ketikkan perintah dibawah ini:

$ docker swarm init --advertise-addr 192.168.0.11

Hasilnya:

Swarm initialized: current node (erk63hyz95hy7s1giwd0mjjmp) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-d9a8l921hjyql4mub3oh1117g \
    192.168.0.11:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

hanya itu? ya hanya itu, perintah diatas untuk membuat inisial dari docker swarm di manager.

Verifikasi dengan perintah docker info

$ docker info
Containers: 73
 Running: 0
 Paused: 0
 Stopped: 73
Images: 103
Server Version: 1.12.1
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 592
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null bridge overlay host
Swarm: active
 NodeID: erk63hyz95hy7s1giwd0mjjmp
 Is Manager: true
 ClusterID: 30ty62s2py73okcei9kmr95o5
 Managers: 1
 Nodes: 1

$ docker node ls
ID                           HOSTNAME            STATUS  AVAILABILITY  MANAGER STATUS
erk63hyz95hy7s1giwd0mjjmp *  manager-1			 Ready   Active        Leader

terlihat bahwa docker swarm sudah aktif meskipun hanya satu node yang aktif

Konfigurasi client

Silakan login ke manager-1 untuk mendapatkan toket manager:

$ docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-0ou18lotoo36mjq0e4s0apuo5 \
    192.168.0.11:2377

Silakan login ke manager-2 dan ketikkan perintah diatas:

$ docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-0ou18lotoo36mjq0e4s0apuo5 \
    192.168.0.11:2377
This node joined a swarm as a manager.

Langkah selanjutnya adalah login ke worker-1 sampai dengan worker-3 dan ketikkan perintah yang didapat saat melakukan inisialisasi docker swarm

$ docker swarm join \
    --token SWMTKN-1-6b7ymr9y759fbtfggbh3dp2wst0vrezo2sw3dv6iz79otkdsc6-d9a8l921hjyql4mub3oh1117g \
    192.168.0.11:2377

Verifikasi swarm

Setelah melakukan testing dari semua manager dan node, silakan verifikasi dari manager dengan perintah berikut:

$ eval $(docker-machine env --swarm manager-1)
$ docker info
Containers: 6
 Running: 2
 Paused: 0
 Stopped: 4
Images: 31
Server Version: swarm/1.2.4
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 5
 manager-2: 192.168.10.12:2376
  └ ID: 3KQB:C4DQ:AV46:NX7O:XN6Y:EP24:3XLH:UO4D:5N2R:SDAX:AJR6:CI3T
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:24Z
  └ ServerVersion: 1.12.1
 worker-1: 192.168.10.111:2376
  └ ID: VO22:NU4C:ODDV:R2TL:HVV2:2E4I:MKAW:SBRO:WWFD:T265:HPNY:JKZI
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:37Z
  └ ServerVersion: 1.12.1
 worker-2: 192.168.10.112:2376
  └ ID: AFYB:C2IM:Z276:RWMN:CODJ:SHKM:IFX6:POWT:VZKO:BHVS:UBAQ:QVJC
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:25Z
  └ ServerVersion: 1.12.1
 worker-3: 192.168.10.113:2376
  └ ID: PGC3:TJJR:GCRG:5RKA:Q4N3:LWHF:3TAO:FDD2:TY6F:DOUK:27WS:76MQ
  └ Status: Healthy
  └ Containers: 1 (0 Running, 0 Paused, 1 Stopped)
  └ Reserved CPUs: 0 / 4
  └ Reserved Memory: 0 B / 8.185 GiB
  └ Labels: kernelversion=4.4.0-31-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T20:18:37Z
  └ ServerVersion: 1.12.1
 manager-1: 192.168.10.11:2376
  └ ID: HEN3:HWX4:2XTZ:EL5B:YUK3:JUH2:YZ2N:XD77:OTPW:ZONP:UYVP:MYDG
  └ Status: Healthy
  └ Containers: 2 (2 Running, 0 Paused, 0 Stopped)
  └ Reserved CPUs: 0 / 8
  └ Reserved Memory: 0 B / 8.087 GiB
  └ Labels: kernelversion=4.4.0-21-generic, operatingsystem=Ubuntu 16.04.1 LTS, provider=generic, storagedriver=aufs
  └ UpdatedAt: 2016-08-18T21:26:45Z
  └ ServerVersion: 1.12.1
Plugins:
 Volume: 
 Network: 
Swarm: 
 NodeID: 
 Is Manager: false
 Node Address: 
Security Options:
Kernel Version: 4.4.0-21-generic
Operating System: linux
Architecture: amd64
CPUs: 24
Total Memory: 40.83 GiB
Name: 6f894401a6f4
Docker Root Dir: 
Debug Mode (client): false
Debug Mode (server): false
WARNING: No kernel memory limit support

Selamat docker-swarm telah terpasang!

Deploy service di swarm

Setelah membuat cluster swarm, kita akan mencoba membuat service di swarm. kita akan membuat nginx di cluster. Silakan login di manager-1

$ docker service create --replicas 3 --name nginx nginx

Berikut adalah hasil dari docker services diatas:

$ docker service ls
ID            NAME   REPLICAS  IMAGE  COMMAND
cp2er0hu010r  nginx  3/3       nginx  

$ docker service inspect nginx 
[
    {
        "ID": "cp2er0hu010rl0qbv0714t8pw",
        "Version": {
            "Index": 21053
        },
        "CreatedAt": "2016-08-18T22:28:01.748449495Z",
        "UpdatedAt": "2016-08-18T22:28:01.748449495Z",
        "Spec": {
            "Name": "nginx",
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "nginx"
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "MaxAttempts": 0
                },
                "Placement": {}
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 3
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "FailureAction": "pause"
            },
            "EndpointSpec": {
                "Mode": "vip"
            }
        },
        "Endpoint": {
            "Spec": {}
        },
        "UpdateStatus": {
            "StartedAt": "0001-01-01T00:00:00Z",
            "CompletedAt": "0001-01-01T00:00:00Z"
        }
    }
]

$ docker service ps nginx
ID                         NAME     IMAGE  NODE			DESIRED STATE  CURRENT STATE          ERROR
8ihthj14i9qitl792vatmrqjj  nginx.1  nginx  worker-1		Running        Running 2 minutes ago  
48eq2nah2txv7yxthk5y3158m  nginx.2  nginx  worker-2		Running        Running 2 minutes ago  
8yv7z3bk25h7jf06yf6y9hivm  nginx.3  nginx  manager-1	Running        Running 3 minutes ago  

Nah mudah bukan? silakan dicoba


Bagaimana memasang docker engine di Linux?

Docker pada saat ini sedang naik daun dikarenakan docker sangat mudah dalam pengoperasiannya. Dalam tulisan ini akan dibahas bagaimana cara memasang Docker di Linux.

Persiapan:

  • Linux box, anda bebas menggunakan distro apa saja
  • Distro yang anda gunakan mensupport cgrups dan unionfs

Install perangkat lunak pendukung

Beberapa perangkat lunak yang perlu dipasang saat pemasangan adalah curl atau wget. untuk pemasangan, sialakan mengikuti prosedur pemasangan dari distro anda.

Contoh apabila menggunakan Debian base:

sudo apt-get update
sudo apt-get install -y curl wget

Contoh apabila menggunakan RedHat basei:

sudo yum install -y curl wget

Langkah selanjutnya adalah memasang docker, petunjuk lengkap dari pemasangan docker dapat dilihat di Dokumentasi Docker hanya saja saya jarang mengikuti prosedur tersebut karena bertele-tele :).

Untuk pemasangan docker, anda cukup mengetikkan perintah dibawah ini:

curl -sSL https://get.docker.com/ | sh

atau jika menggunakan wget

wget -qO- https://get.docker.com/ | sh

Pengaturan tambahan

Berikut adapah pengaturan tambahan untuk docker

Menambahkan account ke grup docker

Secara bawaanya, docker hanya bisa dieksekusi oleh root atau menggunakan sudo, untuk mengakalinya anda harus memasukkan account anda ke grup docker. Untuk menambahkan account anda ke grup docker silakan mengeksekusi perintah dibawah ini:

sudo groupadd docker
sudo usermod -aG docker $(whoami)

Kemudian silakan logout dan login kembali, untuk memastikan account anda silakan cek dengan perintah dibawah ini:

id $(whoami)

Penyesuaian pembatasan memory dan swap

Seringkali dalam menjalankan docker, akan menghasilkan pesan seperti dibawah ini:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your
kernel does not support swap limit capabilities. Limitation discarded.

Untuk mengatasi masalah tersebut, silakan sunting berkas /etc/default/grub dan update seperti dibawah ini

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

Bagaimana memasang docker-compose? (tambahan)

Docker compose adalah salah satu peralatan dari Docker yang saya suka. Berikut adalah cara measangan dari docker-compose

mkdir $HOME/bin
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-$(uname -s)-$(uname -m) > $HOME/bin/docker-compose
chmod +x $HOME/bin/docker-compose

Alternatif lain

Python pip

Docker-compose dapat dipasang menggunakan python-pip, berikut adalah caranya

sudo apt-get install python-pip
pip install docker-compose

Sebagai Docker container

Docker-compose juga dapat dijalankan sebagai container. Untuk pemasangan compose, silakan ketik

mkdir $HOME/bin
curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > $HOME/bin/docker-compose
chmod +x $HOME/bin/docker-compose

Verifikasi

Berikut adalah cara verifikasi untuk meastikan versi Docker-compose

docker-compose -v
docker-compose version 1.7.1, build 6c29830

Bagaimana memasang docker-machine? (tambahan)

Seperti docker-compose, docker machine juga peralatan pendukung untuk docker. Docker machine sangat berguna bagi anda yang ingin melakukan memanajemen docker host dari tempat lain secara remote.

berikut adalah cara pemasangannya:

mkdir $HOME/bin
curl -L https://github.com/docker/machine/releases/download/v0.7.0/docker-machine-`uname -s`-`uname -m` > $HOME/bin/docker-machine
chmod +x $HOME/bin/docker-machine

it is done, next post saya akan menulis tentang memulai menggunakan docker


How to delete git branch local and remote?

To delete local branch:

git branch -d branch_name

To delete remote branch:

git push origin --delete branch_name

Note: origin is a remote name, please use remote name with yours

Then, in the other machine, you can sync it with remote with:

git fetch --all --prune

Bagaimana cara membuang branch di remote dan local?

Untuk membuang local branch:

git branch -d branch_name

Untuk membuang remote branch:

git push origin --delete branch_name

Kemudian, di mesin lain anda dapat melakukan sync dengan remote:

git fetch --all --prune

This is a post to remember myself when panic


Install RVM di Ubuntu

Dalam keseharian, terkadang ada aplikasi yang memerlukan ruby versi tertentu. Sebagai contoh ketika kemarin saya melakukan migrasi dari wordpress ke jekyll saya memerlukan ruby minimal versi 2.0 untuk memasang jekyll. Server saya menggunakan Ubuntu 14.04 LTS, secara default Ubuntu 14.04 menggunakan ruby versi 1.9.1 sehingga saya tidak bisa menggunakan jekyll versi terakhir.

Solusi dari permasalahan ini adalah menggunakan RVM, RVM merupakan singkatan dari Ruby Version Manager yang bertugas untuk mengatur versi ruby di sebuah system, sehingga antar versi tidak salah tercampur. Hal ini mirip dengan python virtual environment.

Berikut adalah langkah-langkah cara pemasangan RVM di Ubuntu.

Persiapan

Pengaturan repository

Sebelum melakukan pemasangan, moghon pastikan jika ubuntu anda memiliki menggunakan repository yang benar. Pengaturan repository di Ubuntu dapat di cek di /etc/apt/sources.list, berikut adalah isi dari berkas /etc/apt/sources.list di system saya:

deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Upgrade paket ke versi terakhir

Sebelum melakukan pemasangan, alangkah baiknya bila kita melakukan update database paket dan upgrade paket ke versi terakhir, untuk itu silakan ketik perintah dibawah ini:

:~$ sudo apt-get update
:~$ sudo apt-get dist-upgrade -y

Install curl

Paket curl ini dibutuhkan nantinya untuk pemasangan RVM

:~$ sudo apt-get install curl -y

Pemasangan RVM

Setelah melakukan persiapan dasar, langkah selanjutnya adalah pemasangan RVM, pada pemasangan ini kita perlu mengimport kunci GPG dari developer RVM.

:~$ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

Output:

gpg: directory `/home/mahyuddin/.gnupg' created
gpg: new configuration file `/home/mahyuddin/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/mahyuddin/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/mahyuddin/.gnupg/secring.gpg' created
gpg: keyring `/home/mahyuddin/.gnupg/pubring.gpg' created
gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
gpg: /home/mahyuddin/.gnupg/trustdb.gpg: trustdb created
gpg: key D39DC0E3: public key "Michal Papis (RVM signing) <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Install RVM

Langkah selanjutnya adalah memasang RVM

:~$ curl -sSL https://get.rvm.io | bash -s stable

Output:

Downloading https://github.com/rvm/rvm/archive/1.27.0.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.27.0/1.27.0.tar.gz.asc
gpg: Signature made Tue 29 Mar 2016 01:49:47 PM UTC using RSA key ID BF04FF17
gpg: Good signature from "Michal Papis (RVM signing) <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 409B 6B17 96C2 7546 2A17  0311 3804 BB82 D39D C0E3
     Subkey fingerprint: 62C9 E5F4 DA30 0D94 AC36  166B E206 C29F BF04 FF17
GPG verified '/home/mahyuddin/.rvm/archives/rvm-1.27.0.tgz'

Installing RVM to /home/mahyuddin/.rvm/
    Adding rvm PATH line to /home/mahyuddin/.profile /home/mahyuddin/.mkshrc /home/mahyuddin/.bashrc /home/mahyuddin/.zshrc.
    Adding rvm loading line to /home/mahyuddin/.profile /home/mahyuddin/.bash_profile /home/mahyuddin/.zlogin.
Installation of RVM in /home/mahyuddin/.rvm/ is almost complete:

  * To start using RVM you need to run `source /home/mahyuddin/.rvm/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

# mahyuddin,
#
#   Thank you for using RVM!
#   We sincerely hope that RVM helps to make your life easier and more enjoyable!!!
#
# ~Wayne, Michal & team.

In case of problems: https://rvm.io/help and https://twitter.com/rvm_io

Setup environment

Untuk melanjutkan setup RVM, kita perlu membuat RVM kedalam environment bash. Pada beberapa case tertentu, kita harus memuat RVM pada sesi shell sebagai function. Untuk itu pastikan bahwasanya pada berkas ~/.bashrc mengandung dua baris berikut:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Setelah itu, load berkas ~/.bashrc kedalam sesi sekarang dengan perintah sebegai berikut:

:~$ source ~/.bashrc

Install paket dependency ruby

Untuk memasang RVM, beberapa dependency juga perlu dipasang. Untuk pemasangan nya silakan lakukan perintah dibawah ini:

:~$ rvm requirements

Output:

Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating system.......
Installing required packages: patch, gawk, g++, gcc, make, libc6-dev, patch, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgmp-dev, libgdbm-dev, libncurses5-dev, automake, libtool, bison, pkg-config, libffi-dev................................
Requirements installation successful.
:~$

Memilih versi ruby

Untuk melakukan cek versi berapa saja versi ruby yang tersedia, kita dapat melakukan cek dengan perintah dibawah ini

:~$ rvm list known

Output:

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.8]
[ruby-]2.2[.4]
[ruby-]2.3[.0]
[ruby-]2.2-head
ruby-head

Pada kali ini kita akan meenggunakan ruby versi 2.3, jika anda menginkan versi lain, pastikan bahwa versi nya ada dalam daftar.

:~$ rvm install 2.3

Output:

Searching for binary rubies, this might take some time.
Found remote file https://rubies.travis-ci.org/ubuntu/14.04/x86_64/ruby-2.3.0.tar.bz2
Checking requirements for ubuntu.
Requirements installation successful.
ruby-2.3.0 - #configure
ruby-2.3.0 - #download
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 25.1M  100 25.1M    0     0  1373k      0  0:00:18  0:00:18 --:--:-- 3681k
No checksum for downloaded archive, recording checksum in user configuration.
ruby-2.3.0 - #validate archive
ruby-2.3.0 - #extract
ruby-2.3.0 - #validate binary
ruby-2.3.0 - #setup
ruby-2.3.0 - #gemset created [email protected]
ruby-2.3.0 - #importing gemset /home/mahyuddin/.rvm/gemsets/global.gems....................................
ruby-2.3.0 - #generating global wrappers........
ruby-2.3.0 - #gemset created /home/mahyuddin/.rvm/gems/ruby-2.3.0
ruby-2.3.0 - #importing gemsetfile /home/mahyuddin/.rvm/gemsets/default.gems evaluated to empty gem list
ruby-2.3.0 - #generating default wrappers........

Langkah selanjutnya adalah memastikan ruby versi 2.3 digunakan sebagai versi ruby default untuk user. Untuk melakukannya, apat mengeksekusi perintah dibawah ini:

:~$ rvm use 2.3 --default
[email protected]:~$ rvm use 2.3 --default
Using /home/mahyuddin/.rvm/gems/ruby-2.3.0

Cek versi ruby

Untuk melakukan pengecekkan versi ruby yang sedang digunakan oleh sesi user sekarang, silakan ketik perintah dibawah ini dan pastikan bahwasanya output dari kedua peintah mengandung versi 2.3

:~$ which ruby
:~$ ruby --version

Output

:~$ which ruby
/home/mahyuddin/.rvm/rubies/ruby-2.3.0/bin/ruby
:~$ ruby --version
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

Hasil dari output diatas menunjukkan bahwa ruby yang digunakan sekarang adalah versi ruby 2.3

Manajemen ruby menggunakan RVM

Cek versi ruby yang terinstall

Untuk melakukan cek versi berapa saja ruby yang sudah dipasang, silakabn ketk perintah dibawah ini:

:~$ rvm list

Output

rvm rubies

   ruby-2.0.0-p648 [ x86_64 ]
   ruby-2.1.8 [ x86_64 ]
   ruby-2.2.4 [ x86_64 ]
=* ruby-2.3.0 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Switch ke versi ruby lain

Jika versi lain sudah terinstall, silakan gunakan perintah rvm use, contoh:

:~$ rvm use 2.2
Using /home/mahyuddin/.rvm/gems/ruby-2.2.4

:~$ which ruby
/home/mahyuddin/.rvm/rubies/ruby-2.2.4/bin/ruby

:~$ ruby --version
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]

Bash completion

Salah satu fitur dari RVM adalah adanya fitur tab completion untuk mengaktifkan tab completion, pastikan dalam berkas ~/.bashrc anda terdapat baris berikut:

[[ -r $HOME/.rvm/scripts/completion ]] && . $HOME/.rvm/scripts/completion

Silakan dicoba


Migrasi ke Jekyll

Sudah lama saya menggunakan wordpress, dan saat ini saya memutuskan untuk menggunakan jekyll. Saya memilih jekyll karena jekyll sangat cepat (karena static) dan support markdown (bahasa yang saya suka). Beberapa pertimbangan lain yang ada adalah hosting situs ini menggunakan shared hosting, jadi sangat rentan apabila menggunakan wordpress, seperti yang kita tahu wordpress adalah salah satu cms favorit untuk dijadikan target serangan. Walau sebenarnya kita bisa melakukan pencegahan, tapi saya hanya ingin pengaturan minimal untuk situs ini. CMIIW

Untuk migrasi ke dari wordpress ke jekyll pun sangat mudah dan tidak membutuhkan proses yang bertele-tele dan panjang, saya menggunakan exitwp untuk melakukan export post dan halaman ke format markdown. Kebetulan saya menggunakan Ubuntu untuk melakukan proses migrasi ini jadi tinggal mengikuti prosedur yang ada.


Fork
    me on GitHub