# Farid | Vagrant Tutorial Windows 10
## Install Vagrant
Tools yang dibutuhkan:
- VirtualBox
- Vagrant
- Terminal
1. Download Vagrant untuk windows 32/64bit.
> https://www.vagrantup.com/downloads
2. Install vagrant pilih next semua, kemudian restart.

3. Cek vagrant dengan cmd jika sudah berhasil terinstall.

---
## Setup Vagrant Workspace
Buat folder untuk konfigurasi vagrant yang nantinya digunakan untuk menyimpan vagrantfile.
```
D:\> mkdir vagrant/ubuntu-xenial (bisa di sesuaikan)
D:\> cd ubuntu-xenial
```
Buat vagrantfile dengan perintah.
```
D:\vagrant\ubuntu-xenial> vagrant init
```

---
## Konfigurasi Vagrantfile
Buka vagrantfile dengan text editor, lalu tambahkan konfig berikut:
- Untuk membuat vm dengan os ubuntu/xenial yang di dapat dari [Vagrant Cloud](https://app.vagrantup.com/ubuntu/boxes/xenial64).
```
Vagrant.configure("2") do |config|
#untuk memasang vm dengan os ubuntu/xenial
config.vm.box = "ubuntu/xenial64"
#untuk mengaktifkan ip public
config.vm.network "public_network"
#untuk custom memory dan cpu
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
end
end
```
Untuk menjalankan vagrant, gunakan perintah:
```
vagrant up
```

Untuk mengakses vm vagrant gunakan perintah:
```
vagrant ssh
```
note: pastikan ketika mau mengakses masuk ke dalam folder yang sudah terinstall os, karena terdapat private_key ssh.
Untuk mematikan vm, gunakan perintah:
```
vagrant halt
```
Untuk menghapus vm, gunakan perintah:
```
vagrant destroy
```
---
## Cara Membuat Multi VM
Tambahkan ke dalam vagrantfile, perintah berikut:
```
# This file is to setup Ubuntu VM servers
Vagrant.configure("2") do |config|
vm_box = "ubuntu/xenial64"
config.vm.define "admin" do |admin|
admin.vm.box = vm_box
admin.vm.hostname = 'ubuntu-xenial-admin'
admin.vm.network "private_network", ip: "192.168.56.200"
admin.vm.provider :virtualbox do |vb|
vb.name = "admin-server"
end
end
config.vm.define "db1" do |db1|
db1.vm.box = vm_box
db1.vm.hostname = 'ubuntu-xenial-db1'
db1.vm.network "private_network", ip: "192.168.56.211"
db1.vm.provider :virtualbox do |vb|
vb.name = "db1-server"
end
end
config.vm.define "app1" do |app1|
app1.vm.box = vm_box
app1.vm.hostname = 'ubuntu-xenial-app1'
app1.vm.network "private_network", ip: "192.168.56.221"
app1.vm.provider :virtualbox do |vb|
vb.name = "app1-server"
end
end
end
```
Untuk akses ke server dengan ssh, gunakan perintah:
```
vagrant ssh admin
# gunakan salah satu nama vm: admin, db1, app1
```
**Referensi:** https://zemian.github.io/2018/05/19/create-multiple-vms-using-vagrant/