By using a “Vagrantfile within a Vagrantfile” structure, we can create code that allows Vagrant to provision an environment comprised of multiple machines. This lets us create Vagrant environments that closely mimic production, separating out databases, services, applications, and more as needed. In this hands-on lab, we use the LXC provider to create two different machines and establish that the machines can communicate.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create Two Machines
Move into the
website
directory and initialize a Vagrantfile:cd website vagrant init
Update the Vagrantfile so two containers are created:
vim Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "fgrehm/trusty64-lxc" config.vm.provider "lxc" config.vm.define "web" do |web| end config.vm.define "db" do |db| end end
- Configure the Private Network
Still editing your Vagrantfile, add a private network to each guest:
Vagrant.configure("2") do |config| config.vm.box = "fgrehm/trusty64-lxc" config.vm.provider "lxc" config.vm.define "web" do |web| web.vm.network "private_network", ip: "192.168.2.110", lxc__bridge_name: "brdg" end config.vm.define "db" do |db| db.vm.network "private_network", ip: "192.168.2.111", lxc__bridge_name: "brdg" end end
Save and exit the file.
- Test the Environment
Deploy the environment:
vagrant up
Log in to the
web
guest:vagrant ssh web
View the IP of the guest:
ifconfig
ping
thedb
from theweb
guest:ping 192.168.2.111