|
|
- # 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
|