Starting up a new Ruby Sinatra project, I wanted to find a way to experiment with different configurations but also keep a map of what I have already tried so I can wipe it all and try again with no more drama. I chose Vagrant and Ansible for this, two tools I’ve successfully used in the past.
The image I am using is that of Debian 10 which is basic and sophisticated at the same time and will also allow me to deploy to my Raspberry Pi’s.
Both tools can easily be installed in macOS with homebrew
and pip
.
Vagrant
Installation notes
brew install vagrant
Homebrew takes care of the dependency installation also like Virtualbox and takes a while to complete.
Vagrantfile
The Vagrantfile is pretty basic for now:
Vagrant.configure("2") do |config|
HOST_DIR = "/Users/chrisveleris/projects/paqetz"
GUEST_DIR= "/home/vagrant/paqetz"
config.vm.box = "generic/debian10"
config.vm.network "public_network"
config.vm.network "private_network", ip: "192.168.55.10"
config.vm.synced_folder HOST_DIR, GUEST_DIR, type: "nfs"
end
Vagrant will try to find the vagrant box and If it’s not previously downloaded, it will try to download and spin up a new image - then ssh
to it.
Ansible
Installation notes
First install pip for python3. Then ansible:
sudo python3 -m pip install ansible
Create a configuration file in ~/.ansible.cfg
:
[defaults]
inventory = .ansible/hosts
Create ~/.ansible/hosts
:
[vagrant-box]
192.168.55.10 ansible_user=vagrant
Check out If everything is fine:
ansible vagrant-box -m ping
# or
ansible-playbook provision.yml -m ping
Start provisioning:
ansible-playbook -l vagrant-box provision.yml
What’s next? Setting up an ansible playbook for a new project.