start the vm
vagrant up [node1] [node2] ... [nodeN]
poweroff the vm
vagrant halt [node1] ... [nodeN]
reload config from Vagrantfile
vagrant reload
config.ssh.insert_key = false -> all vagrant machines will use same private keyconfig.vm.network "forwarded_port", guest: 22, host: 12914, id: 'ssh' -> change default ssh port for connecting to hostconfig.vm.network "private_network", ip: 10.0.99.10 -> define private network for hostconfig.ssh.forward_agent = true -> enable ssh forwardingdefine 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
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
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
# -*- 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