2017-03-28 01:19:52 +00:00
|
|
|
---
|
|
|
|
layout: "intro"
|
|
|
|
page_title: "Vagrant vs. CLI Tools"
|
|
|
|
sidebar_current: "vs-cli-tools"
|
|
|
|
description: |-
|
|
|
|
Virtualization software like VirtualBox and VMware come with command line
|
|
|
|
utilities for managing the lifecycle of machines on their platform. Vagrant
|
|
|
|
actually uses many of these utilities internally. The difference between these
|
|
|
|
CLI tools and Vagrant is that Vagrant provides a declarative, reproducible,
|
|
|
|
idempotent workflow.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Vagrant vs. CLI Tools
|
|
|
|
|
|
|
|
Virtualization software like VirtualBox and VMware come with command line
|
2017-03-28 17:38:20 +00:00
|
|
|
utilities for managing the lifecycle of machines on their platform. Many
|
|
|
|
people make use of these utilities to write their own automation. Vagrant
|
|
|
|
actually uses many of these utilities internally.
|
|
|
|
|
|
|
|
The difference between these CLI tools and Vagrant is that Vagrant builds
|
|
|
|
on top of these utilities in a number of ways while still providing a
|
|
|
|
consistent workflow. Vagrant supports multiple synced folder types, multiple
|
|
|
|
provisioners to setup the machine, automatic SSH setup, creating HTTP tunnels
|
|
|
|
into your development environment, and more. All of these can be configured
|
|
|
|
using a single simple configuration file.
|
|
|
|
|
|
|
|
Vagrant still has a number of improvements over manual scripting even if you
|
|
|
|
ignore all the higher-level features Vagrant provides. The command-line
|
|
|
|
utilities provided by virtualization software often change each version
|
|
|
|
or have subtle bugs with workarounds. Vagrant automatically detects the
|
|
|
|
version, uses the correct flags, and can work around known issues. So if
|
|
|
|
you're using one version of VirtualBox and a co-worker is using a different
|
|
|
|
version, Vagrant will still work consistently.
|
|
|
|
|
|
|
|
For highly-specific workflows that don't change often, it can still be
|
|
|
|
beneficial to maintain custom scripts. Vagrant is targeted at building
|
|
|
|
development environments but some advanced users still use the CLI tools
|
|
|
|
underneath to do other manual things.
|