Provisioning a LAMP Stack with Vagrant

30 minutes
  • 3 Learning Objectives

About this Hands-on Lab

Vagrant comes built-in with access to a number of provisioners — or configuration management tools — that allow us to configure a newly deployed host by installing packages, setting configurations, and managing packages. In this hands-on lab, we leverage the shell and file provisioners to set up a LAMP stack across to servers and ensure the appropriate Apache website configuration is used.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create the Vagrantfile
  1. Move into the lamp project directory and generate a new Vagrantfile:

    cd lamp/
    vagrant init
  2. Open the Vagrantfile, and then update it to create two different machine method blocks, one for each guest:

    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
Set Up Provisioning
  1. Use the shell and file provisioners to run the needed scripts and add the desired configuration:

    Vagrant.configure("2") do |config|
      config.vm.box = "fgrehm/trusty64-lxc"
      config.vm.provider "lxc"
      config.vm.define "web" do |web|
        web.vm.provision "shell", path: "scripts/apache-install.sh"
        web.vm.provision "file", source: "configs/apache-example.site",
          destination: "/tmp/configs/apache-example.site"
        web.vm.provision "shell", path: "scripts/apache-sites.sh"
      end
      config.vm.define "db" do |db|
        db.vm.provision "shell", path: "scripts/mysql-install.sh"
      end
    end
  2. Save and exit the file.
Test the Vagrantfile
  1. Deploy the environment:

    vagrant up
  2. Ensure Apache was installed on the web guest:

    vagrant ssh web
    sudo service apache2 status
    exit
  3. Ensure MySQL was installed on the db guest:

    vagrant ssh db
    sudo service mysql status
    exit

Additional Resources

The front-end team wants to use Vagrant to deploy test versions of their environment that will deploy a sample version of the website from which they can work. As such, you have been tasked with creating the Vagrant setup for this circumstance. You have already written the needed scripts, and now you need to create a new Vagrant environment that deploys two guests using the LXC provider, both must use the fgrehm/trusty64-lxc box.

The first guest should be the web guest and should first run the apache-install.sh script in the scripts directory, found in the overall lamp project folder in the cloud_user home directory. Once Apache is installed, add the example website configuration in the configs to the web guest, with consideration to the limitations of the provider. Afterwards, run the apache-sites.sh script.

The second guest, db, needs to run the mysql-install.sh script.

Once finished, ensure both guests have been successfully configured.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?