Syncing Files with Vagrant

15 minutes
  • 3 Learning Objectives

About this Hands-on Lab

When using Vagrant, being able to sync applications, infrastructure, and other important files between your workstation and the resulting environment is paramount. It ensures that any changes we make to our working environment will persist after a `vagrant destroy` — after all, the Vagrant environment is ephemeral. In this hands-on lab, we will specifically explore syncing our host and guest directories using the `rsync` implementation by updating our `Vagrantfile`.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Update the Vagrantfile
  1. Use the config.vm.synced_folder option to set up file syncing based on the parameters from the instructions:

    Vagrant.configure("2") do |config|
     config.vm.box = "fgrehm/trusty64-lxc"
     config.vm.define "app" do |app|
       app.vm.provider :lxc do |lxc|
         lxc.container_name = 'app'
       end
     end
     config.vm.synced_folder "/home/cloud_user/wanderer/app", "/opt/wanderer", type: "rsync",
       id: "wanderer-app", rsync__auto: true
    end
  2. Save and exit.
Test the Vagrant Environment and Check the Sync
  1. Deploy the Vagrant environment:

    vagrant up
  2. We can SSH into the guest container to see that the sync worked:

    vagrant ssh
    ls /opt/wanderer/
    exit
Test the Auto-Syncing Process
  1. Since we are using rsync, auto-synced must be turned on:

    vagrant rsync-auto &
  2. Take note of the process ID output.

  3. Update the application; here changing Do This! to To-Do:

    vim app/views/index.ejs
    
      To-Do
  4. Save and exit; notice the output from Vagrant.

  5. Kill the auto-sync process:

    pkill PID_OUTPUT
  6. Stop the container:

    vagrant halt

Additional Resources

You are a DevOps Engineer tasked with building out basic Vagrant environments for some smaller, legacy projects that are going to be upgraded in the near future. Your current task, in particular, is to create a Vagrantfile for an internal to-do list application. While you have the first bits of the Vagrantfile written, you now need to ensure that the application stored in the application directory (/home/cloud_user/wanderer/app) will sync with /opt/wanderer on the guest. Your must use rsync, and the mount ID should be set to wanderer-app.

When finished, deploy the environment. Make sure to perform any additional tasks needed to ensure that rsync will auto-update the destination directory.

For detailed instructions on how to complete these tasks, expand each learning objective below, or click the Guide tab above the video player.

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?