Manage multiple server & client computers with SaltStack (finnish)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

87 lines
2.1 KiB

# Create multiple virtual machines with Vagrant on Linux
# Author: Pekka Helenius (~Fincer), 2018
#######################################
# Basic Vagrantfile configuration
# Number of virtual machines
vbox_num = 2
# Virtual machine name prefix
vbox_prefix = "minion_"
# Allocated memory per virtual machine
# NOTE: Remember the RAM limits of your host machine!
vbox_mem = 512
# CPU's per virtual machine
vbox_cpu = 1
# Vagrant box template for virtual machines
#
# If you change this, remember to check for salt file locations &
# package manager commands used in this Vagrantfile
#
# For more templates, see: https://app.vagrantup.com/boxes/search
vbox_template = "bento/ubuntu-16.04"
#######################################
# Create a new array for virtual machines
vboxes = []
(1..vbox_num).each do |vbox|
vboxes.push("#{vbox_prefix}#{vbox}")
end
#######################################
VAGRANT_API_VERSION = 2
#######################################
# This is for salt_install provision below
initial_setup = "
# Start of $initial_setup variable
apt-get update && \
apt-get -y install salt-minion && \
systemctl enable salt-minion
if [ $? -ne 0 ]; then
exit 1
fi
# End of $initial_setup variable
"
#######################################
# Define Vagrant machine configuration here
Vagrant.configure(VAGRANT_API_VERSION) do |config|
config.vm.box = "#{vbox_template}"
config.vm.box_check_update = true
config.vm.synced_folder ".", "/vagrant", disabled: true
vboxes.each do |box|
config.vm.define "#{box}" do |node|
node.vm.provision "salt_install", run: "once", type: "shell" do |cmd_1|
cmd_1.inline = "#{initial_setup}"
cmd_1.privileged = "true"
end
node.vm.provision "salt_config", run: "once", type: "shell" do |cmd_2|
cmd_2.inline = "echo 'master: #{`hostname`}id: #{box}' | tee -a /etc/salt/minion && systemctl restart salt-minion"
cmd_2.privileged = "true"
end
node.vm.provider "virtualbox" do |v|
v.memory = "#{vbox_mem}"
v.cpus = "#{vbox_cpu}"
v.name = "#{box}"
end
end
end
end