From charlesreid1

Line 107: Line 107:


<pre>
<pre>
$ vagrant halt
vagrant halt
</pre>
</pre>



Revision as of 20:36, 9 December 2019

Vagrant is an open source tool for managing virtual machines.

Related: Ansible

What is it

Think of Vagrant like a command line interface for VirtualBox.

Vagrant has built-in support for Ansible.

Installing

Start by installing VirtualBox, then install Vagrant from http://www.vagrantup.com/

Mac OS X

On OS X, use Homebrew to install both VirtualBox and Vagrant:

# NOTE: These commands will ask you for your system password
brew cask install virtualbox
brew cask install vagrant
brew cask install vagrant-manager

Basic Startup Shutdown Procedure

Start Vagrant Machine

Create a directory for your vagrant virtual boxes:

mkdir myvagrant
cd myvagrant

From there you can run the vagrant init command to initialize the virtual machine using Vagrant.

NOTE: The first time you run the vagrant box with vagrant up, vagrant will download the virtual machine image, which could take a long time (10+ minutes) and will use a lot of bandwidth.

# for ubuntu 16.04:
vagrant init ubuntu/xenial64
vagrant up

# for ubuntu 18.04:
vagrant init ubuntu/bionic64
vagrant up

Connect to Vagrant Machine

Now you can ssh into the new virtual machine using

vagrant ssh

To see the SSH details, type:

vagrant ssh-config

NOTE: This command should be run from the host machine.

The example output can be used verbatim in an ssh config file. For example:

$ vagrant ssh-config

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/whoami/dev/ansiblebook/ch01/playbooks/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

If there are multiple virtual machines, each node should have same values except for SSH key.

Manually Connect to Vagrant Machine

using the key printed from the above command, you can SSH manually using that key:

$ ssh vagrant@127.0.0.1 -p 2222 -i $HOME/dev/ansible/dev/ansiblebook/ch01/playbooks/.vagrant/machines/default/virtualbox/private_key 

or, for a shorter version, export the ssh-config details from Vagrant to a file, then use the -F flag for the ssh command to specify that file as the SSH configuration file to use:

vagrant ssh-config > /tmp/vconf && ssh -F /tmp/vconf vagrant@127.0.0.1

Both of these SSH commands will log you in without prompting for a password.

Note that everything vagrant-related is stored in the .vagrant/ directory.

Stop Vagrant Machine

To stop the machine, run vagrant halt:

vagrant halt

Using Vagrant with Multiple Machines

See the guide on the Ansible/Full Stack Playbook page.

Resources

Mac OS X Setup Guide: https://sourabhbajaj.com/mac-setup/Vagrant/README.html

Flags