Vagrant

Commands

start the vm

vagrant up [node1] [node2] ... [nodeN]

poweroff the vm

vagrant halt [node1] ... [nodeN]

reload config from Vagrantfile

vagrant reload

Vagrantfile

options:
config.ssh.insert_key = false -> all vagrant machines will use same private key
config.vm.network "forwarded_port", guest: 22, host: 12914, id: 'ssh' -> change default ssh port for connecting to host
config.vm.network "private_network", ip: 10.0.99.10 -> define private network for host
config.ssh.forward_agent = true -> enable ssh forwarding

define anisble as provisioner with 3 hosts which belongs to related groups


  config.vm.provision "ansible" do |ansible|
   ansible.playbook = "playbook.yml"
   ansible.limit = 'all'
   ansible.group = {
    "web" => ["vagran1"],
    "task" => ["vagrant2"],
    "redis" => ["vagrant3"]
   }
   end

puppet testing

Vagrant.configure("2") do |config|
  config.vm.define "master" do |master|
    master.vm.box = "bento/centos-7.6"
    master.vm.hostname = 'puppetmaster'

    master.vm.network :private_network, ip: "192.168.56.100", virtualbox__intnet: true

    master.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      v.customize ["modifyvm", :id, "--memory", 2048]
      v.customize ["modifyvm", :id, "--name", "puppetmaster"]
    end
  end

  config.vm.define "ubuntu" do |ubuntu|
    ubuntu.vm.box = "bento/ubuntu-18.04"
    ubuntu.vm.hostname = 'ubuntu'

    ubuntu.vm.network :private_network, ip: "192.168.56.101", virtualbox__intnet: true

    ubuntu.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      v.customize ["modifyvm", :id, "--memory", 1024]
      v.customize ["modifyvm", :id, "--name", "ubuntu"]
    end
  end

  config.vm.define "centos" do |centos|
    centos.vm.box = "bento/centos-7.6"
    centos.vm.hostname = 'centos'

    centos.vm.network :private_network, ip: "192.168.56.102", virtualbox__intnet: true

    centos.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
      v.customize ["modifyvm", :id, "--memory", 1024]
      v.customize ["modifyvm", :id, "--name", "centos"]
    end
  end
end

ipa testing

Vagrant.configure("2") do |config|
  config.vm.define "ipa" do |ipa|
    ipa.vm.box = "bento/centos-7.6"
    ipa.vm.hostname = 'ipa'
    ipa.vm.synced_folder ".", "/vagrant", disabled: true

    ipa.vm.network "public_network", bridge: "wlp3s0", ip: "192.168.1.97"

    ipa.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 1024]
      v.customize ["modifyvm", :id, "--name", "ipa"]
    end
  end

  config.vm.define "keycloak" do |keycloak|
    keycloak.vm.box = "bento/centos-7.6"
    keycloak.vm.hostname = 'keycloak'
    keycloak.vm.synced_folder ".", "/vagrant", disabled: true

    keycloak.vm.network "public_network", bridge: "wlp3s0", ip: "192.168.1.98"

    keycloak.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 1024]
      v.customize ["modifyvm", :id, "--name", "keycloak"]
    end
  end

  config.vm.define "jenkins" do |jenkins|
    jenkins.vm.box = "bento/centos-7.6"
    jenkins.vm.hostname = 'jenkins'
    jenkins.vm.synced_folder ".", "/vagrant", disabled: true

    jenkins.vm.network "public_network", bridge: "wlp3s0", ip: "192.168.1.99"

    jenkins.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 2048]
      v.customize ["modifyvm", :id, "--name", "jenkins"]
    end
  end

  config.vm.define "graylog" do |graylog|
    graylog.vm.box = "bento/centos-7.6"
    graylog.vm.hostname = 'graylog'
    graylog.vm.synced_folder ".", "/vagrant", disabled: true

    graylog.vm.network "public_network", bridge: "wlp3s0", ip: "192.168.1.96"

    graylog.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 2048]
      v.customize ["modifyvm", :id, "--name", "graylog"]
    end
  end
  config.vm.define "kmaster" do |kmaster|
    kmaster.vm.box = "bento/ubuntu-18.04"
    kmaster.vm.hostname = 'kmaster'
    kmaster.vm.synced_folder ".", "/vagrant", disabled: true

    kmaster.vm.network "public_network", bridge: "wlp3s0", ip: "192.168.1.95"

    kmaster.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 2048]
      v.customize ["modifyvm", :id, "--name", "kmaster"]
      v.customize ["modifyvm", :id, "--cpus", 2]
    end
  end
end

k3s on vagrant

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

server_ip = "192.168.33.10"

agents = { "agent1" => "192.168.33.11",
           "agent2" => "192.168.33.12",
           "agent3" => "192.168.33.13" }

# Extra parameters in INSTALL_K3S_EXEC variable because of
# K3s picking up the wrong interface when starting server and agent
# https://github.com/alexellis/k3sup/issues/306

server_script = <<-SHELL
    sudo -i
    apk add curl
    export INSTALL_K3S_EXEC="--bind-address=#{server_ip} --node-external-ip=#{server_ip} --flannel-iface=eth1"
    curl -sfL https://get.k3s.io | sh -
    echo "Sleeping for 5 seconds to wait for k3s to start"
    sleep 5
    cp /var/lib/rancher/k3s/server/token /vagrant_shared
    cp /etc/rancher/k3s/k3s.yaml /vagrant_shared
    SHELL

agent_script = <<-SHELL
    sudo -i
    apk add curl
    export K3S_TOKEN_FILE=/vagrant_shared/token
    export K3S_URL=https://#{server_ip}:6443
    export INSTALL_K3S_EXEC="--flannel-iface=eth1"
    curl -sfL https://get.k3s.io | sh -
    SHELL

Vagrant.configure("2") do |config|
  config.vm.box = "generic/alpine316"

  config.vm.define "server", primary: true do |server|
    server.vm.network "private_network", ip: server_ip
    server.vm.synced_folder "./shared", "/vagrant_shared"
    server.vm.hostname = "server"
    server.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = "2"
    end
    server.vm.provision "shell", inline: server_script
  end

  agents.each do |agent_name, agent_ip|
    config.vm.define agent_name do |agent|
      agent.vm.network "private_network", ip: agent_ip
      agent.vm.synced_folder "./shared", "/vagrant_shared"
      agent.vm.hostname = agent_name
      agent.vm.provider "virtualbox" do |vb|
        vb.memory = "1024"
        vb.cpus = "1"
      end
      agent.vm.provision "shell", inline: agent_script
    end
  end
end