jcloude/docs/Introduction/Local Setup Using Vagrant.MD
2025-12-23 20:48:07 +08:00

86 lines
2.3 KiB
Markdown

---
route: local-dev-setup-using-vagrant
allow_guest: 1
published: 1
---
Local infrastructure subsystem is a faster, cheaper and more flexible alternative to running virtual machines on a public cloud for development.
> Note: Local Insfrastructure is available for Linux hosts only. You're free to add Mac OS support by using Virtualbox.
## Prerequisites
#### Dependencies
- Packer - For building virtual machine images.
- Vagrant - Simplified CLI/API for managing virtual hosts.
- vagrant-libvirt - For using KVM/Libvirt. Duh!
- vagrant-hostmanager - For managing hosts file in guests and host machine.
- Libvirt/KVM - Virtualization provider.
### Installation
Dependencies can be installed with
```bash
python3 apps/jcloude/backbone/setup.py
```
> Note: After this logout completely and login again to start with local infrastructure. Start a new shell session. if you're on a Non-GUI server.
### Building Base Images
To spawn virtual machines quickly, we'll create a ubuntu base image (as seen on DigitalOcean or other cloud providers). This image can later be used to spawn blank virtual machines in seconds.
This can be done with (`backbone` CLI is installed with `jcloude` application)
```bash
source env/bin/activate
backbone hypervisor build
```
> Note: When running for the very first time this will download a ~500 MB ubuntu image.
See contents of `jcloude/backbone/packer` directory for more details.
### Spawning Virtual Machines
There's no simple CLI for this at the moment.
1. Create a Vagrant directory
```bash
mkdir scratch
cd scratch
ln -s ../apps/jcloude/backbone/vagrant/Vagrantfile Vagrantfile
```
2. Start local cluster with the following command and provide sudo password when asked
```
vagrant up --no-parallel --provider=libvirt
```
You can destroy the machines with
```
vagrant destroy -f
```
and spawn them again with `vagrant up` command.
Local machines have following names/ips by default
|Type |Name |Public IP |Private IP |
|-------------------|-----------|-----------|-----------|
|Proxy Server |n1.fc.dev |10.0.1.101 |10.1.1.101 |
|Jingrow Server |f1.fc.dev |10.0.2.101 |10.1.2.101 |
|Database Server |m1.fc.dev |10.0.3.101 |10.1.3.101 |
|Database Server |m2.fc.dev |10.0.3.102 |10.1.3.102 |
### Accessing VMs
You can ssh into these machines using following commands
```bash
ssh root@n1.fc.dev
```
```bash
vagrant ssh n1
```