Local Infrastructure
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
source env/bin/activate
python3 apps/press/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 press
application)
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 press/backbone/packer
directory for more details.
Spawning Virtual Machines
There's no simple CLI for this at the moment.
- Create a Vagrant directory
mkdir scratch
cd scratch
ln -s ../apps/press/backbone/vagrant/Vagrantfile Vagrantfile
- 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 |
Frappe 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
ssh root@n1.fc.dev
vagrant ssh n1