Vagrant

From Christoph's Personal Wiki
Revision as of 22:45, 21 September 2021 by Christoph (Talk | contribs) (Vagrant commands)

Jump to: navigation, search

Vagrant is an open-source software product for building and maintaining portable virtual software development environments; e.g., for VirtualBox, KVM, Hyper-V, Docker containers, VMware, and AWS. It tries to simplify the software configuration management of virtualization in order to increase development productivity. Vagrant is written in the Ruby language, but its ecosystem supports development in a few other languages.

Common Vagrant commands

  • autocomplete — manages autocomplete installation on host
  • box — manages boxes: installation, removal, etc.
  • cloud — manages everything related to Vagrant Cloud
  • destroy — stops and deletes all traces of the vagrant machine
  • global-status — outputs status Vagrant environments for this user
  • halt — stops the vagrant machine
  • help — shows the help for a subcommand
  • init — initializes a new Vagrant environment by creating a Vagrantfile
  • login
  • package — packages a running vagrant environment into a box
  • plugin — manages plugins: install, uninstall, update, etc.
  • port — displays information about guest port mappings
  • powershell — connects to machine via powershell remoting
  • provision — provisions the vagrant machine
  • push — deploys code in this environment to a configured destination
  • rdp — connects to machine via RDP
  • reload — restarts vagrant machine, loads new Vagrantfile configuration
  • resume — resume a suspended vagrant machine
  • snapshot — manages snapshots: saving, restoring, etc.
  • ssh — connects to machine via SSH
  • ssh-config — outputs OpenSSH valid configuration to connect to the machine
  • status — outputs status of the vagrant machine
  • suspend — suspends the machine
  • up — starts and provisions the vagrant environment
  • upload — upload to machine via communicator
  • validate — validates the Vagrantfile
  • version — prints current and latest Vagrant version
  • winrm — executes commands on a machine via WinRM
  • winrm-config — outputs WinRM configuration to connect to the machine
Full list of available vagrant commands
$ vagrant list-commands

Examples

Rancher

The following is an example of bringing up Rancher (pre-v2.x):

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

MASTER_MEMORY=1024
AGENT_MEMORY=1024

RANCH_MASTER_ADDRESS="172.19.8.100"
# Boxes are configured at 101, 102 and so on
RANCH_SUBNET="172.19.8"


RANCHER_SERVER_DOMAIN_NAME="ranch-svr.infracloud.io"
RANCHER_CLIENT_DEF="ranch-def.infracloud.io"
RANCHER_CLIENT_K8S="ranch-k8s.infracloud.io"


Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

    config.vm.define "ranch_server" do |rserver|
        rserver.vm.box = "ubuntu/xenial64"
        rserver.vm.network "private_network", ip: "#{RANCH_MASTER_ADDRESS}" 
        rserver.vm.hostname = "#{RANCHER_SERVER_DOMAIN_NAME}"
        rserver.vm.provider :virtualbox do |vba|
            vba.customize ["modifyvm", :id, "--memory", MASTER_MEMORY]
        end
        rserver.vm.provision "shell", inline: "wget -qO- https://get.docker.com/ | sh"          
        rserver.vm.provision "shell", inline: "sudo docker run -d --restart=always -p 8080:8080 rancher/server"     
    end

    config.vm.define "ranch_c_default" do |rclient|
        rclient.vm.box = "ubuntu/xenial64"
        rclient.vm.network "private_network", ip: "#{RANCH_SUBNET}.101"
        rclient.vm.hostname = "#{RANCHER_CLIENT_DEF}"
        rclient.vm.provider :virtualbox do |vba|
            vba.customize ["modifyvm", :id, "--memory", AGENT_MEMORY]
        end
        rclient.vm.provision "shell", inline: "wget -qO- https://get.docker.com/ | sh"      
        # K8S works with slightly older version of Docker hence downgrading
        #rclient.vm.provision "shell", inline: "sudo apt-get install -y --force-yes docker-engine=1.10.3-0~trusty"       
    end

    config.vm.define "ranch_c_k8s" do |rclient|
        rclient.vm.box = "ubuntu/xenial64"
        rclient.vm.network "private_network", ip: "#{RANCH_SUBNET}.102"
        rclient.vm.hostname = "#{RANCHER_CLIENT_K8S}"
        rclient.vm.provider :virtualbox do |vba|
            vba.customize ["modifyvm", :id, "--memory", AGENT_MEMORY]
        end
        rclient.vm.provision "shell", inline: "wget -qO- https://get.docker.com/ | sh"
        # K8S works with slightly older version of Docker hence downgrading
        #rclient.vm.provision "shell", inline: "sudo apt-get install -y --force-yes docker-engine=1.10.3-0~trusty"
    end

end
  • Start up resources:
$ vagrant up

External links